5.4. 从 OpenShift 集群内部配置 HTTPS 连接 Apicurio Registry
以下步骤演示了如何配置 Apicurio Registry 部署,以便从 OpenShift 集群内部为 HTTPS 连接公开端口。
这类连接不能在集群外部直接提供。路由基于主机名,在 HTTPS 连接时进行编码。因此,仍然需要使用边缘终止或其他配置。请参阅 第 5.5 节 “从 OpenShift 集群外部配置 HTTPS 连接到 Apicurio Registry”。
前提条件
- 您必须已安装了 Service Registry Operator。
流程
生成带有自签名证书的
密钥存储。如果您使用自己的证书,可以跳过这一步。keytool -genkey -trustcacerts -keyalg RSA -keystore registry-keystore.jks -storepass password
keytool -genkey -trustcacerts -keyalg RSA -keystore registry-keystore.jks -storepass passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新机密,以存放密钥存储和密钥存储的密码。
- 在 OpenShift Web 控制台的左侧导航菜单中,点 Workloads > Secrets > Create Key/Value Secret。
使用以下值:
Name:registry-keystore
Key 1:keystore.jks
Value 1: registry-keystore.jks (上传的文件)
Key 2:password
Value 2: password注意如果您遇到
java.io.IOException: Invalid keystore format,二进制文件的上传无法正常工作。作为替代方案,使用cat registry-keystore.jks | base64 -w0 > data.txt 将文件编码为 base64字符串,并以 yaml 用户身份手动编辑 Secret 资源以手动添加编码的文件。
编辑 Apicurio Registry 实例的 Deployment 资源。您可以在 Service Registry Operator 的 status 字段中找到正确的名称。
将密钥存储 secret 添加为卷:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加卷挂载:
volumeMounts: - name: registry-keystore-secret-volume mountPath: /etc/registry-keystore readOnly: truevolumeMounts: - name: registry-keystore-secret-volume mountPath: /etc/registry-keystore readOnly: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加
JAVA_OPTIONS和KEYSTORE_PASSWORD环境变量:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在使用字符串插入时顺序非常重要。
启用 HTTPS 端口:
ports: - containerPort: 8080 protocol: TCP - containerPort: 8443 protocol: TCPports: - containerPort: 8080 protocol: TCP - containerPort: 8443 protocol: TCPCopy to Clipboard Copied! Toggle word wrap Toggle overflow
编辑 Apicurio Registry 实例的 Service 资源。您可以在 Service Registry Operator 的 status 字段中找到正确的名称。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证连接是否正常工作:
使用 SSH 连接到集群中的 pod (您可以使用 Apicurio Registry pod):
oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqb
oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Service 资源查找 Apicurio Registry pod 的集群 IP (请参阅 web 控制台中的 Location 列)。之后,执行测试请求(我们使用自签名证书,因此需要不安全标记):
curl -k https://172.30.209.198:8443/health [...]
curl -k https://172.30.209.198:8443/health [...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow