5.5. 从 OpenShift 集群内部配置到 Apicurio Registry 的 HTTPS 连接
以下流程演示了如何配置 Apicurio Registry 部署,以便从 OpenShift 集群内部为 HTTPS 连接公开端口。
这种类型的连接不能在集群外直接可用。路由基于主机名,在 HTTPS 连接时进行编码。因此,仍然需要边缘终止或其他配置。请参阅 第 5.6 节 “从 OpenShift 集群外部配置到 Apicurio Registry 的 HTTPS 连接”。
先决条件
- 您必须已安装了 Apicurio Registry Operator。
流程
使用自签名证书生成
密钥存储
。如果您使用自己的证书,可以跳过这一步。openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tls.key -out tls.crt
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout tls.key -out tls.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个新 secret 来保存证书和私钥。
- 在 OpenShift web 控制台的左侧导航菜单中,点 Workloads > Secrets > Create Key/Value Secret。
-
使用以下值:
Name:https-cert-secret
Key 1:tls.key
Value 1: tls.key (uploaded file)
Key 2:tls.crt
Value 2: tls.crt (uploaded file)
或者使用以下命令创建 secret:
oc create secret generic https-cert-secret --from-file=tls.key --from-file=tls.crt
oc create secret generic https-cert-secret --from-file=tls.key --from-file=tls.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 Apicurio Registry 部署的
ApicurioRegistry
CR 的spec.configuration.security.https
部分,例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证连接是否正常工作:
使用 SSH 连接到集群中的 pod (您可以使用 Apicurio Registry pod):
oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
oc rsh example-apicurioregistry-deployment-6f788db977-2wzpw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Service 资源查找 Apicurio Registry pod 的集群 IP (请参阅 web 控制台中的 Location 列)。之后,执行测试请求(我们使用自签名证书,因此需要一个不安全的标记):
curl -k https://172.30.230.78:8443/health
curl -k https://172.30.230.78:8443/health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在包含 HTTPS 证书和密钥的 Kubernetes secret 中,必须使用 tls.crt
和 tls.key
的名称作为提供的值。目前这不是可配置的。
禁用 HTTP
如果您使用本节中的步骤启用 HTTPS,您也可以通过将 spec.security.https.disableHttp
设置为 true
来禁用默认的 HTTP 连接。这会从 Apicurio Registry pod 容器、Service
和 NetworkPolicy
(如果存在)中删除 HTTP 端口 8080。
最重要的是,Ingress
也被删除,因为 Apicurio Registry Operator 目前不支持在 Ingress
中配置 HTTPS。用户必须手动为 HTTPS 连接创建 Ingress
。