5.0
Schema Registry
Basic information
Working with records serialized in AVRO format requires schemas. The simplest way to provide schemas is a Schema Registry.. Lenses supports Confluent’s Schema Registry and any other registry that implements its API.
Once a Schema Registry connection is defined, Lenses displays all Schema Registry nodes and
their statuses (with metrics, if configured so) in Workspace -> Services
screen.
Apart from the Connection, there are following static config (lenses.conf
) entries that might be used to enable schema deletions.
# Enable schema deletion in the Lenses UI
# default : false
lenses.schema.registry.delete = true
# When a topic is deleted,
# automatically delete also its associated Schema Registry subjects
# default: false
lenses.schema.registry.cascade.delete = true
Connection details
Like other core services, Schema Registry is managed via Connections. See more about managing connections here .
Multiple connections allowed: NO
Deletion allowed: YES
When managing connections other than with GUI, such information are relevant for Schema Registry connection:
Template name: SchemaRegistry
Constant connection name: schema-registry
Examples
The easiest way to manage Connections is via Lenses GUI under their respective pages, however it is also possible to do it directly via API, Helm or Lenses CLI. In such case, some connection type-specific values have to be used. Here are few examples of such configuration in YAML format.
- Find out more about managing Schema Registry Connection via API
- Find out more about managing Connections via Lenses CLI provision
- Find out more about installing Lenses via Helm
Simple configuration, with JMX metrics
The URLs (nodes) should always have a scheme defined (http:// or https://).
schema-registry:
tags: [ "tag1" ]
templateName: SchemaRegistry
configurationObject:
schemaRegistryUrls:
- http://my-sr.host1:8081
- http://my-sr.host2:8081
# all metrics properties are optional
metricsPort: 9581
metricsType: JMX
metricsSsl: false
Misc metrics configurations
Find more about multiple options of configuring services’ metrics (like secured JMX, Jolokia, etc) under Services Metrics
Basic authentication
For Basic Authentication, define username
and password
properties.
schema-registry:
templateName: SchemaRegistry
tags: [ ]
configurationObject:
schemaRegistryUrls:
- http://my-sr.host1:8081
- http://my-sr.host2:8081
username: my-username
password: my-password
TLS with custom truststore
A custom truststore is needed when the Schema Registry is served over TLS (encryption-in-transit) and the Registry’s certificate is not signed by a trusted CA.
schema-registry:
templateName: SchemaRegistry
tags: [ ]
configurationObject:
schemaRegistryUrls:
- https://my-sr.host1:8081
- https://my-sr.host2:8081
sslTruststore:
fileRef:
filePath: /path/to/my/truststore.jks
sslTruststorePassword: myPassword
TLS with client authentication
A custom truststore might be necessary too (see above).
schema-registry:
name: schema-registry
templateName: SchemaRegistry
tags: [ ]
configurationObject:
schemaRegistryUrls:
- https://my-sr.host1:8081
- https://my-sr.host2:8081
sslKeystore:
fileRef:
filePath: /path/to/my/keystore.jks
sslKeyPassword: keyPassword
sslKeystorePassword: keystorePassword
TLS with Basic Authentication
A custom truststore might be necessary too (see above).
schema-registry:
name: schema-registry
templateName: SchemaRegistry
tags: [ ]
configurationObject:
schemaRegistryUrls:
- https://my-sr.host1:8081
- https://my-sr.host2:8081
username: test
password: test
Advanced properties
In very rare cases some custom properties related to Schema Registry might be necessary.
They can be passed as additionalProperties
, as shown in below example.
schema-registry:
tags: [ "tag1" ]
templateName: SchemaRegistry
configurationObject:
schemaRegistryUrls:
- http://my-sr.host1:8081
- http://my-sr.host2:8081
additionalProperties:
specific.avro.reader: "false"
avro.reflection.allow.null: "false"
avro.remove.java.properties: "false"
avro.use.logical.type.converters: "false"