4.4. 在 Operator Lifecycle Manager 中配置代理支持
如果在 AWS 集群上配置了全局代理,Operator Lifecycle Manager (OLM)会自动配置使用集群范围代理管理的 Operator。但是,您也可以配置已安装的 Operator 来覆盖全局代理服务器或注入自定义 CA 证书。
其他资源
4.4.1. 覆盖 Operator 的代理设置
如果配置了集群范围的出口代理,使用 Operator Lifecycle Manager(OLM)运行的 Operator 会继承其部署上的集群范围代理设置。具有 dedicated-admin
角色的管理员还可以通过配置 Operator 的订阅来覆盖这些代理设置。
操作员必须为任何受管 Operands 处理 pod 中的代理设置环境变量。
前提条件
-
使用具有
dedicated-admin
角色的用户访问 Red Hat OpenShift Service on AWS 集群。
流程
-
在 Web 控制台中导航至 Operators
OperatorHub 页面。 - 选择 Operator 并点 Install。
在 Install Operator 页面中,修改
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 将这些环境变量作为一个单元处理; 如果至少设置了一个环境变量,则所有三个变量都将被视为覆盖,并且集群范围的默认值不会用于订阅的 Operator 部署。
-
- 点击 Install 使 Operator 可供所选命名空间使用。
当 Operator 的 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 ...
4.4.2. 注入自定义 CA 证书
当具有 dedicated-admin
角色的管理员使用配置映射在集群中添加自定义 CA 证书时,Cluster Network Operator 会将用户提供的证书和系统 CA 证书合并到单个捆绑包中。您可以将这个合并捆绑包注入 Operator Lifecycle Manager (OLM) 上运行的 Operator 中,如果您有一个中间人(man-in-the-middle)HTTPS 代理,这将会有用。
前提条件
-
使用具有
dedicated-admin
角色的用户访问 Red Hat OpenShift Service on AWS 集群。 - 使用配置映射添加自定义 CA 证书至集群。
- 在 OLM 上安装并运行所需的 Operator。
流程
在存在 Operator 订阅的命名空间中创建一个空配置映射,并包括以下标签:
apiVersion: v1 kind: ConfigMap metadata: name: trusted-ca 1 labels: config.openshift.io/inject-trusted-cabundle: "true" 2
创建此配置映射后,它会立即使用合并捆绑包的证书内容填充。
更新
Subscription
对象,使其包含spec.config
部分,该部分将trusted-ca
配置映射作为卷挂载到需要自定义 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
注意Operator 的部署可能无法验证颁发机构,并显示
x509 certificate signed by unknown authority
错误。即使在使用 Operator 订阅时注入自定义 CA,也会发生这个错误。在这种情况下,您可以使用 Operator 的订阅将mountPath
设置为 trusted-ca 的/etc/ssl/certs
。