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: 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" "オーバーライド可能なスケジューリングパラメーターの詳細は、「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