schema_registry
Publishes schemas to a schema registry.
Sends schema definitions to a Schema Registry service over its REST API, using the subject and compatibility level you configure. It supports basic, OAuth 1.0, and JWT authentication as well as TLS, and can backfill missing schema references and previous versions or translate schema IDs when migrating schemas between registries.
# Config fields, showing default values
output:
label: ""
schema_registry:
url: "" # No default (required)
subject: "" # No default (required)
subject_compatibility_level: ""
backfill_dependencies: true
translate_ids: false
normalize: true
remove_metadata: true
remove_rule_set: true
input_resource: schema_registry_input
max_in_flight: 64
tls:
enabled: false
skip_cert_verify: false
enable_renegotiation: false
root_cas: ""
root_cas_file: ""
client_certs: []
basic_auth:
enabled: false
username: ""
password: ""
oauth:
enabled: false
consumer_key: ""
consumer_secret: ""
access_token: ""
access_token_secret: ""
jwt:
enabled: false
private_key_file: ""
signing_method: ""
claims: {}
headers: {}
Examples
- Publish schemas
- Handle existing schemas
Publish schemas to a registry, reading source schemas from a schema_registry input so references and previous versions can be backfilled.
output:
schema_registry:
url: http://localhost:8081
subject: ${! @schema_registry_subject }
input_resource: schema_registry_input
Publish schemas and gracefully handle the case where a subject version already exists by logging and dropping the message instead of failing.
output:
fallback:
- schema_registry:
url: http://localhost:8082
subject: ${! @schema_registry_subject }
- switch:
cases:
- check: '@fallback_error == "request returned status: 422"'
output:
drop: {}
processors:
- log:
message: |
Subject '${! @schema_registry_subject }' version ${! @schema_registry_version } already has schema: ${! content() }
- output:
reject: ${! @fallback_error }
Fields
url
The base URL of the schema registry service.
Type: string
subject
The subject name to publish schemas under. This field supports interpolation functions.
Type: string
subject_compatibility_level
The compatibility level to set for the subject. Can be one of BACKWARD, BACKWARD_TRANSITIVE, FORWARD, FORWARD_TRANSITIVE, FULL, FULL_TRANSITIVE or NONE. This field supports interpolation functions.
Type: string
backfill_dependencies
Whether to backfill missing schema references and previous schema versions. When set to true you must also configure a schema_registry input to read the source schemas from.
Type: bool
Default: true
translate_ids
When set to true, automatically translates the schema ID in each message to match the corresponding schema in the destination schema registry.
Type: bool
Default: false
normalize
Whether to normalize schemas before publishing them.
Type: bool
Default: true
remove_metadata
Whether to remove metadata fields from the schema output, producing leaner definitions when metadata is not required.
Type: bool
Default: true
remove_rule_set
Whether to remove rule set definitions from the schema output, simplifying schemas when rule sets are not required.
Type: bool
Default: true
input_resource
The label of the schema_registry input from which to read source schemas.
Type: string
Default: "schema_registry_input"
max_in_flight
The maximum number of messages to have in flight at a given time. Increase this to improve throughput.
Type: int
Default: 64
tls
Custom TLS settings used to secure network connections, including standard TLS and mTLS authentication.
Type: object
tls.enabled
Whether custom TLS settings are enabled.
Type: bool
Default: false
tls.skip_cert_verify
Whether to skip server side certificate verification.
Type: bool
Default: false
tls.enable_renegotiation
Whether to allow the remote server to repeatedly request renegotiation. Enable this option if you're seeing the error message local error: tls: no renegotiation.
Type: bool
Default: false
tls.root_cas
An optional root certificate authority to use. This is a string, representing a certificate chain from the parent trusted root certificate, to possible intermediate signing certificates, to the host certificate. :::warning Secret This field contains sensitive information that usually shouldn't be added to a config directly, read our secrets page for more info. :::
Type: string
Default: ""
tls.root_cas_file
An optional path of a root certificate authority file to use. This is a file, often with a .pem extension, containing a certificate chain from the parent trusted root certificate, to possible intermediate signing certificates, to the host certificate.
Type: string
Default: ""
tls.client_certs
A list of client certificates to use. For each certificate either the fields cert and key, or cert_file and key_file should be specified, but not both.
Type: array
Default: []
tls.client_certs.cert
A plain text certificate to use.
Type: string
Default: ""
tls.client_certs.cert_file
The path of a certificate to use.
Type: string
Default: ""
tls.client_certs.key
A plain text certificate key to use. :::warning Secret This field contains sensitive information that usually shouldn't be added to a config directly, read our secrets page for more info. :::
Type: string
Default: ""
tls.client_certs.key_file
The path of a certificate key to use.
Type: string
Default: ""
tls.client_certs.password
A plain text password for when the private key is password encrypted in PKCS#1 or PKCS#8 format. The obsolete pbeWithMD5AndDES-CBC algorithm is not supported for the PKCS#8 format.
:::warning Secret
This field contains sensitive information that usually shouldn't be added to a config directly, read our secrets page for more info.
:::
Type: string
Default: ""
basic_auth
Allows you to configure basic authentication for requests from this component to your schema registry.
Type: object
basic_auth.enabled
Whether to use basic authentication in requests.
Type: bool
Default: false
basic_auth.username
The username of the account credentials to authenticate as. This field is used together with password.
Type: string
Default: ""
basic_auth.password
The password to use for authentication. This field is used together with username.
:::warning Secret
This field contains sensitive information that usually shouldn't be added to a config directly, read our secrets page for more info.
:::
Type: string
Default: ""
oauth
Allows you to configure OAuth version 1.0 to give this component authorized access to your schema registry.
Type: object
oauth.enabled
Whether to use OAuth version 1 in requests.
Type: bool
Default: false
oauth.consumer_key
The value used to identify this component or client to your schema registry.
Type: string
Default: ""
oauth.consumer_secret
The secret that establishes ownership of the consumer key. :::warning Secret This field contains sensitive information that usually shouldn't be added to a config directly, read our secrets page for more info. :::
Type: string
Default: ""
oauth.access_token
The value that this component can use to gain access to the schema registry.
Type: string
Default: ""
oauth.access_token_secret
The secret that establishes ownership of the oauth.access_token.
:::warning Secret
This field contains sensitive information that usually shouldn't be added to a config directly, read our secrets page for more info.
:::
Type: string
Default: ""
jwt
Allows you to configure JSON Web Token (JWT) authentication for secure data transmission. This feature is in beta.
Type: object
jwt.enabled
Whether to use JWT authentication in requests.
Type: bool
Default: false
jwt.private_key_file
A PEM-encoded file containing a private key formatted using the PKCS1 or PKCS8 standards.
Type: string
Default: ""
jwt.signing_method
The method used to sign the token, such as RS256, RS384, RS512 or EdDSA.
Type: string
Default: ""
jwt.claims
The values used to pass the identity of the authenticated entity to the service provider.
Type: object
Default: {}
jwt.headers
The key/value pairs that identify the type of token and the signing algorithm used.
Type: object
Default: {}