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.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新机密来保存证书和私钥。
- 在 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.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Apicurio Registry 部署编辑
ApicurioRegistryCR 的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-2wzpwCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Service 资源查找 Apicurio Registry pod 的集群 IP (请参阅 web 控制台中的 Location 列)。之后,执行测试请求(我们使用自签名证书,因此需要一个 insecure 标志):
curl -k https://172.30.230.78:8443/health
curl -k https://172.30.230.78:8443/healthCopy 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。