8.7. 自定义 cert-manager Operator API 字段

您可以通过覆盖环境变量和参数来为 Red Hat OpenShift API 字段自定义 cert-manager Operator。

警告

要覆盖不支持的参数,您可以在 CertManager 资源中添加 spec.unsupportedConfigOverrides 部分,但不支持使用 spec.unsupportedConfigOverrides

8.7.1. 通过覆盖 cert-manager Operator API 中的环境变量来自定义 cert-manager

您可以通过在 CertManager 资源中添加 spec.controllerConfig 部分来覆盖 Red Hat OpenShift 的 cert-manager Operator 支持的环境变量。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问 OpenShift Container Platform 集群。

流程

  1. 运行以下命令来编辑 CertManager 资源:

    $ oc edit certmanager cluster
  2. 使用以下覆盖参数添加 spec.controllerConfig 部分:

    apiVersion: operator.openshift.io/v1alpha1
    kind: CertManager
    metadata:
      name: cluster
      ...
    spec:
      ...
      controllerConfig:
        overrideEnv:
          - name: HTTP_PROXY
            value: http://<proxy_url> 1
          - name: HTTPS_PROXY
            value: https://<proxy_url> 2
          - name: NO_PROXY
            value: <ignore_proxy_domains> 3
    1 2
    <proxy_url> 替换为代理服务器 URL。
    3
    <ignore_proxy_domains> 替换为以逗号分隔的域列表。代理服务器会忽略这些域。
  3. 保存更改并退出文本编辑器以应用您的更改。

验证

  1. 运行以下命令,验证 cert-manager 控制器 pod 是否已重新部署:

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager

    输出示例

    NAME                          READY   STATUS    RESTARTS   AGE
    cert-manager-bd7fbb9fc-wvbbt  1/1     Running   0          39s

  2. 运行以下命令,验证是否为 cert-manager pod 更新环境变量:

    $ oc get pod <redeployed_cert-manager_controller_pod> -n cert-manager -o yaml

    输出示例

        env:
        ...
        - name: HTTP_PROXY
          value: http://<PROXY_URL>
        - name: HTTPS_PROXY
          value: https://<PROXY_URL>
        - name: NO_PROXY
          value: <IGNORE_PROXY_DOMAINS>

8.7.2. 通过覆盖 cert-manager Operator API 中的参数来自定义 cert-manager

您可以通过在 CertManager 资源中添加 spec.controllerConfig 部分来覆盖 Red Hat OpenShift 的 cert-manager Operator 支持的参数。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问 OpenShift Container Platform 集群。

流程

  1. 运行以下命令来编辑 CertManager 资源:

    $ oc edit certmanager cluster
  2. 使用以下覆盖参数添加 spec.controllerConfig 部分:

    apiVersion: operator.openshift.io/v1alpha1
    kind: CertManager
    metadata:
      name: cluster
      ...
    spec:
      ...
      controllerConfig:
        overrideArgs:
          - '--dns01-recursive-nameservers=<host>:<port>' 1
          - '--dns01-recursive-nameservers-only' 2
          - '--acme-http01-solver-nameservers=<host>:<port>' 3
          - '--v=<verbosity_level>' 4
          - '--metrics-listen-address=<host>:<port>' 5
          - '--issuer-ambient-credentials' 6
      webhookConfig:
        overrideArgs:
          - '--v=4' 7
      cainjectorConfig:
        overrideArgs:
          - '--v=2' 8
    1
    提供以逗号分隔的 <host>:<port> 名称服务器列表来查询 DNS-01 自我检查。例如,--dns01-recursive-nameservers=1.1.1.1:53
    2
    指定只使用递归名称服务器,而不是检查与该域关联的权威名称服务器。
    3
    提供以逗号分隔的 <host>:<port> 名称服务器列表,以查询自动证书管理环境(ACME) HTTP01 自我检查。例如,--acme-http01-solver-nameservers=1.1.1.1:53
    4 7 8
    指定设置日志级别详细程度来确定日志消息的详细程度。
    5
    指定指标端点的主机和端口。默认值为 --metrics-listen-address=0.0.0.0:9402
    6
    在配置 ACME Issuer 以使用 --issuer-ambient-credentials 参数时,您必须使用 ambient 凭证来解决 DNS-01 质询。
  3. 保存更改并退出文本编辑器以应用您的更改。

验证

  • 运行以下命令,验证是否为 cert-manager pod 更新参数:

    $ oc get pods -n cert-manager -o yaml

    输出示例

    ...
      metadata:
        name: cert-manager-6d4b5d4c97-kldwl
        namespace: cert-manager
    ...
      spec:
        containers:
        - args:
          - --acme-http01-solver-nameservers=1.1.1.1:53
          - --cluster-resource-namespace=$(POD_NAMESPACE)
          - --dns01-recursive-nameservers=1.1.1.1:53
          - --dns01-recursive-nameservers-only
          - --leader-election-namespace=kube-system
          - --max-concurrent-challenges=60
          - --metrics-listen-address=0.0.0.0:9042
          - --v=6
    ...
      metadata:
        name: cert-manager-cainjector-866c4fd758-ltxxj
        namespace: cert-manager
    ...
      spec:
        containers:
        - args:
          - --leader-election-namespace=kube-system
          - --v=2
    ...
      metadata:
        name: cert-manager-webhook-6d48f88495-c88gd
        namespace: cert-manager
    ...
      spec:
        containers:
        - args:
          ...
          - --v=4