第 16 章 配置自定义 PKI

有些平台组件,如 Web 控制台,使用 Routes 进行通信,且必须信任其他组件的证书与其交互。如果您使用的是自定义公钥基础架构 (PKI) ,您必须将其配置为在集群中识别其私有签名的 CA 证书。

您可以使用 Proxy API 添加集群范围的可信 CA 证书。您必须在安装过程中或运行时执行此操作。

  • 安装过程 中,配置集群范围的代理。您需要在 install-config.yaml 文件中的 additionalTrustBundle 设置中定义私有签名的 CA 证书。

    安装程序生成名为 user-ca-bundle 的 ConfigMap,其中包含您定义的附加 CA 证书。然后,Cluster Network Operator 会创建 trusted-ca-bundle ConfigMap,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,Proxy 对象的 trustedCA 字段中也会引用此 ConfigMap。

  • 运行时,修改默认 Proxy 对象使其包含您私有签名的 CA 证书 (集群代理启用工作流程的一部分)。这涉及创建包含集群应信任的私有签名 CA 证书的 ConfigMap,然后使用 trustedCA 引用私有签名证书的 ConfigMap 修改代理服务器资源。
注意

安装程序配置的 additionalTrustBundle 字段和 proxy 资源的 trustedCA 字段被用来管理集群范围信任捆绑包; 在安装时会使用 additionalTrustBundle ,并在运行时使用代理的trustedCA

trustedCA 字段是对包含集群组件使用的自定义证书和密钥对的 ConfigMap 的引用。

16.1. 在安装过程中配置集群范围代理

生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml 文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。

先决条件

  • 现有的 install-config.yaml 文件。
  • 查看集群需要访问的站点,并决定是否需要绕过代理。默认情况下代理所有集群出口流量,包括对托管云供应商 API 的调用。若有需要,将站点添加到 Proxy 对象的 spec.noProxy 字段来绕过代理服务器。

    注意

    Proxy 对象的 status.noProxy 字段默认填充实例元数据端点 (169.254.169.254),以及您的安装配置中 networking.machineCIDRnetworking.clusterNetwork.cidrnetworking.serviceNetwork[] 字段的值。

流程

  1. 编辑 install-config.yaml 文件并添加代理设置。例如:

    apiVersion: v1
    baseDomain: my.domain.com
    proxy:
      httpProxy: http://<username>:<pswd>@<ip>:<port> 1
      httpsProxy: http://<username>:<pswd>@<ip>:<port> 2
      noProxy: example.com 3
    additionalTrustBundle: | 4
        -----BEGIN CERTIFICATE-----
        <MY_TRUSTED_CA_CERT>
        -----END CERTIFICATE-----
    ...
    1
    用于创建集群外 HTTP 连接的代理 URL。URL 必须是 http。如果您使用不要求额外代理配置但需要额外 CA 的 MITM 透明代理网络,则不得指定 httpProxy 值。
    2
    用于创建集群外 HTTPS 连接的代理 URL。如果未指定此字段,httpProxy 会同时用于 HTTP 和 HTTPS 连接。URL 方案必须是 http;目前不支持 https。如果您使用不要求额外代理配置但需要额外 CA 的 MITM 透明代理网络,则不得指定 httpsProxy 值。
    3
    要排除代理的目标域名、域、IP 地址或其他网络 CIDR 的逗号分隔列表。域之前加上前缀 . 可包含该域的所有子域。使用 * 可对所有目的地绕过所有代理。
    4
    如果提供,安装程序会在 openshift-config 命名空间中生成名为 user-ca-bundle 的 ConfigMap,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建 trusted-ca-bundle ConfigMap,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,Proxy 对象的 trustedCA 字段中也会引用此 ConfigMap。additionalTrustBundle 字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。如果您使用不要求额外代理配置但需要额外 CA 的 MITM 透明代理网络,您必须提供 MITM CA 证书。
    注意

    安装程序不支持代理的 readinessEndpoints 字段。

  2. 保存该文件,并在安装 OpenShift Container Platform 时引用。

安装程序会创建一个名为 cluster 的集群范围代理,该代理使用提供的 install-config.yaml 文件中的代理设置。如果没有提供代理设置,仍然会创建 cluster Proxy 对象,但它会有一个零 spec

注意

只支持名为 cluster 的 Proxy 对象,且无法创建额外的代理。