8.8. cert-manager Operator API フィールドのカスタマイズ

環境変数と引数をオーバーライドすることで、Red Hat OpenShift API フィールドの cert-manager Operator をカスタマイズできます。

警告

サポートされていない引数をオーバーライドするには、CertManager リソースに spec.unsupportedConfigOverrides セクションを追加しますが、spec.unsupportedConfigOverrides の使用はサポートされていません。

8.8.1. cert-manager Operator API から環境変数をオーバーライドして cert-manager をカスタマイズ

CertManager リソースに spec.controllerConfig セクションを追加することで、cert-manager Operator for Red Hat OpenShift でサポートされている環境変数をオーバーライドできます。

前提条件

  • 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.8.2. cert-manager Operator API からの引数をオーバーライドして cert-manager をカスタマイズ

CertManager リソースに spec.controllerConfig セクションを追加することで、cert-manager Operator for Red Hat OpenShift でサポートされる引数をオーバーライドできます。

前提条件

  • 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
    DNS-01 セルフチェックをクエリーする <host>:<port> ネームサーバーのコンマ区切りリストを提供します。たとえば、--dns01-recursive-nameservers=1.1.1.1:53 です。
    2
    そのドメインに関連付けられた権限のあるネームサーバーをチェックする代わりに、再帰的なネームサーバーのみを使用するように指定します。
    3
    Automated Certificate Management Environment (ACME) HTTP01 セルフチェックをクエリーするための <host>:<port> ネームサーバーをコンマ区切りのリストで指定します。たとえば --acme-http01-solver-nameservers=1.1.1.1:53 です。
    4 7 8
    ログの詳細レベルを設定するように設定し、ログメッセージの詳細レベルを決定します。
    5
    メトリクスエンドポイントのホストとポートを指定します。デフォルト値は --metrics-listen-address=0.0.0.0:9402 です。
    6
    アンビエント認証情報を使用して DNS-01 チャレンジを解決するように ACME Issuer を設定する場合は、--issuer-ambient-credentials 引数を使用する必要があります。
  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

8.8.3. 証明書の削除時に TLS シークレットを自動的に削除する

CertManager リソースに spec.controllerConfig セクションを追加することで、cert-manager Operator for Red Hat OpenShift の --enable-certificate-owner-ref フラグを有効にできます。--enable-certificate-owner-ref フラグは、TLS 証明書が保存されているシークレットの所有者として証明書リソースを設定します。

警告

cert-manager Operator for Red Hat OpenShift をアンインストールするか、クラスターから証明書リソースを削除すると、シークレットは自動的に削除されます。証明書 TLS シークレットが使用されている場所によっては、これが原因でネットワーク接続の問題が発生する可能性があります。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。
  • Red Hat OpenShift 1.12.0 以降の cert-manager Operator がインストールされている。

手順

  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

8.8.4. cert-manager コンポーネントの CPU およびメモリー制限をオーバーライドする

cert-manager Operator for Red Hat OpenShift をインストールした後、cert-manager コントローラー、CA インジェクター、Webhook などの cert-manager コンポーネントの cert-manager Operator for Red Hat OpenShift API から CPU およびメモリーの制限を設定できます。

前提条件

  • cluster-admin ロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。
  • Red Hat OpenShift 1.12.0 以降の cert-manager Operator がインストールされている。

手順

  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: {} 2
    # ...
      metadata:
        name: cert-manager-webhook
        namespace: cert-manager
    # ...
      spec:
        template:
          spec:
            containers:
            - name: cert-manager-webhook
              resources: {} 3
    # ...

    1 2 3
    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 5
            memory: 16Mi 6
      webhookConfig:
        overrideResources:
          limits: 7
            cpu: 200m 8
            memory: 64Mi 9
          requests: 10
            cpu: 10m 11
            memory: 16Mi 12
      cainjectorConfig:
        overrideResources:
          limits: 13
            cpu: 200m 14
            memory: 64Mi 15
          requests: 16
            cpu: 10m 17
            memory: 16Mi 18
    "
    1
    cert-manager コントローラー Pod 内の 1 つのコンテナーが要求できる CPU とメモリーの最大量を定義します。
    2 5
    cert-manager コントローラー Pod が要求できる CPU 制限を指定できます。デフォルト値は 10m です。
    3 6
    cert-manager コントローラー Pod が要求できるメモリー制限を指定できます。デフォルト値は 32Mi です。
    4
    cert-manager コントローラー Pod のスケジューラーによって設定される CPU とメモリーの量を定義します。
    7
    CA インジェクター Pod 内の 1 つのコンテナーが要求できる CPU とメモリーの最大量を定義します。
    8 11
    CA インジェクター Pod が要求できる CPU 制限を指定できます。デフォルト値は 10m です。
    9 12
    CA インジェクター Pod が要求できるメモリー制限を指定できます。デフォルト値は 32Mi です。
    10
    CA インジェクター Pod のスケジューラーによって設定される CPU とメモリーの量を定義します。
    13
    Webhook Pod 内の 1 つのコンテナーが要求できる CPU とメモリーの最大量を定義します。
    14 17
    Webhook Pod が要求できる CPU 制限を指定できます。デフォルト値は 10m です。
    15 18
    Webhook Pod が要求できるメモリー制限を指定できます。デフォルト値は 32Mi です。
    16
    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
    # ...