搜索

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

download PDF

您可能需要使用自己的内部证书颁发机构(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
    1
    运行这个命令,将 mybundle.pem 替换为证书或证书捆绑包的名称。结果被粘贴为 myBundleExample 字段的值。
    2
    运行这个命令,将 cacert.pem 替换为您的 CA 证书的名称。
  2. 从清单文件创建 secret:

    oc apply -f cacerts.yaml
  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
    1
    <service > 替换为此 secret 所在的服务的名称。
    2
    运行这个命令,将 tlscrt.pem 替换为签名证书的名称。
    3
    运行这个命令,将 tlskey.pem 替换为私钥的名称。
    4
    运行这个命令,将 cacrt.pem 替换为 CA 证书的名称。
  4. 创建 secret

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

    apiVersion: core.openstack.org/v1beta1
    kind: OpenStackControlPlane
    metadata:
      name: myctlplane
    spec:
      tls:
        podLevel:
          enabled: true
        caBundleSecretName: cacerts
  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

    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
  7. 应用 control plane 更改

    oc apply -f openstack_control_plane.yaml
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.