搜索

第 9 章 在代理环境中创建集群

download PDF

当 hub 集群通过代理服务器连接时,您可以创建 Red Hat OpenShift Container Platform 集群。

要成功创建集群,则必须满足以下情况之一:

  • Red Hat Advanced Cluster Management for Kubernetes 与您要创建的受管集群具有私有网络连接,但 Red Hat Advanced Cluster Management 和受管集群使用代理访问互联网。
  • 受管集群位于基础架构供应商上,但防火墙端口启用了从受管集群到 hub 集群的通信。

要创建使用代理配置的集群,请完成以下步骤:

  1. 通过在 install-config.yaml 文件中添加以下信息,在 hub 集群上配置集群范围的代理设置:

    apiVersion: v1
    kind: Proxy
    baseDomain: <domain>
    proxy:
      httpProxy: http://<username>:<password>@<proxy.example.com>:<port>
      httpsProxy: https://<username>:<password>@<proxy.example.com>:<port>
      noProxy: <wildcard-of-domain>,<provisioning-network/CIDR>,<BMC-address-range/CIDR>
    additionalTrustBundle: |
        -----BEGIN CERTIFICATE-----
        <trusted-ca-cert>
        -----END CERTIFICATE-----

    使用代理服务器的用户名替换 username

    使用密码替换 password 以访问您的代理服务器。

    proxy.example.com 替换为代理服务器的路径。

    使用与代理服务器的通信端口替换 port

    wildcard-of-domain 替换为应当绕过代理的域的条目。

    使用置备网络的 IP 地址和分配的 IP 地址(以 CIDR 表示)替换 provisioning-network/CIDR

    BMC-address-range/CIDR 替换为 BMC 地址和地址数(以 CIDR 表示)。

    trusted-ca-cert 替换为 openshift-config 命名空间中的 ConfigMap 中的 user-ca-bundle 的内容。additionalTrustBundle 字段是必需的,除非代理的身份证书由 Red Hat Enterprise Linux Core OS 信任捆绑包中的颁发机构签名。如果您使用不要求额外代理配置但需要额外 CA 的 MITM 透明代理网络,您必须提供 MITM CA 证书。

    添加前面的值后,设置将应用到集群。

  2. 通过完成创建集群的步骤来置备集群。请参阅创建集群以选择您的供应商。

9.1. 在现有集群中启用集群范围代理

当启用集群范围的代理功能时,您必须使受管集群的组件了解,以便它们可以在代理后工作。若要启用组件,如应用程序管理器,操作器容器集使用以下环境变量进行更新:HTTP_PROXYHTTPS_PROXYNO_PROXY

这些环境变量指定了 pod 将 HTTPHTTPS 流量路由到代理服务器的位置。Operator pod 会自动使用这些环境变量更新,因此独立订阅可以在启用集群范围代理后正常工作。

在现有的受管集群中,订阅控制器在一个 klusterlet add-on 中运行。在创建容器集时,环境变量不会自动添加。您必须通过修补部署并添加三个环境变量到部署中的每个容器来手动将环境变量添加到现有集群。

完成以下步骤,将环境变量添加到 appmgrklusterlet add-on 中:

  1. 输入以下命令来创建 HTTP 代理:

    kubectl patch deployment <deployment-name> -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTP_PROXY","value":"'<http-proxy>'"}],"name":"'<container-name>'"}]}}}}'

    使用部署的名称替换 deployment-name

    使用您要用于 http 请求的代理服务器的地址替换 http-proxy。例如:http://192.168.1.1:3128

    container-name 替换为容器的名称。

  2. 输入以下命令来创建 HTTPS 代理:

    kubectl patch deployment <deployment-name> -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTPS_PROXY","value":"'<https-proxy>'"}],"name":"'<container-name>'"}]}}}}'

    使用部署的名称替换 deployment-name

    使用您要用于 https 请求的代理服务器的地址替换 https-proxy。例如:http://192.168.1.0:3128

    container-name 替换为容器的名称。

  3. 输入以下命令指定不通过代理的内容:

    kubectl patch deployment <deployment-name> -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"NO_PROXY","value":"'<no-proxy>'"}],"name":"'<container-name>'"}]}}}}'

    使用部署的名称替换 deployment-name

    使用以逗号分隔的 IP、主机名和域(不通过代理路由流量)列表替换 no-proxy。例如:.cluster.local,.svc,10.128.0.0/14, example.com

    container-name 替换为容器的名称。

提示:对于多个容器,您可以在每个容器上创建并运行类似以下示例的文件:

DEPLOYMENT_NAME="klusterlet-addon-appmgr"
CONTAINER_NAME="subscription-controller"
HTTP_PROXY="http://192.168.1.1:3128"
HTTPS_PROXY="http://192.168.1.0:3128"
NO_PROXY=".cluster.local,.svc,10.128.0.0/14, example.com"

kubectl patch deployment $DEPLOYMENT_NAME -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTP_PROXY","value":"'$HTTP_PROXY'"}],"name":"'$CONTAINER_NAME'"}]}}}}'

kubectl patch deployment $DEPLOYMENT_NAME -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"HTTPS_PROXY","value":"'$HTTPS_PROXY'"}],"name":"'$CONTAINER_NAME'"}]}}}}'

kubectl patch deployment $DEPLOYMENT_NAME -p '{"spec":{"template":{"spec":{"containers":[{"env":[{"name":"NO_PROXY","value":"'$NO_PROXY'"}],"name":"'$CONTAINER_NAME'"}]}}}}'

注: 在受管集群中 注册 代理和 工作 代理不支持代理设置,因为它们通过建立 mTLS 连接与 hub 集群上的 apiserver 通信,这无法通过代理。

重要: 全局代理设置不会影响警报转发。要使用集群范围代理为 Red Hat Advanced Cluster Management hub 集群设置警报转发,请参阅 转发警报 以了解更多详细信息。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.