5.4. 从 OpenShift 集群内部配置与 Service Registry 的 HTTPS 连接


以下流程演示了如何配置 Service Registry 部署,以便从 OpenShift 集群内部为 HTTPS 连接公开端口。

警告

这种类型的连接不能在集群外直接可用。路由基于主机名,该主机名在 HTTPS 连接时进行编码。因此,仍然需要边缘终止或其他配置。请参阅 第 5.5 节 “从 OpenShift 集群外部配置到 Service Registry 的 HTTPS 连接”

先决条件

  • 您必须已安装了 Service Registry Operator。

流程

  1. 使用自签名证书生成 密钥存储。如果您使用自己的证书,可以跳过这一步。

    keytool -genkey -trustcacerts -keyalg RSA -keystore registry-keystore.jks -storepass password
  2. 创建新机密来保存密钥存储和密钥存储密码。

    1. 在 OpenShift Web 控制台的左侧导航菜单中,点 Workloads > Secrets > Create Key/Value Secret
    2. 使用以下值:
      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 资源来手动添加编码的文件。

  3. 编辑 Service Registry 实例的 Deployment 资源。您可以在 Service Registry Operator 的 status 字段中找到正确的名称。

    1. 将密钥存储 secret 添加为卷:

      template:
        spec:
          volumes:
          - name: registry-keystore-secret-volume
            secret:
            secretName: registry-keystore
    2. 添加卷挂载:

      volumeMounts:
        - name: registry-keystore-secret-volume
          mountPath: /etc/registry-keystore
          readOnly: true
    3. 添加 JAVA_OPTIONSKEYSTORE_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)
      注意

      在使用字符串插入时,顺序非常重要。

    4. 启用 HTTPS 端口:

      ports:
        - containerPort: 8080
          protocol: TCP
        - containerPort: 8443
          protocol: TCP
  4. 编辑 Service Registry 实例的 Service 资源。您可以在 Service Registry Operator 的 status 字段中找到正确的名称。

    ports:
      - name: http
        protocol: TCP
        port: 8080
        targetPort: 8080
      - name: https
        protocol: TCP
        port: 8443
        targetPort: 8443
  5. 验证连接是否正常工作:

    1. 使用 SSH 连接到集群中的 pod (您可以使用 Service Registry pod):

      oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqb
    2. Service 资源查找 Service Registry pod 的集群 IP (请参阅 web 控制台中的 Location 列)。之后,执行测试请求(我们使用自签名证书,因此需要不安全的标志):

      curl -k https://172.30.209.198:8443/health
      [...]
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部