5.2. 注入自定义 CA 证书

当集群管理员使用 ConfigMap 向集群添加自定义 CA 证书时,Cluster Network Operator 会将用户提供的证书和系统 CA 证书合并为一个捆绑包(bundle)。您可以将这个合并捆绑包注入 Operator Lifecycle Manager (OLM) 上运行的 Operator 中,如果您有一个中间人(man-in-the-middle)HTTPS 代理,这将会有用。

先决条件

  • 使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群。
  • 使用 ConfigMap 添加自定义 CA 证书到集群。
  • 在 OLM 上安装并运行所需的 Operator。

流程

  1. 在存在 Operator 订阅的命名空间中创建一个空 ConfigMap,并包含以下标签:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: trusted-ca 1
      labels:
        config.openshift.io/inject-trusted-cabundle: "true" 2
    1
    ConfigMap 的名称。
    2
    请求 Cluster Network Operator 注入合并的捆绑包。

    创建此 ConfigMap 后,ConfigMap 会立即被合并捆绑包的证书内容填充。

  2. 更新 Operator 的订阅对象,使其包含 spec.config 部分,该部分可将 trusted-ca ConfigMap 作为卷挂载到需要自定义 CA 的 Pod 中的各个容器:

    kind: Subscription
    metadata:
      name: my-operator
    spec:
      package: etcd
      channel: alpha
      config: 1
      - selector:
          matchLabels:
            <labels_for_pods> 2
        volumes: 3
        - name: trusted-ca
          configMap:
            name: trusted-ca
            items:
              - key: ca-bundle.crt 4
                path: tls-ca-bundle.pem 5
        volumeMounts: 6
        - name: trusted-ca
          mountPath: /etc/pki/ca-trust/extracted/pem
          readOnly: true
    1
    如果不存在,请添加 config 部分。
    2
    指定标签以匹配 Operator 拥有的 Pod。
    3
    创建一个 trusted-ca 卷。
    4
    CA-bundle.crt 需要作为 ConfigMap 密钥。
    5
    TLS-ca-bundle.pem 需要作为 ConfigMap 的路径。
    6
    创建一个 trusted-ca 卷挂载。