6.3. Service Registry 新功能

Service Registry 2.4 包括以下新功能:

Service Registry 核心新功能

工件引用改进
  • 工件参考完整性规则 :您现在可以应用新的特定于工件的规则和全局规则,以便在创建或更新工件时强制实施工件引用的完整性。对于所有工件类型,该规则会检测重复的工件引用,并防止引用不存在的工件。对于工件类型的子集(Apache Avro、Google Protobuf、OpenAPI 和 AsyncAPI),该规则可确保所有工件引用都已映射。
  • Maven 插件中的自动工件引用检测 :对于工件类型的子集(Apache Avro、Google Protobuf 和 JSON Schema),在创建或更新工件时,Maven 插件现在可以自动识别并配置给定工件的所有工件引用。
  • Web 控制台中的工件引用 的视觉化:您可以在新的 References 选项卡中查看工件版本的入站和出站引用。REST API 现在支持检索入站和出站引用。在以前的版本中,REST API 只检索出站引用,Web 控制台不会显示引用。
  • 工件引用现在被视为内容 :此版本现在在计算内容哈希和 ID 时考虑工件引用,并在检查工件版本的兼容性时考虑工件引用。如果您上传具有不同引用的同一模式内容,您可以创建一个新的工件版本。
客户端 SDK 生成(OpenAPI)
此发行版本添加了一个新的 Web 控制台功能,以便用户从 OpenAPI 工件生成客户端 SDK。此功能使用 Microsoft 的 Kiota 来生成 SDK。该功能仅在浏览器中运行,无法使用 API 自动执行。如需更多信息,请参阅 https://github.com/microsoft/kiota
工件版本删除
此发行版本在 web 控制台中添加了新的 REST API 操作和新的 Delete 工件版本 设置,以便您通过使用 REST API 删除工件版本。在以前的版本中,工件版本不可变;您可以弃用或禁用它们,但不能删除它们。但是,有时需要删除工件版本,尽管语义有意义。例如,出于规范或策略的原因,您可能需要删除工件版本。
Core Registry REST API 的改进
  • 版本注释 API :您现在可以使用 REST API 向工件版本添加注释。Web 控制台中还不能使用管理注释。
  • export API 支持 Accept 标头中的 application/json :您现在可以在调用 /admin/export API 端点中发送 application/json 作为 Accept 标头的值。在以前的版本中,返回 application/json 格式的响应的唯一方法是使用 forBrowser 查询参数。现在,您可以使用查询参数或 Accept 标头。
  • 组管理 :您现在可以使用 REST API 直接管理工件组,而不是隐式作为工件创建的一部分。
Confluent 兼容性 REST API 的改进
  • 更新了对 Confluent 兼容性 API 的支持:添加了对 Confluent Schema Registry API 的版本 7 的支持。Service Registry 现在支持不同端点上的 v6 和 v7。
  • 可自定义的最多主题数 :现在,您可以使用 registry.ccompat.max-subjects 动态配置属性来自定义 ccompat API 返回的最大主题数量。
其他更改
  • serializer/deserializer 工件解析和内容哈希的解析 :SerDe 类现在可以使用 schema 的内容哈希解析工件协调。
  • Maven 插件选项为 minify Avro: 当使用 Maven 插件注册 Avro 模式时,您现在可以在注册前减去内容。
community-only :自定义工件类型

用户可以根据自己的自定义工件类型扩展 Service Registry,并删除对现有类型的支持。此功能仅适用于 Service Registry 的社区版本,且不被支持。

注意

为了提供此功能,REST API 中的 ArtifactTypeenum 改为一个简单的 字符串。如果您使用 REST API 客户端进行自定义集成,则可能需要在升级到较新的客户端后编辑代码。

Service Registry Operator 的新功能

对 HTTPS 的 Operator 支持
添加了对在 OpenShift 集群中配置 HTTPS 连接的支持。您可以分别创建包含证书和私钥的 Secret,名为 tls.crttls.key,并通过在 ApicurioRegistry 自定义资源定义(CRD)文件中设置 spec.configuration.security.https.secretName 字段来引用 Secret。然后,Service Registry Operator 可以在 Service Registry Service 资源上配置 HTTPS 端口。如果启用了 HTTPS,您可以通过将 spec.security.https.disableHttp 设置为 true 来禁用 HTTP 连接。
支持手动管理的 OpenShift 资源

现在,您可以禁用某些资源类型,以确保 Service Registry Operator 不会创建和管理这些资源,以便您可以手动配置它们。使用 Service Registry Operator 目前不支持的功能,手动配置为您提供了更大的灵活性。如果您禁用资源类型,则其现有实例将被删除。如果启用资源类型,Service Registry Operator 会尝试使用 app 标签(如 app=example-apicurioregistry)查找资源,并开始管理它。否则,Service Registry Operator 会创建一个新实例。您可以以这种方式禁用以下资源类型:

  • 入口
  • NetworkPolicy
  • PodDisruptionBudget
改进了日志级别配置
现在,您可以使用 ApicurioRegistry CRD 文件中的 spec.configuration.registryLogLevel 字段,为 Service Registry 和 Service Registry Operator 设置日志级别。这个新字段设置 Apicurio 应用程序组件的日志级别(不包括非Apicurio 组件和库),这与 spec.configuration.logLevel 字段(适用于非Apicurio 组件和库)不同。现在,您可以通过在 Operator Deployment 资源中设置 LOG_LEVEL 环境变量,为 Service Registry Operator 设置日志级别。有效的 LOG_LEVEL 值是 debuginfowarnerror
CORS 允许的源

服务器可以使用 Cross-Origin Resource Sharing (CORS)机制来控制响应是否与请求的来源共享。Service Registry Operator 现在根据 ApicurioRegistry CRD 文件中的 spec.deployment.host 字段的值设置 CORS_ALLOWED_ORIGINS 环境变量。此环境变量控制 Service Registry 发送的 Access-Control-Allow-Origin 标头。

如果使用自定义 Ingress (例如,配置 HTTPS),您可以通过将 spec.deployment.managedResources.disable Ingress 字段设置为 true 来禁用 Operator 管理的 Ingress,仍然将 spec.deployment.host 字段设置为适当的值。如果要配置完全自定义的 CORS 策略,您可以将 spec.deployment.host 字段设置为空,应用更改,然后使用 spec.deployment.env 字段手动设置 CORS_ALLOWED_ORIGINS 环境变量。

使用 pod 模板配置 Service Registry 部署

ApicurioRegistry CRD 文件现在包含 spec.deployment.podTemplateSpecPreview 字段作为技术预览功能。spec.deployment.podTemplateSpecPreview 字段的结构与 OpenShift Deployment 资源( PodTemplateSpec struct)中的 spec.template 字段相同。通过一些限制,Service Registry Operator 将来自此字段的数据转发到 Service Registry Deployment 资源中的对应字段。此功能提供更大的灵活性,而无需 Service Registry Operator 原生支持每个用例。

重要

技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

Service Registry 用户文档和示例

文档库已使用版本 2.4 中的新功能更新:

开源演示应用程序也已更新: