Confluent Schema Registry 提供了一个 RESTful 接口,在 Kafka 之上添加了元数据服务层。它扩展了 Kafka,支持 Apache Avro、JSON 和 Protobuf 模式。
Confluent Schema Registry 概述
商标说明:本软件列表由 Bitnami 打包。产品中提及的各个商标分别归各自公司所有,使用这些商标并不意味着任何关联或认可。
consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/schema-registry
如需在生产环境中使用 Confluent Schema Registry,可尝试 VMware Tanzu Application Catalog,这是 Bitnami 目录的商业版本。
自 2025 年 8 月 28 日起,Bitnami 将改进其公共目录,在新的 Bitnami Secure Images 计划下提供精选的强化、安全聚焦的镜像。作为此过渡的一部分:
这些变化旨在通过推广软件供应链完整性和最新部署的最佳实践,提高所有 Bitnami 用户的安全态势。有关更多详细信息,请访问 Bitnami Secure Images 公告。
要安装版本名称为 my-release 的 chart:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/schema-registry
注意:您需要将占位符
REGISTRY_NAME和REPOSITORY_NAME替换为 Helm chart registry 和仓库的引用。例如,对于 Bitnami,您需要使用REGISTRY_NAME=registry-1.docker.io和REPOSITORY_NAME=bitnamicharts。
提示:使用
helm list命令列出所有发布版本。
Bitnami charts 允许为 chart 部署中的所有容器设置资源请求和限制。这些设置位于 resources 值中(参见参数表)。为生产工作负载设置请求至关重要,这些请求应根据您的具体用例进行调整。
为简化此过程,chart 包含 resourcesPreset 值,它会根据不同的预设自动设置 resources 部分。请在 bitnami/common chart 中查看这些预设。但是,在生产工作负载中不建议使用 resourcesPreset,因为它可能无法完全适应您的特定需求。有关容器资源管理的更多信息,请参阅 *** Kubernetes 文档。
强烈建议在生产环境中使用不可变标签。这可确保即使相同标签使用不同镜像更新,您的部署也不会自动更改。
如果主容器有新版本、重大更改或严重漏洞,Bitnami 将发布更新其容器的新 chart。
您可以为在 Kafka 中配置的每个监听器配置不同的认证协议。例如,您可以对客户端通信使用 sasl_tls 认证,而对 broker 间通信使用 tls。下表显示了可用协议及其提供的安全性:
| 方法 | 认证方式 | 通过 TLS 加密 |
|---|---|---|
| plaintext | 无 | 否 |
| tls | 无 | 是 |
| mtls | 是(双向认证) | 是 |
| sasl | 是(通过 SASL) | 否 |
| sasl_tls | 是(通过 SASL) | 是 |
通过分别将 auth.clientProtocol 和 auth.interBrokerProtocol 参数设置为所需协议,配置客户端和 broker 间通信的认证协议。
如果在任何监听器上启用了 SASL 认证,您可以使用以下参数设置 SASL 凭据:
kafka.auth.sasl.jaas.clientUsers/kafka.auth.sasl.jaas.clientPasswords:为客户端通信启用 SASL 认证时使用。kafka.auth.sasl.jaas.interBrokerUser/kafka.auth.sasl.jaas.interBrokerPassword:为 broker 间通信启用 SASL 认证时使用。kafka.auth.jaas.zookeeperUser/kafka.auth.jaas.zookeeperPassword:如果 Zookeeper chart 已启用 SASL 认证。例如,您可以使用以下参数部署 chart:
consolekafka.auth.clientProtocol=sasl kafka.auth.jaas.clientUsers[0]=clientUser kafka.auth.jaas.clientPasswords[0]=clientPassword
为了配置 TLS 认证/加密,您可以为 Kafka 集群中的每个 broker 创建一个包含 Java Key Stores (JKS) 文件的 secret:信任库 (kafka.truststore.jks) 和密钥库 (kafka.keystore.jks)。然后,您需要在部署 chart 时使用 kafka.auth.tls.existingSecrets 参数传递 secret 名称。
注意:如果 JKS 文件受密码保护(推荐),您需要提供密码才能访问密钥库。为此,请使用
kafka.auth.tls.password参数提供您的密码。
例如,要在具有 2 个 Kafka broker 和 1 个 Schema Registry 副本的集群上配置 TLS 认证,请使用以下命令创建 secrets:
consolekubectl create secret generic schema-registry-jks --from-file=/schema-registry.truststore.jks --from-file=./schema-registry-0.keystore.jks kubectl create secret generic kafka-jks-0 --from-file=kafka.truststore.jks=./kafka.truststore.jks --from-file=kafka.keystore.jks=./kafka-0.keystore.jks kubectl create secret generic kafka-jks-1 --from-file=kafka.truststore.jks=./kafka.truststore.jks --from-file=kafka.keystore.jks=./kafka-1.keystore.jks
注意:上述命令假设您已经创建了信任库和密钥库文件。此 脚本 可以帮助您生成 JKS 文件。
然后,使用以下参数部署 chart:
consoleauth.kafka.jksSecret=schema-registry-jks auth.kafka.keystorePassword=some-password auth.kafka.truststorePassword=some-password kafka.replicaCount=2 kafka.auth.clientProtocol=tls kafka.auth.tls.existingSecrets[0]=kafka-jks-0 kafka.auth.tls.existingSecrets[1]=kafka-jks-1 kafka.auth.tls.password=jksPassword
如果您想忽略 Kafka 证书上的主机名验证,请将参数 auth.kafka.tls.endpointIdentificationAlgorithm 设置为空字符串 ""。在这种情况下,您可以为每个 Kafka broker 和 Schema Registry 副本重用相同的信任库和密钥库。例如,要在具有 2 个 Kafka broker 和 1 个 Schema Registry 副本的集群上配置 TLS 认证,请使用以下命令创建 secrets:
consolekubectl create secret generic schema-registry-jks --from-file=schema-registry.truststore.jks=common.truststore.jks --from-file=schema-registry-0.keystore.jks=common.keystore.jks kubectl create secret generic kafka-jks --from-file=kafka.truststore.jks=common.truststore.jks --from-file=kafka.keystore.jks=common.keystore.jks
如果您想向 Schema Registry 添加额外的环境变量,可以使用 extraEnvs 参数。例如:
yamlextraEnvVars: - name: FOO value: BAR
此 helm chart 支持使用 Schema Registry 的自定义配置。
您可以使用 configuration 参数指定 Schema Registry 的配置。此外,您还可以设置包含配置文件的外部 configmap。这可以通过设置 existingConfigmap 参数来完成。
如果您需要在与 Schema Registry 相同的 pod 中运行额外的容器(例如,额外的指标或日志导出器),您可以通过 sidecars 配置参数来实现。只需根据 Kubernetes 容器规范定义您的容器。
yamlsidecars: - name: your-image-name image: your-image imagePullPolicy: Always ports: - name: portname containerPort: 1234
同样,您可以使用 initContainers 参数添加额外的初始化容器。
yamlinitContainers: - name: your-image-name image: your-image imagePullPolicy: Always ports: - name: portname containerPort: 1234
有时您可能希望 Schema Registry 连接到外部 Kafka 集群,而不是安装一个作为依赖项。为此,chart 允许您在 externalKafka 参数 下指定现有 Kafka 集群的凭据。您还应该使用 kafka.enabled 选项禁用 Kafka 安装。
例如,使用以下参数将 Schema Registry 与使用 SASL 认证的现有 Kafka 安装连接:
consolekafka.enabled=false externalKafka.brokers=SASL_PLAINTEXT://kafka-0.kafka-headless.default.svc.cluster.local:9092 externalKafka.auth.protocol=sasl externalKafka.auth.jaas.user=myuser externalKafka.auth.jaas.password=mypassword
或者,您可以使用包含密钥 "client-passwords" 的现有 secret:
consolekafka.enabled=false externalKafka.brokers=SASL_PLAINTEXT://kafka-0.kafka-headless.default.svc.cluster.local:9092 externalKafka.auth.protocol=sasl externalKafka.auth.jaas.user=myuser externalKafka.auth.jaas.existingSecret=my-secret
此 chart 提供对 Ingress 资源的支持。如果您的集群上安装了 ingress 控制器,例如 nginx-ingress-controller 或 contour,您可以利用 ingress 控制器来提供您的应用程序。要启用 Ingress 集成,请将 ingress.enabled 设置为 true。ingress.hostname 属性可用于设置主机名。
很可能您只希望有一个主机名映射到此 Schema Registry 安装。如果是这种情况,属性 ingress.hostname 将设置它。但是,可以有多个主机。为方便起见,可以将 ingress.extraHosts 对象指定为数组。您还可以使用 ingress.extraTLS 为额外主机添加 TLS 配置。
对于在 ingress.extraHosts 中指示的每个主机,请指定 name、path 以及您可能希望 ingress 控制器知道的任何 annotations。
有关注释,请参阅 本文档。并非所有注释都受所有 ingress 控制器支持,但本文档很好地指出了哪些注释受许多流行的 ingress 控制器支持。
| 名称 | 描述 | 值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局 Docker 仓库密钥名称数组 | [] |
global.defaultStorageClass | 持久卷的全局默认 StorageClass | "" |
global.security.allowInsecureImages | 允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 调整部署的 securityContext 部分,使其与 Openshift restricted-v2 SCC 兼容:删除 runAsUser、runAsGroup 和 fsGroup,让平台使用其允许的默认 ID。可能的值:auto(如果检测到运行的集群是 Openshift,则应用),force(始终执行适配),disabled(不执行适配) | auto |
kubeVersion | 覆盖 Kubernetes 版本 | "" |
| 名称 | 描述 | 值 |
|---|---|---|
nameOverride | 用于部分覆盖 common.names.fullname 模板的字符串(将前置发布名称) | "" |
fullnameOverride | 用于完全覆盖 common.names.fullname 模板的字符串 | "" |
namespaceOverride | 用于完全覆盖 common.names.namespace 的字符串 | "" |
commonLabels | 要添加到所有部署对象的标签 | {} |
commonAnnotations | 要添加到所有部署对象的注释 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 要与发布一起部署的额外对象数组 | [] |
usePasswordFiles | 将凭据挂载为文件而不是使用环境变量 | true |
diagnosticMode.enabled | 启用诊断模式(所有探针将被禁用,命令将被覆盖) | false |
diagnosticMode.command | 覆盖部署中所有容器的命令 | ["sleep"] |
diagnosticMode.args | 覆盖部署中所有容器的参数 | ["infinity"] |
| 名称 | 描述 | 值 |
|---|---|---|
image.registry | Schema Registry 镜像仓库 | REGISTRY_NAME |
image.repository | Schema Registry 镜像仓库路径 | REPOSITORY_NAME/schema-registry |
image.digest | Schema Registry 镜像摘要,格式为 sha256:aa.... 注意:设置此参数将覆盖标签 | "" |
image.pullPolicy | Schema Registry 镜像拉取策略 | IfNotPresent |
image.pullSecrets | Schema Registry 镜像拉取密钥 | [] |
image.debug | 启用镜像调试模式 | false |
command | 覆盖默认容器命令(使用自定义镜像时有用) | [] |
args | 覆盖默认容器参数(使用自定义镜像时有用) | [] |
automountServiceAccountToken | 在 pod 中挂载服务账户令牌 | false |
hostAliases | Schema Registry pods 主机别名 | [] |
podLabels | Schema Registry pods 的额外标签 | {} |
configuration | 指定 schema-registry.properties 的内容。未指定时根据其他参数自动生成 | {} |
existingConfigmap | 包含 Schema Registry 配置的现有 ConfigMap 名称 | "" |
log4j | Schema Registry Log4J 配置(可选) | {} |
existingLog4jConfigMap | 包含自定义 log |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速