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
创建新机密,以存放密钥存储和密钥存储的密码。
- 在 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 添加为卷:
template: spec: volumes: - name: registry-keystore-secret-volume secret: secretName: registry-keystore添加卷挂载:
volumeMounts: - name: registry-keystore-secret-volume mountPath: /etc/registry-keystore readOnly: true添加
JAVA_OPTIONS和KEYSTORE_PASSWORD环境变量:- name: KEYSTORE_PASSWORD valueFrom: secretKeyRef: name: registry-keystore key: password - name: JAVA_OPTIONS value: >- -Dquarkus.http.ssl.certificate.key-store-file=/etc/registry-keystore/keystore.jks -Dquarkus.http.ssl.certificate.key-store-file-type=jks -Dquarkus.http.ssl.certificate.key-store-password=$(KEYSTORE_PASSWORD)注意在使用字符串插入时顺序非常重要。
启用 HTTPS 端口:
ports: - containerPort: 8080 protocol: TCP - containerPort: 8443 protocol: TCP
编辑 Apicurio Registry 实例的 Service 资源。您可以在 Service Registry Operator 的 status 字段中找到正确的名称。
ports: - name: http protocol: TCP port: 8080 targetPort: 8080 - name: https protocol: TCP port: 8443 targetPort: 8443验证连接是否正常工作:
使用 SSH 连接到集群中的 pod (您可以使用 Apicurio Registry pod):
oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqb
从 Service 资源查找 Apicurio Registry pod 的集群 IP (请参阅 web 控制台中的 Location 列)。之后,执行测试请求(我们使用自签名证书,因此需要不安全标记):
curl -k https://172.30.209.198:8443/health [...]