|
| 1 | +// Module included in the following assemblies: |
| 2 | +// |
| 3 | +// * security/cert_manager_operator/cert-manager-customizing-api-fields.adoc |
| 4 | + |
| 5 | +:_mod-docs-content-type: PROCEDURE |
| 6 | +[id="cert-manager-override-scheduling_{context}"] |
| 7 | += Configuring scheduling overrides for cert-manager components |
| 8 | + |
| 9 | +You can configure the pod scheduling from the {cert-manager-operator} API for the {cert-manager-operator} components such as cert-manager controller, CA injector, and Webhook. |
| 10 | + |
| 11 | +.Prerequisites |
| 12 | + |
| 13 | +* You have access to the {product-title} cluster as a user with the `cluster-admin` role. |
| 14 | +* You have installed version 1.15.0 or later of the {cert-manager-operator}. |
| 15 | +
|
| 16 | +.Procedure |
| 17 | + |
| 18 | +* Update the `certmanager.operator` custom resource to configure pod scheduling overrides for the desired components by running the following command. Use the `overrideScheduling` field under the `controllerConfig`, `webhookConfig`, or `cainjectorConfig` sections to define `nodeSelector` and `tolerations` settings. |
| 19 | ++ |
| 20 | +[source,terminal] |
| 21 | +---- |
| 22 | +$ oc patch certmanager.operator cluster --type=merge -p=" |
| 23 | +spec: |
| 24 | + controllerConfig: |
| 25 | + overrideScheduling: |
| 26 | + nodeSelector: |
| 27 | + node-role.kubernetes.io/control-plane: '' <1> |
| 28 | + tolerations: |
| 29 | + - key: node-role.kubernetes.io/master |
| 30 | + operator: Exists |
| 31 | + effect: NoSchedule <2> |
| 32 | + webhookConfig: |
| 33 | + overrideScheduling: |
| 34 | + nodeSelector: |
| 35 | + node-role.kubernetes.io/control-plane: '' <3> |
| 36 | + tolerations: |
| 37 | + - key: node-role.kubernetes.io/master |
| 38 | + operator: Exists |
| 39 | + effect: NoSchedule <4> |
| 40 | + cainjectorConfig: |
| 41 | + overrideScheduling: |
| 42 | + nodeSelector: |
| 43 | + node-role.kubernetes.io/control-plane: '' <5> |
| 44 | + tolerations: |
| 45 | + - key: node-role.kubernetes.io/master |
| 46 | + operator: Exists |
| 47 | + effect: NoSchedule" <6> |
| 48 | +---- |
| 49 | +<1> Defines the `nodeSelector` for the cert-manager controller deployment. |
| 50 | +<2> Defines the `tolerations` for the cert-manager controller deployment. |
| 51 | +<3> Defines the `nodeSelector` for the cert-manager webhook deployment. |
| 52 | +<4> Defines the `tolerations` for the cert-manager webhook deployment. |
| 53 | +<5> Defines the `nodeSelector` for the cert-manager cainjector deployment. |
| 54 | +<6> Defines the `tolerations` for the cert-manager cainjector deployment. |
| 55 | +
|
| 56 | +
|
| 57 | +.Verification |
| 58 | + |
| 59 | +. Verify pod scheduling settings for `cert-manager` pods: |
| 60 | + |
| 61 | +.. Check the deployments in the `cert-manager` namespace to confirm they have the correct `nodeSelector` and `tolerations` by running the following command: |
| 62 | ++ |
| 63 | +[source,terminal] |
| 64 | +---- |
| 65 | +$ oc get pods -n cert-manager -o wide |
| 66 | +---- |
| 67 | ++ |
| 68 | +.Example output |
| 69 | +[source,terminal] |
| 70 | +---- |
| 71 | +NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES |
| 72 | +cert-manager-58d9c69db4-78mzp 1/1 Running 0 10m 10.129.0.36 ip-10-0-1-106.ec2.internal <none> <none> |
| 73 | +cert-manager-cainjector-85b6987c66-rhzf7 1/1 Running 0 11m 10.128.0.39 ip-10-0-1-136.ec2.internal <none> <none> |
| 74 | +cert-manager-webhook-7f54b4b858-29bsp 1/1 Running 0 11m 10.129.0.35 ip-10-0-1-106.ec2.internal <none> <none> |
| 75 | +---- |
| 76 | + |
| 77 | +.. Check the `nodeSelector` and `tolerations` settings applied to deployments by running the following command: |
| 78 | ++ |
| 79 | +[source,terminal] |
| 80 | +---- |
| 81 | +$ 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}' |
| 82 | +---- |
| 83 | ++ |
| 84 | +.Example output |
| 85 | +[source,terminal] |
| 86 | +---- |
| 87 | +cert-manager |
| 88 | +{"kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":""} |
| 89 | +[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] |
| 90 | +
|
| 91 | +cert-manager-cainjector |
| 92 | +{"kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":""} |
| 93 | +[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] |
| 94 | +
|
| 95 | +cert-manager-webhook |
| 96 | +{"kubernetes.io/os":"linux","node-role.kubernetes.io/control-plane":""} |
| 97 | +[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Exists"}] |
| 98 | +---- |
| 99 | + |
| 100 | +. Verify pod scheduling events in the `cert-manager` namespace by running the following command: |
| 101 | ++ |
| 102 | +[source,terminal] |
| 103 | +---- |
| 104 | +$ oc get events -n cert-manager --field-selector reason=Scheduled |
| 105 | +---- |
0 commit comments