×

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

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

通过覆盖来自 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> (1)
          - name: NO_PROXY
            value: <ignore_proxy_domains> (2)
    1 将 `<proxy_url>` 替换为代理服务器 URL。
    2 将 `<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>

通过覆盖来自 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=<server_address>' (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' (4)
      cainjectorConfig:
        overrideArgs:
          - '--v=2' (4)
    1 提供逗号分隔的名称服务器列表以查询 DNS-01 自我检查。名称服务器可以指定为 `<host>:<port>`,例如 `1.1.1.1:53`,或者使用 DNS over HTTPS (DoH),例如 `https://1.1.1.1/dns-query`。
    2 指定仅使用递归名称服务器,而不是检查与该域名关联的权威名称服务器。
    3 提供逗号分隔的 `<host>:<port>` 名称服务器列表以查询自动证书管理环境 (ACME) HTTP01 自我检查。例如,`--acme-http01-solver-nameservers=1.1.1.1:53`。
    4 指定设置日志级别详细程度以确定日志消息的详细程度。
    5 指定指标端点的主机和端口。默认值为 `--metrics-listen-address=0.0.0.0:9402`。
    6 当配置 ACME 发行者以使用环境凭据解决 DNS-01 挑战时,必须使用 `--issuer-ambient-credentials` 参数。

    从适用于 Red Hat OpenShift 的 cert-manager Operator 1.13.0 及更高版本才开始支持 DNS over HTTPS (DoH)。

  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

在证书删除后自动删除 TLS 密钥

您可以通过在 `CertManager` 资源中添加 `spec.controllerConfig` 部分来为适用于 Red Hat OpenShift 的 cert-manager Operator 启用 `--enable-certificate-owner-ref` 标志。`--enable-certificate-owner-ref` 标志将证书资源设置为存储 TLS 证书的密钥的所有者。

如果您卸载适用于 Red Hat OpenShift 的 cert-manager Operator 或从集群中删除证书资源,则密钥将自动删除。这可能会导致网络连接问题,具体取决于证书 TLS 密钥的使用位置。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问 OpenShift Container Platform 集群。

  • 您已安装适用于 Red Hat OpenShift 的 cert-manager Operator 1.12.0 或更高版本。

步骤
  1. 通过运行以下命令来检查 `Certificate` 对象及其密钥是否可用

    $ oc get certificate
    示例输出
    NAME                                             READY   SECRET                                           AGE
    certificate-from-clusterissuer-route53-ambient   True    certificate-from-clusterissuer-route53-ambient   8h
  2. 通过运行以下命令来编辑 `CertManager` 资源

    $ oc edit certmanager cluster
  3. 添加包含以下覆盖参数的 `spec.controllerConfig` 部分

    apiVersion: operator.openshift.io/v1alpha1
    kind: CertManager
    metadata:
      name: cluster
    # ...
    spec:
    # ...
      controllerConfig:
        overrideArgs:
          - '--enable-certificate-owner-ref'
  4. 保存更改并退出文本编辑器以应用更改。

验证
  • 通过运行以下命令来验证是否已更新 cert-manager 控制器 Pod 的 `--enable-certificate-owner-ref` 标志

    $ oc get pods -l app.kubernetes.io/name=cert-manager -n cert-manager -o yaml
    示例输出
    # ...
      metadata:
        name: cert-manager-6e4b4d7d97-zmdnb
        namespace: cert-manager
    # ...
      spec:
        containers:
        - args:
          - --enable-certificate-owner-ref

覆盖 cert-manager 组件的 CPU 和内存限制

安装适用于 Red Hat OpenShift 的 cert-manager Operator 后,您可以从适用于 Red Hat OpenShift 的 cert-manager Operator API 配置 cert-manager 组件(例如 cert-manager 控制器、CA 注射器和 Webhook)的 CPU 和内存限制。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问 OpenShift Container Platform 集群。

  • 您已安装适用于 Red Hat OpenShift 的 cert-manager Operator 1.12.0 或更高版本。

