5.4. 从 OpenShift 集群内部配置与 Service Registry 的 HTTPS 连接
以下流程演示了如何配置 Service Registry 部署,以便从 OpenShift 集群内部为 HTTPS 连接公开端口。
这种类型的连接不能在集群外直接可用。路由基于主机名,该主机名在 HTTPS 连接时进行编码。因此,仍然需要边缘终止或其他配置。请参阅 第 5.5 节 “从 OpenShift 集群外部配置到 Service Registry 的 HTTPS 连接”。
先决条件
- 您必须已安装了 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 (uploaded file)
Key 2:password
Value 2: password注意如果您遇到
java.io.IOException: Invalid keystore format,则二进制文件的上传无法正常工作。另外,使用cat registry-keystore.jks | base64 -w0 > data.txt将文件编码为 base64 字符串,并编辑 Secret 资源来手动添加编码的文件。
编辑 Service 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
编辑 Service 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 (您可以使用 Service Registry pod):
oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqb从 Service 资源查找 Service Registry pod 的集群 IP (请参阅 web 控制台中的 Location 列)。之后,执行测试请求(我们使用自签名证书,因此需要不安全的标志):
curl -k https://172.30.209.198:8443/health [...]