2.2. 使用公共服务的自定义证书更新 control plane


您可能需要使用自己的内部证书颁发机构(CA)保护公共 API。要将自动生成的路由证书替换为来自您的 CA 的通用证书,您必须创建一个包含额外 CA 证书的 secret,以及信任链中的所有证书。

先决条件

  • 您有每个公共服务的列表,用于应用您的自定义服务证书。您可以使用 oc route list -n openstack 命令获取此列表。对于您必须创建的证书数量、这些证书的 DNS 名称,以及在 openstack_control_plane.yaml 自定义资源(CR)中查找要编辑的相关服务,请使用此信息。
  • 您有一个用于公共服务的服务证书

流程

  1. 创建名为 cacerts.yaml 的清单文件,其中包含所有 CA 证书。如果需要,在信任链中包括所有证书:

    apiVersion: v1
    kind: Secret
    metadata:
      name: cacerts
      namespace: openstack
    type: Opaque
    data:
      myBundleExample: <cat mybundle.pem | base64 -w0> 
    1
    
      CACertExample: <cat cacert.pem | base64 -w0>     
    2
    Copy to Clipboard Toggle word wrap
    1
    运行这个命令,将 mybundle.pem 替换为证书或证书捆绑包的名称。结果被粘贴为 myBundleExample 字段的值。
    2
    运行这个命令,将 cacert.pem 替换为您的 CA 证书的名称。
  2. 从清单文件创建 secret:

    oc apply -f cacerts.yaml
    Copy to Clipboard Toggle word wrap
  3. 为每个 secret 创建一个名为 api_certificate_<service>_secret.yaml 的清单文件

    apiVersion: v1
    kind: Secret
    metadata:
      name: api_certificate_<service>_secret 
    1
    
      namespace: openstack
    type: kubernetes.io/tls
    data:
      tls.crt: <cat tlscrt.pem | base64 -w0> 
    2
    
      tls.key: <cat tlskey.pem | base64 -w0> 
    3
    
      ca.crt: <cat cacrt.pem | base64 -w0>   
    4
    Copy to Clipboard Toggle word wrap
    1
    <service > 替换为此 secret 所在的服务的名称。
    2
    运行这个命令,将 tlscrt.pem 替换为签名证书的名称。
    3
    运行这个命令,将 tlskey.pem 替换为私钥的名称。
    4
    运行这个命令,将 cacrt.pem 替换为 CA 证书的名称。
  4. 创建 secret

    oc apply -f api_certificate_<service>_secret.yaml
    Copy to Clipboard Toggle word wrap
  5. 编辑 openstack_control_plane.yaml 自定义资源,并将捆绑包添加为 caBundleSecretName 的参数:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: myctlplane
    spec:
      tls:
        podLevel:
          enabled: true
        caBundleSecretName: cacerts
    Copy to Clipboard Toggle word wrap
  6. 将 secret 服务证书应用到 apiOverride 字段中的每个公共服务。例如,为 Identity 服务(keystone)输入以下内容:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: myctlplane
      namespace: openstack
    spec:
      ...
      keystone:
        apiOverride:
          tls:
            secretName: api_certificate_keystone_secret
    Copy to Clipboard Toggle word wrap

    Compute 服务(nova)和 noVNCProxy 的编辑显示如下:

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: myctlplane
      namespace: openstack
    spec:
    ...
      nova:
        apiOverride:
          tls:
            secretName: api_certificate_nova_secret
          route: {}
        cellOverride:
          cell1:
            noVNCProxy:
              tls:
                secretName: api_certificate_novavncproxy_secret
    Copy to Clipboard Toggle word wrap
  7. 应用 control plane 更改

    oc apply -f openstack_control_plane.yaml
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat