Apicurio Registry 2.0 发行注记
红帽构建的 Apicurio Registry 新功能
摘要
第 1 章 Apicurio Registry 发行注记 复制链接链接已复制到粘贴板!
Red Hat build of Apicurio Registry 2.0 作为一个正式发行版本提供。Apicurio Registry 是标准事件模式和 API 设计的数据存储,基于 Apicurio Registry 开源社区项目。
您可以使用 Apicurio Registry 使用 Web 控制台、REST API、Maven 插件或 Java 客户端来管理和共享数据的结构。例如,客户端应用程序可以在不需要重新部署的情况下动态推送到 Apicurio Registry 或从 Apicurio Registry 中推送或拉取最新的模式更新。您还可以使用 Apicurio Registry 创建可选规则,以监管 registry 内容随时间发展的方式。例如,这包括用于内容验证的规则,或向后兼容 schema 或 API 版本。
1.1. Apicurio Registry 安装选项 复制链接链接已复制到粘贴板!
您可以使用以下数据存储选项在 OpenShift 上安装 Apicurio Registry:
- AMQ Streams
- PostgreSQL 数据库
如需了解更多详细信息,请参阅在 OpenShift 中安装和部署 Red Hat build of Apicurio Registry。
1.2. Apicurio Registry 平台组件版本 复制链接链接已复制到粘贴板!
Apicurio Registry 2.0.3 支持以下版本:
- OpenShift Container Platform 4.9 或 4.6
- OpenJDK 11
- AMQ Streams 1.8
- PostgreSQL 12
- Debezium 1.4
- Camel Kafka Connector - 技术预览
1.3. Apicurio Registry 新功能 复制链接链接已复制到粘贴板!
Apicurio Registry 安全性
- 基于 Red Hat Single Sign-On 的身份验证(可选)来保护 registry,以便其 REST API 需要用户进行身份验证(OAuth 和 HTTP 基本支持)
-
基于角色的授权 - 启用身份验证时,用户必须至少有一个角色
sr-admin、sr-developer或sr-readonly - 创建者仅授权 - 选项,以防止对工件进行更改,除非经过身份验证的用户最初创建了构件
- Kafka OAuth 身份验证 - 用于 AMQ Streams 中的存储,您可以配置对需要 OAuth 身份验证的 Kafka 集群的访问。
Apicurio Registry core
- registry 工件组 - (可选)将 schema 和 API 工件组织到自定义指定逻辑分组中
- 重构的 Kafka serializer/deserializer (SerDes)类 - 对 Java SerDes 层进行显著更新,以解决易用性、一致性和功能
- event sourcing - 根据 CloudEvents 规格将 registry 配置为在每次更改时触发事件
Apicurio Registry 数据存储
- 基于 SQL 的存储 - 通过支持 PostgreSQL 数据库的新 SQL 存储实现
- 基于 Kafka 的存储 - 使用 AMQ Streams 存储工件数据和嵌入式 SQL 数据库来代表内存中的新混合存储
Apicurio Registry v2 REST API
- 自定义版本 - 选项在使用 REST API 创建或更新工件时提供自定义版本号
- 改进了工件搜索 - 更新 REST API 以允许改进搜索工件
-
import /export API - 通过操作来导出和导入 registry 数据(以
.zip格式)更新 REST API CNCF Schema Registry API 支持 - 实施 Cloud Native Computing Foundation Schema Registry REST API
注意Apicurio Registry v2 REST API 与 Confluent Schema Registry REST API 兼容,它不包括新的工件组。后向兼容性还使用现有的 Apicurio Registry v1 REST API 保持。
Apicurio Registry Operator
-
提高了性能和简化 - Operator 在 OpenShift 上使用
Deployment(而不是DeploymentConfig)、可预测的资源命名(无随机后缀)以及并行创建的资源。 - registry 数据存储 - 支持新的 SQL 和基于 Kafka 的存储选项。
- registry 安全性 - 支持使用红帽单点登录进行身份验证和授权配置。
-
ApicurioRegistry CRD v1 - 在
status块中使用 standardizedconditions字段来更好地指明 Operator 或应用程序中的错误。 - 多命名空间部署 - 当 Operator 安装在一个命名空间中时,它可以监视所有命名空间(或选定子集),以便应用程序可以部署到任何或多个命名空间中。
- 断开连接的安装 - 在受限网络中在 OpenShift 上安装的支持被添加到版本 2.0.1 和 1.1.2 中。如需了解更多详细信息 ,请参阅为断开连接的安装镜像镜像。
Apicurio Registry 用户文档和示例
1.4. Apicurio Registry 已弃用和删除的功能 复制链接链接已复制到粘贴板!
Apicurio Registry 弃用的功能
- Apicurio Registry 1.x 在版本 2.0 中已弃用,并很快会完全支持。如需了解更多详细信息,请参阅 Red Hat Middleware 产品更新和支持政策。
Apicurio Registry 删除的功能
- 基于 Infinispan 缓存的存储选项已被删除
- Java Persistence API (JPA)存储选项已被新的 PostgreSQL 数据库存储选项替代
- AMQ Streams 中的基于 Kafka 的存储选项已被 AMQ Streams 中的新的混合存储选项替换为 in-memory H2 数据库
- Apicurio Registry Java 客户端不再支持 OpenJDK 8,并支持 OpenJDK 11
1.5. 迁移 Apicurio Registry 部署 复制链接链接已复制到粘贴板!
有关从 Apicurio Registry 版本 1.1 迁移到 2.x 的详情,请参阅迁移 Apicurio Registry 部署的红帽构建。
有关在 Apicurio Registry 版本 2.x 实例间迁移 registry 数据的详情,请参阅使用 Registry REST API 导出和导入 registry 内容。
1.6. Apicurio Registry 解决了的问题 复制链接链接已复制到粘贴板!
Apicurio Registry 内核解决的问题
IPT-651 - 在从 Apicurio Registry 获取 schema 时对 Protobuf 消息进行错误处理
Kafka producer 应用可以设置 schema,但使用者应用无法从 registry 获取 schema,并引发 org.apache.kafka.common.errors.SerializationException 并带有错误,例如:
error deserializing Protobuf message for id 3\nCaused by: java.io.IOException: Invalid schema syntax = \"proto3\";\npackage …commons;\n\nimport \"head.proto\";\n\noption java_package = \"packaget\";\noption java_multiple_files = true; \n\nmessage AuditMessage {\n commons.Head head = 1;\n int64 id = 5;\n string user = 6;\n bytes extraData = 7;\n string signature = 8;\n}\n with refs [] of type AVRO\n\tat
IPT-625 - Error upload artifact to Apicurio Registry with KafkaSQL storage
当使用 KafkaSQL 存储选项安装 Apicurio Registry 时,在上传新工件时会引发 io.apicurio.registry.storage.RegistryStorageException。可能的错误消息包括 SQL 错误:预期一个元素,但找不到任何 元素。
这个错误是由 Kafka 日志压缩造成的,它删除控制数据库序列的消息。现在,这个问题已通过防止控制数据库序列的消息被紧凑。如需了解更多详细信息,请参阅 Apicurio Registry 的 KafkaSQL 存储中解决问题的 Apicurio 社区博客文章。
IPT-159 - Registry v1 API 和 Confluent 兼容性 API 不匹配
需要迁移到 Apicurio Registry v2.x 的现有用户来升级其所有使用 Apicurio Registry v1 serializers/deserializers/deserializers (SerDes)的 Kafka 客户端应用程序,以改用 Apicurio Registry v2 SerDes。
Apicurio Registry 提供了一个名为 ENABLE_CCOMPAT_LEGACY_ID_MODE 的新环境变量,您可以使用它们恢复到 v1 兼容性 API 的传统行为。当此变量设置为 true 时,Apicurio Registry 使用 globalId 而不是 contentId 作为使用兼容性 API 上传的 schema 的唯一标识符。
registry-1619 - Apicurio Registry 服务器无法正确配置为需要身份验证,而无需基于角色的授权
当在 Apicurio Registry 服务器中禁用基于角色的访问控制时,也会禁用身份验证。即使在 Quarkus 中启用了 OpenID Connect,用户也不需要提供凭证。如果用户提供无效凭证,请求会失败。但是,如果用户不提供凭证,则请求会代表匿名用户成功。由于角色被禁用,因此不会进行额外的检查。
registry-1289 - Registry 在 IPv6 上无法正常工作
当试图在带有互联网协议 v6 的 Kubernetes 服务器上使用 Operator 部署 Apicurio Registry 时,registry 服务器无法启动。
registry-1151 - 在封闭网络中运行时错误获取 JavaScript 库
在封闭网络中运行时,Redoc JavaScript 库无法正确加载,因为它们引用 CDN,而不是在应用程序中被包含或捆绑。
registry-1007 - Registry REST API 返回 406 错误
当请求中包含 Accept: application/json 标头时,Registry REST API 会返回 406 错误。
registry-711 - Apicurio Registry 客户端无法使用 Jersey HTTP 客户端
当 Jersey 和 RESTEasy JAX-RS 提供程序都位于 classpath 中,则 RESTEasy 会优先处理其他 HTTP 客户端功能,并依赖 Jersey 客户端支持 应用/octet-stream 传输,即 RESTEasy 似乎不支持。
Apicurio Registry Operator 已解决的问题
operator-41 - 示例 CRD 为空
提供的 ApicurioRegistry 自定义资源定义示例不应为空。
1.7. 已知的与 Apicurio Registry 相关的问题 复制链接链接已复制到粘贴板!
Apicurio Registry 内核已知的问题
registry-2394 - 为核心 v1 兼容性的 Apicurio Registry API 端点没有被身份验证正确保护
传统的 MY-REGISTRY-URL/api/ 端点是 v1 核心注册表 API 的别名,它移动到 Apicurio Registry v2.x 中的 MY-REGISTRY-URL/apis/registry/v1。目前,当配置了身份验证时,这个旧端点不受保护。这个问题已在 Apicurio Registry v2.1.x 中解决,身份验证层不再使用 application.properties 中配置的 Quarkus 策略。
要在 Apicurio Registry v2.0.x 中解决这个问题,请通过将 REGISTRY_DISABLE_APIS 环境变量设置为 /apis/ibmcompat/.、/api/. 来禁用核心 v1 传统端点。
ipT-701 - CVE-2022-23221 H2: Loading of custom classes from remote servers by JNDI
当 Apicurio Registry 数据存储在 AMQ Streams 中时,H2 数据库控制台允许远程攻击者使用 JDBC URL 执行任意代码。默认情况下,Apicurio Registry 不会受到这个安全漏洞的影响,因此需要一个恶意配置更改。
Apicurio Registry operator 已知问题
operator-42 - 自动生成 OpenShift 路由可能会使用错误的基本主机值
如果有多个 routerCanonicalHostname 值,则 Apicurio Registry OpenShift 路由可能会使用错误的基础主机值。
operator-32 - Operator 应该在没有 TLS 的情况下支持 SCRAM 授权,而不只支持 SCRAM+TLS
Apicurio Registry Operator 应该在没有 TLS 的情况下支持 Salted Challenge Response Authentication Mechanism (SCRAM)授权,而不只支持 SCRAM+TLS。