×

生产环境可以拒绝直接访问互联网,而是使用可用的 HTTP 或 HTTPS 代理。您可以通过修改现有集群的 Proxy 对象或通过为新集群配置install-config.yaml文件中的代理设置来配置 OpenShift Container Platform 以使用代理。

先决条件

  • 查看集群需要访问的站点,并确定是否必须绕过代理中的任何站点。默认情况下,所有集群系统出站流量都会被代理,包括对托管集群的云的云提供商 API 的调用。系统范围的代理仅影响系统组件,而不影响用户工作负载。如有必要,请将站点添加到 Proxy 对象的spec.noProxy字段以绕过代理。

    Proxy 对象的status.noProxy字段填充了安装配置中networking.machineNetwork[].cidrnetworking.clusterNetwork[].cidrnetworking.serviceNetwork[]字段的值(大多数安装类型)。

    对于在 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure 和 Red Hat OpenStack Platform (RHOSP) 上的安装,Proxy 对象的status.noProxy字段还填充了实例元数据端点 (169.254.169.254)。

    如果您的安装类型不包括设置networking.machineNetwork[].cidr字段,则必须手动将机器 IP 地址包含在.status.noProxy字段中,以确保节点之间的流量可以绕过代理。

启用集群范围代理

Proxy对象用于管理集群范围的出站代理。当在未配置代理的情况下安装或升级集群时,仍然会生成Proxy对象,但它将具有nil spec。例如

apiVersion: config.openshift.io/v1
kind: Proxy
metadata:
  name: cluster
spec:
  trustedCA:
    name: ""
status:

集群管理员可以通过修改此cluster Proxy对象来配置 OpenShift Container Platform 的代理。

仅支持名为clusterProxy对象,并且无法创建其他代理。

启用集群范围代理会导致机器配置操作符 (MCO) 触发节点重新启动。

先决条件
  • 集群管理员权限

  • 已安装 OpenShift Container Platform oc CLI 工具

步骤
  1. 创建一个包含代理 HTTPS 连接所需的任何其他 CA 证书的配置映射。

    如果代理的身份证书由 RHCOS 受信任捆绑包中的机构签名,则可以跳过此步骤。

    1. 创建一个名为user-ca-bundle.yaml的文件,内容如下,并提供 PEM 编码证书的值

      apiVersion: v1
      data:
        ca-bundle.crt: | (1)
          <MY_PEM_ENCODED_CERTS> (2)
      kind: ConfigMap
      metadata:
        name: user-ca-bundle (3)
        namespace: openshift-config (4)
      1 此数据键必须命名为ca-bundle.crt
      2 一个或多个用于签署代理身份证书的 PEM 编码 X.509 证书。
      3 将从Proxy对象引用的配置映射名称。
      4 配置映射必须位于openshift-config命名空间中。
    2. 从此文件创建配置映射

      $ oc create -f user-ca-bundle.yaml
  2. 使用oc edit命令修改Proxy对象

    $ oc edit proxy/cluster
  3. 配置代理所需的字段

    apiVersion: config.openshift.io/v1
    kind: Proxy
    metadata:
      name: cluster
    spec:
      httpProxy: http://<username>:<pswd>@<ip>:<port> (1)
      httpsProxy: https://<username>:<pswd>@<ip>:<port> (2)
      noProxy: example.com (3)
      readinessEndpoints:
      - http://www.google.com (4)
      - https://www.google.com
      trustedCA:
        name: user-ca-bundle (5)
    1 用于在集群外部创建 HTTP 连接的代理 URL。URL 方案必须为http
    2 用于在集群外部创建 HTTPS 连接的代理 URL。URL 方案必须为httphttps。为支持 URL 方案的代理指定 URL。例如,如果大多数代理配置为使用https但它们只支持http,则会报告错误。此错误消息可能不会传播到日志中,而可能显示为网络连接故障。如果使用侦听集群的https连接的代理,则可能需要配置集群以接受代理使用的 CA 和证书。
    3 逗号分隔的要排除代理的目标域名、域、IP 地址或其他网络 CIDR 列表。

    在域名前添加.以仅匹配子域。例如,.y.com匹配x.y.com,但不匹配y.com。使用*绕过所有目标的代理。如果扩展了安装配置中networking.machineNetwork[].cidr字段未定义的网络中未包含的工作节点,则必须将其添加到此列表中,以防止连接问题。

    如果未设置httpProxyhttpsProxy字段,则忽略此字段。

    4 一个或多个集群外部的 URL,用于在将httpProxyhttpsProxy值写入状态之前执行就绪性检查。
    5 openshift-config命名空间中包含代理 HTTPS 连接所需的附加 CA 证书的配置映射的引用。请注意,在此处引用之前,配置映射必须已经存在。除非代理的身份证书由 RHCOS 受信任捆绑包中的机构签名,否则此字段是必需的。
  4. 保存文件以应用更改。

移除集群范围代理

无法删除cluster Proxy 对象。要从集群中删除代理,请从 Proxy 对象中删除所有spec字段。

先决条件
  • 集群管理员权限

  • 已安装 OpenShift Container Platform oc CLI 工具

步骤
  1. 使用oc edit命令修改代理

    $ oc edit proxy/cluster
  2. 从 Proxy 对象中移除所有spec字段。例如

    apiVersion: config.openshift.io/v1
    kind: Proxy
    metadata:
      name: cluster
    spec: {}
  3. 保存文件以应用更改。

附加资源