@namaste/kafka-schema-registry-cli
Version:
Utility app for registering schemas in Confluent Schema Registry
125 lines (93 loc) • 3.16 kB
Markdown
A small utility CLI that allows publishing schemas to the Confluent Kafka Schema Registry. Internally, it uses `@namaste/kafka-schema-registry-client` to communicate with the server.
Install the package globally on the machine that you want to register schemas from:
```bash
npm i -g @namaste/kafka-schema-registry-cli
```
or
```bash
yarn global add @namaste/kafka-schema-registry-cli
```
The CLI is accessible under the `register-schemas` name.
The help is accessible either by calling the program without parameters or environment variables set, or with help option:
```bash
register-schemas
```
or
```bash
register-schemas --help
```
This will print the following output:
```bash
Usage: register-schemas [options] <schemasDir>
Options:
-V, --version output the version number
-u, --url <registryUrl> Confluent schema registry URL
-k, --key <key> Confluent schema registry key
-s, --secret <secret> Confluent schema registry secret
-h, --help output usage information
```
`url`, `key` and `secret` are required.
In place of the required options, you may want to use environment variables:
- `SCHEMA_REGISTRY_URL` - to set the schema registry URL (`-u` option)
- `SCHEMA_REGISTRY_KEY` - to set the schema registry key (`-k` option)
- `SCHEMA_REGISTRY_SECRET` - to set the schema registry secret (`-s` option)
## Schemas
To successfuly run the program, you must supply the folder where the file(s) with the schemas you want to publish reside, or put those schemas in the `schemas` subfolder (the default). The schemas file must be a `json` file of the following shape:
```json
{
"[topic-name]": {
"key": "optional - avro key definition",
"value": "optional - avro value definition"
}
}
```
Example:
```json
{
"topic-example": {
"key": {
"type": "string",
"namespace": "io.namastetech.schema.example",
"name": "key",
"doc": "Unique key"
},
"value": {
"type": "record",
"namespace": "io.namastetech.schema.example",
"name": "exampleValue",
"doc": "A message passed to topic",
"fields": [
{
"name": "id",
"type": "string",
"doc": "An ID of the message"
},
{
"name": "message",
"type": "string",
"doc": "A string message"
}
]
}
}
}
```
```bash
register-schemas
```
The schemas will be read from `./schemas` folder, and schema registry url, key and secret will be read from environment variables.
```bash
register-schemas my-schemas
```
The schemas will be read from `./my-schemas` folder, and schema registry url, key and secret will be read from environment variables.
```bash
register-schemas -u https://myschemaregistryserver.io my-schemas
```
The schemas will be read from `./my-schemas` folder, the schema registry url used will be `https://myschemaregistryserver.io`, and schema registry key and secret will be read from environment variables.