步骤
  1. 通过输入以下命令来检查 cert-manager 控制器、CA 注射器和 Webhook 的部署是否可用

    $ oc get deployment -n cert-manager
    示例输出
    NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
    cert-manager              1/1     1            1           53m
    cert-manager-cainjector   1/1     1            1           53m
    cert-manager-webhook      1/1     1            1           53m
  2. 在设置 CPU 和内存限制之前,请通过输入以下命令来检查 cert-manager 控制器、CA 注射器和 Webhook 的现有配置

    $ oc get deployment -n cert-manager -o yaml
    示例输出
    # ...
      metadata:
        name: cert-manager
        namespace: cert-manager
    # ...
      spec:
        template:
          spec:
            containers:
            - name: cert-manager-controller
              resources: {} (1)
    # ...
      metadata:
        name: cert-manager-cainjector
        namespace: cert-manager
    # ...
      spec:
        template:
          spec:
            containers:
            - name: cert-manager-cainjector
              resources: {} (1)
    # ...
      metadata:
        name: cert-manager-webhook
        namespace: cert-manager
    # ...
      spec:
        template:
          spec:
            containers:
            - name: cert-manager-webhook
              resources: {} (1)
    # ...
    1 默认情况下,spec.resources 字段为空。cert-manager 组件没有 CPU 和内存限制。
  3. 要为 cert-manager 控制器、CA 注射器和 Webhook 配置 CPU 和内存限制,请输入以下命令:

    $ oc patch certmanager.operator cluster --type=merge -p="
    spec:
      controllerConfig:
        overrideResources:
          limits: (1)
            cpu: 200m (2)
            memory: 64Mi (3)
          requests: (4)
            cpu: 10m (2)
            memory: 16Mi (3)
      webhookConfig:
        overrideResources:
          limits: (5)
            cpu: 200m (6)
            memory: 64Mi (7)
          requests: (8)
            cpu: 10m (6)
            memory: 16Mi (7)
      cainjectorConfig:
        overrideResources:
          limits: (9)
            cpu: 200m (10)
            memory: 64Mi (11)
          requests: (12)
            cpu: 10m (10)
            memory: 16Mi (11)
    "
    1 定义 cert-manager 控制器 Pod 中单个容器可以请求的 CPU 和内存最大量。
    2 您可以指定 cert-manager 控制器 Pod 可以请求的 CPU 限制。默认值为 10m
    3 您可以指定 cert-manager 控制器 Pod 可以请求的内存限制。默认值为 32Mi
    4 定义调度程序为 cert-manager 控制器 Pod 设置的 CPU 和内存量。
    5 定义 CA 注射器 Pod 中单个容器可以请求的 CPU 和内存最大量。
    6 您可以指定 CA 注射器 Pod 可以请求的 CPU 限制。默认值为 10m
    7 您可以指定 CA 注射器 Pod 可以请求的内存限制。默认值为 32Mi
    8 定义调度程序为 CA 注射器 Pod 设置的 CPU 和内存量。
    9 定义 Webhook Pod 中单个容器可以请求的 CPU 和内存最大量。
    10 您可以指定 Webhook Pod 可以请求的 CPU 限制。默认值为 10m
    11 您可以指定 Webhook Pod 可以请求的内存限制。默认值为 32Mi
    12 定义调度程序为 Webhook Pod 设置的 CPU 和内存量。
    示例输出
    certmanager.operator.openshift.io/cluster patched
验证
  1. 验证 cert-manager 组件的 CPU 和内存限制是否已更新。

    $ oc get deployment -n cert-manager -o yaml
    示例输出
    # ...
      metadata:
        name: cert-manager
        namespace: cert-manager
    # ...
      spec:
        template:
          spec:
            containers:
            - name: cert-manager-controller
              resources:
                limits:
                  cpu: 200m
                  memory: 64Mi
                requests:
                  cpu: 10m
                  memory: 16Mi
    # ...
      metadata:
        name: cert-manager-cainjector
        namespace: cert-manager
    # ...
      spec:
        template:
          spec:
            containers:
            - name: cert-manager-cainjector
              resources:
                limits:
                  cpu: 200m
                  memory: 64Mi
                requests:
                  cpu: 10m
                  memory: 16Mi
    # ...
      metadata:
        name: cert-manager-webhook
        namespace: cert-manager
    # ...
      spec:
        template:
          spec:
            containers:
            - name: cert-manager-webhook
              resources:
                limits:
                  cpu: 200m
                  memory: 64Mi
                requests:
                  cpu: 10m
                  memory: 16Mi
    # ...