xk6-kafka: ERRO[0002] GoError: Failed to decode JKS file: /test/833/truststore.jks, OriginalError: %!w(*errors.errorString=&{got invalid magic}) running at github.com/grafana/xk6-kafka.(*Kafka).loadJKSFunction-fm (native)

@mostafa I am getting an error while running the xk6 script. Below is the script and the error. Please help here. Thanks

import {
    LoadJKS,
    TLS_1_2
} from "k6/x/kafka";
import {
    Writer,
    Reader,
    Connection,
    SchemaRegistry,
    SCHEMA_TYPE_JSON,
    SASL_SCRAM_SHA512
} from "k6/x/kafka";
import VaultManager from './VaultManager.js';

export let options = {
    stages: [{
            target: 1,
            duration: '30s'
        }
    ],
};

export const vault = new VaultManager(' Platform', 'DEV');

let offset = -1;
// partition and groupId are mutually exclusive
let partition = 0;
let numPartitions = 1;
let replicationFactor = 1;

let username = "";
let password = "";
let passwordToAccessTrustore = "";
let saslConfig = {};

let writer;
let reader;
let connection;


export function setup() {
    console.log('Inside setup function ');
    username = vault.getSecretFromVault("USERNAME");
    password = vault.getSecretFromVault("PASSWORD");
    passwordToAccessTrustore = vault.getSecretFromVault("PASSWORD-JKS");
}

export function initializeCredentials() {
    console.log('Inside initializeCredentials function');
    if (!username || !password || !passwordToAccessTrustore) {
        username = vault.getSecretFromVault("USERNAME");
        password = vault.getSecretFromVault("PASSWORD");
        passwordToAccessTrustore = vault.getSecretFromVault("PASSWORD-JKS");

        saslConfig = {
            username: username,
            password: password,
            algorithm: SASL_SCRAM_SHA512
        };
        console.log('saslConfig = ' + saslConfig);
    }
}

const trustStoreUrl = vault.getIPaceEnvConfig().getValueFromEnvFor('ROOTDIR')+'/truststore.jks';
console.log('trustStoreUrl ==' + trustStoreUrl)

export default function(data) {
    initializeCredentials();

    const jks = LoadJKS({
        path: trustStoreUrl,
        password: passwordToAccessTrustore,
        clientCertAlias: "kafka",
        clientKeyAlias: "kafka",
        clientKeyPassword: passwordToAccessTrustore,
        serverCaAlias: "server",
    });

    const tlsConfig = {
        enableTls: true,
        insecureSkipTlsVerify: true,
        minVersion: TLS_1_2,
        clientCertPem: jks["clientCertsPem"][0], // The first certificate in the chain
        clientKeyPem: jks["clientKeyPem"],
        serverCaPem: jks["serverCaPem"],
    };

    const brokers = ["digital.net:443"];
    const topic = "internal.any.v1";

    const schemaRegistry = new SchemaRegistry();

    writer = new Writer({
        brokers: brokers,
        topic: topic,
        sasl: saslConfig,
        partition: partition,
        tls: tlsConfig,
    });

    reader = new Reader({
        brokers: brokers,
        topic: topic,
        partition: partition,
        offset: offset,
        sasl: saslConfig,
        tls: tlsConfig,
    });

    connection = new Connection({
        address: brokers[0],
        sasl: saslConfig,
        tls: tlsConfig,
    });
    let messages = [{
        key: schemaRegistry.serialize({
            data: {
                correlationId: "test-id-abc-" + 1,
            },
            schemaType: SCHEMA_TYPE_JSON,
        }),
        value: schemaRegistry.serialize({
            data: {
                templateId: 5,
                testId: 4,
                status: "deactive",
                message: "Hi, I am testing",
            },
            schemaType: SCHEMA_TYPE_JSON,
        }),
    }];

    writer.produce({
        messages: messages,
    });

    let mesg = reader.consume({
        limit: 10,
    });

    console.log("correlation=====>>>", schemaRegistry.deserialize({
        data: mesg[0].key,
        schemaType: SCHEMA_TYPE_JSON,
    }).correlationId);

    console.log("schema------>>>>>", schemaRegistry.deserialize({
        data: messages[0].value,
        schemaType: SCHEMA_TYPE_JSON,
    }));
}

export function teardown() {
    if (writer) writer.close();
    if (reader) reader.close();
    if (connection) connection.close();
}

error `ERRO[0002] GoError: Failed to decode JKS file: /test/833/truststore.jks, OriginalError: %!w(*errors.errorString=&{got invalid magic})

running at github.com/grafana/xk6-kafka.(*Kafka).loadJKSFunction-fm (native)`

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 15 (8 by maintainers)

Most upvoted comments

@mostafa i am using the same ./k6 version in dev, and have the docker image also the way it is mentioned in this doc. still i get this error

@mostafa i will use the same version for xk6 and k6 that i am using in local. will update once i have done this, if issue persists