×

如果在 OpenShift Dedicated 集群上配置了全局代理,Operator Lifecycle Manager (OLM) 会自动使用集群范围的代理配置其管理的操作符。但是,您也可以配置已安装的操作符以覆盖全局代理或注入自定义 CA 证书。

  • 开发支持代理设置的操作符,适用于 GoAnsibleHelm

覆盖操作符的代理设置

如果配置了集群范围的出站代理,则使用 Operator Lifecycle Manager (OLM) 运行的操作符会在其部署中继承集群范围的代理设置。拥有 `dedicated-admin` 角色的管理员还可以通过配置操作符的订阅来覆盖这些代理设置。

操作符必须处理为任何受管理的 Operand 中的 Pod 设置代理设置的环境变量。

先决条件
  • 作为拥有 `dedicated-admin` 角色的用户访问 OpenShift Dedicated 集群。

步骤
  1. 在 Web 控制台中导航到 **操作符 → OperatorHub** 页面。

  2. 选择操作符并单击 **安装**。

  3. 在 **安装操作符** 页面上,修改 `Subscription` 对象以在 `spec` 部分中包含以下一个或多个环境变量

    • HTTP_PROXY

    • HTTPS_PROXY

    • NO_PROXY

    例如

    包含代理设置覆盖的 `Subscription` 对象
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: etcd-config-test
      namespace: openshift-operators
    spec:
      config:
        env:
        - name: HTTP_PROXY
          value: test_http
        - name: HTTPS_PROXY
          value: test_https
        - name: NO_PROXY
          value: test
      channel: clusterwide-alpha
      installPlanApproval: Automatic
      name: etcd
      source: community-operators
      sourceNamespace: openshift-marketplace
      startingCSV: etcdoperator.v0.9.4-clusterwide

    也可以使用空值取消设置这些环境变量,以删除任何先前设置的集群范围或自定义代理设置。

    OLM 将这些环境变量作为一个单元处理;如果至少设置了一个,则认为所有三个都被覆盖,并且不会对已订阅操作符的部署使用集群范围的默认值。

  4. 单击 **安装** 以使操作符可用于选定的命名空间。

  5. 操作符的 CSV 出现在相关命名空间后,您可以验证自定义代理环境变量是否已在部署中设置。例如,使用 CLI

    $ oc get deployment -n openshift-operators \
        etcd-operator -o yaml \
        | grep -i "PROXY" -A 2
    示例输出
            - name: HTTP_PROXY
              value: test_http
            - name: HTTPS_PROXY
              value: test_https
            - name: NO_PROXY
              value: test
            image: quay.io/coreos/etcd-operator@sha256:66a37fd61a06a43969854ee6d3e21088a98b93838e284a6086b13917f96b0d9c
    ...

注入自定义 CA 证书

当拥有dedicated-admin角色的管理员使用 ConfigMap 向集群添加自定义 CA 证书时,集群网络操作符会将用户提供的证书和系统 CA 证书合并到一个捆绑包中。您可以将此合并后的捆绑包注入到在 Operator Lifecycle Manager (OLM) 上运行的操作符中,这在您使用中间人 HTTPS 代理时非常有用。

先决条件
  • 作为拥有 `dedicated-admin` 角色的用户访问 OpenShift Dedicated 集群。

  • 使用 ConfigMap 添加到集群的自定义 CA 证书。

  • 所需的操作符已安装并在 OLM 上运行。

步骤
  1. 在您的操作符订阅所在的命名空间中创建一个空的 ConfigMap,并包含以下标签。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: trusted-ca (1)
      labels:
        config.openshift.io/inject-trusted-cabundle: "true" (2)
    1 ConfigMap 的名称。
    2 请求集群网络操作符注入合并后的捆绑包。

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

  2. 更新Subscription 对象,使其包含一个spec.config 部分,该部分将trusted-ca ConfigMap 作为卷挂载到每个需要自定义 CA 的 Pod 中的每个容器。

    apiVersion: operators.coreos.com/v1alpha1
    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 指定标签以匹配操作符拥有的 Pod。
    3 创建一个trusted-ca 卷。
    4 ca-bundle.crt 作为 ConfigMap 密钥是必需的。
    5 tls-ca-bundle.pem 作为 ConfigMap 路径是必需的。
    6 创建一个trusted-ca 卷挂载。

    操作符的部署可能会无法验证授权并显示x509 certificate signed by unknown authority 错误。即使在使用操作符的订阅注入自定义 CA 后,也可能发生此错误。在这种情况下,您可以使用操作符的订阅将trusted-camountPath 设置为/etc/ssl/certs