9.5. CertManager カスタムリソースを使用して cert-manager Operator をカスタマイズする
cert-manager Operator for Red Hat OpenShift をインストールした後、CertManager カスタムリソース (CR) を設定することで、次のアクションを実行できます。
- cert-manager コントローラー、CA インジェクター、Webhook などの cert-manager コンポーネントの動作を変更するには、引数を設定します。
- コントローラー Pod の環境変数を設定します。
- CPU とメモリーの使用量を管理するために、リソース要求と制限を定義します。
- クラスター内で Pod が実行される場所を制御するためのスケジューリングルールを設定します。
CertManager CR YAML ファイルの例
apiVersion: operator.openshift.io/v1alpha1
kind: CertManager
metadata:
name: cluster
spec:
controllerConfig:
overrideArgs:
- "--dns01-recursive-nameservers=8.8.8.8:53,1.1.1.1:53"
overrideEnv:
- name: HTTP_PROXY
value: http://proxy.example.com:8080
overrideResources:
limits:
cpu: "200m"
memory: "512Mi"
requests:
cpu: "100m"
memory: "256Mi"
overrideScheduling:
nodeSelector:
custom: "label"
tolerations:
- key: "key1"
operator: "Equal"
value: "value1"
effect: "NoSchedule"
overrideReplicas: 2
#...
webhookConfig:
overrideArgs:
#...
overrideResources:
#...
overrideScheduling:
#...
overrideReplicas:
#...
cainjectorConfig:
overrideArgs:
#...
overrideResources:
#...
overrideScheduling:
#...
overrideReplicas:
#...
サポートされていない引数をオーバーライドするには、CertManager リソースに spec.unsupportedConfigOverrides セクションを追加しますが、spec.unsupportedConfigOverrides の使用はサポートされていません。
9.5.1. CertManager カスタムリソースのフィールドの説明 リンクのコピーリンクがクリップボードにコピーされました!
CertManager カスタムリソース (CR) を使用して、cert-manager Operator for Red Hat OpenShift の次のコアコンポーネントを設定できます。
-
cert-manager コントローラー:
spec.controllerConfigフィールドを使用して、cert‑manager コントローラー Pod を設定できます。 -
Webhook:
spec.webhookConfigフィールドを使用して、検証および変更リクエストを処理する Webhook Pod を設定できます。 -
CA インジェクター:
spec.cainjectorConfigフィールドを使用して、CA インジェクター Pod を設定できます。
9.5.1.1. cert-manager コンポーネントの CertManager CR における共通の設定可能フィールド リンクのコピーリンクがクリップボードにコピーされました!
次の表は、CertManager CR の spec.controllerConfig、spec.webhookConfig、および spec.cainjectorConfig セクションで設定できる共通フィールドを示しています。
| フィールド | 型 | 説明 |
|---|---|---|
|
|
| cert-manager コンポーネントでサポートされている引数をオーバーライドできます。 |
|
|
| cert-manager コントローラーでサポートされている環境変数をオーバーライドできます。このフィールドは、cert-manager コントローラーコンポーネントでのみサポートされます。 |
|
|
|
cert-manager コンポーネントのレプリカ数を設定できます。デフォルト値は
詳細は、High Availability を参照してください。 |
|
|
| cert-manager コンポーネントの CPU およびメモリーの制限を設定できます。 |
|
|
| cert-manager コンポーネントの Pod スケジューリング制約を設定できます。 |
9.5.1.2. cert-manager コンポーネントのオーバーライド可能な引数 リンクのコピーリンクがクリップボードにコピーされました!
CertManager CR の spec.controllerConfig、spec.webhookConfig、および spec.cainjectorConfig セクションで、cert-manager コンポーネントのオーバーライド可能な引数を設定できます。
次の表は、cert-manager コンポーネントのオーバーライド可能な引数について説明しています。
| 引数 | コンポーネント | 説明 |
|---|---|---|
|
| Controller |
DNS-01 セルフチェックをクエリーするネームサーバーのコンマ区切りリストを指定します。ネームサーバーは、 注記 DNS over HTTPS (DoH) は、cert-manager Operator for Red Hat OpenShift バージョン 1.13.0 以降でのみサポートされます。 |
|
| Controller | そのドメインに関連付けられた権限のあるネームサーバーをチェックする代わりに、再帰的なネームサーバーのみを使用するように指定します。 |
|
| Controller |
Automated Certificate Management Environment (ACME) HTTP01 セルフチェックをクエリーするための |
|
| Controller |
メトリクスエンドポイントのホストとポートを指定します。デフォルト値は |
|
| Controller | この引数を使用すると、アンビエント認証情報を使用して DNS-01 チャレンジを解決するように ACME Issuer を設定できます。 |
|
| Controller | この引数は、証明書リソースを、TLS 証明書が保存されているシークレットの所有者として設定します。詳細は、「証明書の削除時に TLS シークレットを自動的に削除する」を参照してください。 |
|
| Controller |
ACME HTTP-01 ソルバー Pod の最大 CPU 制限を定義します。デフォルト値は |
|
| Controller |
ACME HTTP-01 ソルバー Pod の最大メモリー制限を定義します。デフォルト値は |
|
| Controller |
ACME HTTP-01 ソルバー Pod の最小 CPU 要求を定義します。デフォルト値は |
|
| Controller |
ACME HTTP-01 ソルバー Pod の最小メモリー要求を定義します。デフォルト値は |
|
| コントローラー、Webhook、CA インジェクター | ログメッセージの冗長性を決定するために、ログレベルの詳細度を指定します。 |
9.5.1.3. cert-manager コントローラーのオーバーライド可能な環境変数 リンクのコピーリンクがクリップボードにコピーされました!
CertManager CR の spec.controllerConfig.overrideEnv フィールドで、cert-manager コントローラーのオーバーライド可能な環境変数を設定できます。
次の表は、cert-manager コントローラーのオーバーライド可能な環境変数について説明しています。
| 環境変数 | 説明 |
|---|---|
|
| 送信 HTTP 要求のプロキシーサーバー。 |
|
| 送信 HTTPS 要求のプロキシーサーバー。 |
|
| プロキシーをバイパスするホストのコンマ区切りリスト。 |
9.5.1.4. cert-manager コンポーネントのオーバーライド可能なリソースパラメーター リンクのコピーリンクがクリップボードにコピーされました!
CertManager CR の spec.controllerConfig、spec.webhookConfig、および spec.cainjectorConfig セクションで、cert-manager コンポーネントの CPU およびメモリー制限を設定できます。
次の表は、cert-manager コンポーネントのオーバーライド可能なリソースパラメーターについて説明しています。
| フィールド | 説明 |
|---|---|
|
| コンポーネント Pod が使用できる CPU の最大量を定義します。 |
|
| コンポーネント Pod が使用できるメモリーの最大量を定義します。 |
|
| コンポーネント Pod のスケジューラーによって要求される CPU の最小量を定義します。 |
|
| コンポーネント Pod のスケジューラーによって要求されるメモリーの最小量を定義します。 |
9.5.1.5. cert-manager コンポーネントのオーバーライド可能なスケジューリングパラメーター リンクのコピーリンクがクリップボードにコピーされました!
CertManager CR の spec.controllerConfig、spec.webhookConfig フィールド、および spec.cainjectorConfig セクションで、cert-manager コンポーネントの Pod スケジューリング制約を設定できます。
次の表は、cert-manager コンポーネントの Pod スケジューリングパラメーターについて説明しています。
| フィールド | 説明 |
|---|---|
|
| Pod を特定のノードに制限するためのキーと値のペア。 |
|
| taint されたノードで Pod をスケジュールするための toleration リスト。 |
9.5.2. cert-manager Operator API から環境変数をオーバーライドして cert-manager をカスタマイズする リンクのコピーリンクがクリップボードにコピーされました!
CertManager リソースに spec.controllerConfig セクションを追加することで、cert-manager Operator for Red Hat OpenShift でサポートされている環境変数をオーバーライドできます。
前提条件
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。
手順
次のコマンドを実行して、
CertManagerリソースを編集します。$ oc edit certmanager cluster次のオーバーライド引数を指定して、
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 注記オーバーライド可能な環境変数の詳細は、「CertManager カスタムリソースのフィールドの説明」の「cert-manager コンポーネントのオーバーライド可能な環境変数」を参照してください。
- 変更を保存してテキストエディターを終了し、変更を適用します。
検証
次のコマンドを実行して、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次のコマンドを実行して、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>
9.5.3. cert-manager Operator API から引数をオーバーライドして cert-manager をカスタマイズする リンクのコピーリンクがクリップボードにコピーされました!
CertManager リソースに spec.controllerConfig セクションを追加することで、cert-manager Operator for Red Hat OpenShift でサポートされる引数をオーバーライドできます。
前提条件
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。
手順
次のコマンドを実行して、
CertManagerリソースを編集します。$ oc edit certmanager cluster次のオーバーライド引数を指定して、
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' - '--acme-http01-solver-nameservers=<host>:<port>' - '--v=<verbosity_level>' - '--metrics-listen-address=<host>:<port>' - '--issuer-ambient-credentials' - '--acme-http01-solver-resource-limits-cpu=<quantity>' - '--acme-http01-solver-resource-limits-memory=<quantity>' - '--acme-http01-solver-resource-request-cpu=<quantity>' - '--acme-http01-solver-resource-request-memory=<quantity>' webhookConfig: overrideArgs: - '--v=<verbosity_level>' cainjectorConfig: overrideArgs: - '--v=<verbosity_level>'- 1
- オーバーライド可能な引数の詳細は、「CertManager カスタムリソースのフィールドの説明」の「cert-manager コンポーネントのオーバーライド可能な引数」を参照してください。
- 変更を保存してテキストエディターを終了し、変更を適用します。
検証
次のコマンドを実行して、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
9.5.4. 証明書の削除時に 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 クラスターにアクセスできる。 - cert-manager Operator for Red Hat OpenShift のバージョン 1.12.0 以降がインストールされている。
手順
次のコマンドを実行して、
Certificateオブジェクトとそのシークレットが利用可能であることを確認します。$ oc get certificate出力例
NAME READY SECRET AGE certificate-from-clusterissuer-route53-ambient True certificate-from-clusterissuer-route53-ambient 8h次のコマンドを実行して、
CertManagerリソースを編集します。$ oc edit certmanager cluster次のオーバーライド引数を指定して、
spec.controllerConfigセクションを追加します。apiVersion: operator.openshift.io/v1alpha1 kind: CertManager metadata: name: cluster # ... spec: # ... controllerConfig: overrideArgs: - '--enable-certificate-owner-ref'- 変更を保存してテキストエディターを終了し、変更を適用します。
検証
次のコマンドを実行して、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
9.5.5. 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 クラスターにアクセスできる。 - cert-manager Operator for Red Hat OpenShift のバージョン 1.12.0 以降がインストールされている。
手順
次のコマンドを入力して、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 53mCPU とメモリーの制限を設定する前に、次のコマンドを入力して 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 # ...cert-manager コントローラー、CA インジェクター、Webhook の CPU およびメモリー制限を設定するには、次のコマンドを入力します。
$ oc patch certmanager.operator cluster --type=merge -p=" spec: controllerConfig: overrideResources:1 limits: cpu: 200m memory: 64Mi requests: cpu: 10m memory: 16Mi webhookConfig: overrideResources: limits: cpu: 200m memory: 64Mi requests: cpu: 10m memory: 16Mi cainjectorConfig: overrideResources: limits: cpu: 200m memory: 64Mi requests: cpu: 10m memory: 16Mi "- 1
- オーバーライド可能なリソースパラメーターの詳細は、「CertManager カスタムリソースのフィールドの説明」の「cert-manager コンポーネントのオーバーライド可能なリソースパラメーター」を参照してください。
出力例
certmanager.operator.openshift.io/cluster patched
検証
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 # ...
9.5.6. cert-manager コンポーネントのスケジュールオーバーライドを設定する リンクのコピーリンクがクリップボードにコピーされました!
cert-manager コントローラー、CA インジェクター、Webhook などの cert-manager Operator for Red Hat OpenShift コンポーネントの Pod スケジューリングを、cert-manager Operator for Red Hat OpenShift API から設定できます。
前提条件
-
cluster-adminロールを持つユーザーとして OpenShift Container Platform クラスターにアクセスできる。 - cert-manager Operator for Red Hat OpenShift のバージョン 1.15.0 以降がインストールされている。
手順
次のコマンドを実行して
certmanager.operatorカスタムリソースを更新し、目的のコンポーネントの Pod スケジューリングオーバーライドを設定します。nodeSelectorおよびtolerations設定を定義するには、controllerConfig、webhookConfig、またはcainjectorConfigセクションのoverrideSchedulingフィールドを使用します。$ oc patch certmanager.operator cluster --type=merge -p=" spec: controllerConfig: overrideScheduling:1 nodeSelector: node-role.kubernetes.io/control-plane: '' tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule webhookConfig: overrideScheduling: nodeSelector: node-role.kubernetes.io/control-plane: '' tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule cainjectorConfig: overrideScheduling: nodeSelector: node-role.kubernetes.io/control-plane: '' tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule" "- 1
- オーバーライド可能なスケジューリングパラメーターの詳細は、「CertManager カスタムリソースのフィールドの説明」の「cert-manager コンポーネントのオーバーライド可能なスケジューリングパラメーター」を参照してください。
検証
cert-managerPod の Pod スケジューリング設定を検証します。次のコマンドを実行して、
cert-managernamespace のデプロイメントをチェックし、正しいnodeSelectorとtolerationsがあることを確認します。$ oc get pods -n cert-manager -o wide出力例
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES cert-manager-58d9c69db4-78mzp 1/1 Running 0 10m 10.129.0.36 ip-10-0-1-106.ec2.internal <none> <none> cert-manager-cainjector-85b6987c66-rhzf7 1/1 Running 0 11m 10.128.0.39 ip-10-0-1-136.ec2.internal <none> <none> cert-manager-webhook-7f54b4b858-29bsp 1/1 Running 0 11m 10.129.0.35 ip-10-0-1-106.ec2.internal <none> <none>次のコマンドを実行して、デプロイメントに適用されている
nodeSelectorとtolerationsの設定を確認します。$ oc get deployments -n cert-manager -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{.spec.template.spec.nodeSelector}{"\n"}{.spec.template.spec.tolerations}{"\n\n"}{end}'出力例
cert-manager {"kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":""} [{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] cert-manager-cainjector {"kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":""} [{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] cert-manager-webhook {"kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":""} [{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}]
次のコマンドを実行して、
cert-managernamespace 内の Pod スケジューリングイベントを検証します。$ oc get events -n cert-manager --field-selector reason=Scheduled