1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00

OSDOCS#15157: Added new overridable arguments to the cert-manager controller

This commit is contained in:
srir
2025-08-04 14:27:18 +05:30
parent 649c738a2d
commit 3d64a71aeb
6 changed files with 309 additions and 69 deletions

View File

@@ -6,7 +6,7 @@
[id="cert-manager-configure-cpu-memory_{context}"]
= Overriding CPU and memory limits for the cert-manager components
After installing the {cert-manager-operator}, you can configure the CPU and memory limits from the {cert-manager-operator} API for the cert-manager components such as cert-manager controller, CA injector, and Webhook.
After installing the {cert-manager-operator}, you can configure the CPU and memory limits from the {cert-manager-operator} API for the cert-manager components, such as the cert-manager controller, CA injector, and Webhook.
.Prerequisites
@@ -80,48 +80,37 @@ $ oc get deployment -n cert-manager -o yaml
. To configure the CPU and memory limits for the cert-manager controller, CA injector, and Webhook, enter the following command:
+
[source,yaml]
[source,terminal]
----
$ 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>
overrideResources: <1>
limits:
cpu: 200m
memory: 64Mi
requests:
cpu: 10m
memory: 16Mi
webhookConfig:
overrideResources:
limits: <5>
cpu: 200m <6>
memory: 64Mi <7>
requests: <8>
cpu: 10m <6>
memory: 16Mi <7>
limits:
cpu: 200m
memory: 64Mi
requests:
cpu: 10m
memory: 16Mi
cainjectorConfig:
overrideResources:
limits: <9>
cpu: 200m <10>
memory: 64Mi <11>
requests: <12>
cpu: 10m <10>
memory: 16Mi <11>
limits:
cpu: 200m
memory: 64Mi
requests:
cpu: 10m
memory: 16Mi
"
----
<1> Defines the maximum amount of CPU and memory that a single container in a cert-manager controller pod can request.
<2> You can specify the CPU limit that a cert-manager controller pod can request. The default value is `10m`.
<3> You can specify the memory limit that a cert-manager controller pod can request. The default value is `32Mi`.
<4> Defines the amount of CPU and memory set by scheduler for the cert-manager controller pod.
<5> Defines the maximum amount of CPU and memory that a single container in a CA injector pod can request.
<6> You can specify the CPU limit that a CA injector pod can request. The default value is `10m`.
<7> You can specify the memory limit that a CA injector pod can request. The default value is `32Mi`.
<8> Defines the amount of CPU and memory set by scheduler for the CA injector pod.
<9> Defines the maximum amount of CPU and memory Defines the maximum amount of CPU and memory that a single container in a Webhook pod can request.
<10> You can specify the CPU limit that a Webhook pod can request. The default value is `10m`.
<11> You can specify the memory limit that a Webhook pod can request. The default value is `32Mi`.
<12> Defines the amount of CPU and memory set by scheduler for the Webhook pod.
<1> For information about the overridable resource parameters, see "Overridable resource parameters for the cert-manager components" in "Explanation of fields in the CertManager custom resource".
+
.Example output
[source,terminal]

View File

@@ -0,0 +1,178 @@
// Module included in the following assemblies:
//
// * security/cert_manager_operator/cert-manager-customizing-api-fields.adoc
:_mod-docs-content-type: CONCEPT
[id="cert-manager-explanation-of-certmanager-cr-fields_{context}"]
= Explanation of fields in the CertManager custom resource
You can use the `CertManager` custom resource (CR) to configure the following core components of the {cert-manager-operator}:
* Cert-manager controller: You can use the `spec.controllerConfig` field to configure the certmanager controller pod.
* Webhook: You can use the `spec.webhookConfig` field to configure the webhook pod, which handles validation and mutation requests.
* CA injector: You can use the `spec.cainjectorConfig` field to configure the CA injector pod.
[id="cert-manager-common-configuration-fields_{context}"]
== Common configurable fields in the CertManager CR for the cert-manager components
The following table lists the common fields that you can configure in the `spec.controllerConfig`, `spec.webhookConfig`, and `spec.cainjectorConfig` sections in the `CertManager` CR.
.Common configurable fields in the CertManager CR for the cert-manager components
[cols=".^2,.^2,.^6a",options="header"]
|====
|Field|Type|Description
|`overrideArgs`
|`string`
|You can override the supported arguments for the cert-manager components.
|`overrideEnv`
|`dict`
|You can override the supported environment variables for the cert-manager controller. This field is only supported for the cert-manager controller component.
|`overrideResources`
|`object`
|You can configure the CPU and memory limits for the cert-manager components.
|`overrideScheduling`
|`object`
|You can configure the pod scheduling constraints for the cert-manager components.
|====
[id="cert-manager-overridable-arguments_{context}"]
== Overridable arguments for the cert-manager components
You can configure the overridable arguments for the cert-manager components in the `spec.controllerConfig`, `spec.webhookConfig`, and `spec.cainjectorConfig` sections in the `CertManager` CR.
The following table describes the overridable arguments for the cert-manager components:
.Overridable arguments the cert-manager components
[cols=".^5a,.^2,.^4a",options="header"]
|====
|Argument|Component|Description
|`--dns01-recursive-nameservers=<server_address>`
|Controller
|Provide a comma-separated list of nameservers to query for the DNS-01 self check. The nameservers can be specified either as `<host>:<port>`, for example, `1.1.1.1:53`, or use DNS over HTTPS (DoH), for example, `\https://1.1.1.1/dns-query`.
[NOTE]
====
DNS over HTTPS (DoH) is supported starting only from {cert-manager-operator} version 1.13.0 and later.
====
|`--dns01-recursive-nameservers-only`
|Controller
|Specify to only use recursive nameservers instead of checking the authoritative nameservers associated with that domain.
|`--acme-http01-solver-nameservers=<host>:<port>`
|Controller
|Provide a comma-separated list of `<host>:<port>` nameservers to query for the Automated Certificate Management Environment (ACME) HTTP01 self check. For example, `--acme-http01-solver-nameservers=1.1.1.1:53`.
|`--metrics-listen-address=<host>:<port>`
|Controller
|Specify the host and port for the metrics endpoint. The default value is `--metrics-listen-address=0.0.0.0:9402`.
|`--issuer-ambient-credentials`
|Controller
|You can use this argument to configure an ACME Issuer to solve DNS-01 challenges by using ambient credentials.
|`--enable-certificate-owner-ref`
|Controller
|This argument sets the certificate resource as an owner of the secret where the TLS certificate is stored. For more information, see "Deleting a TLS secret automatically upon Certificate removal".
|`--acme-http01-solver-resource-limits-cpu`
|Controller
|Defines the maximum CPU limit for ACME HTTP01 solver pods. The default value is `100m`.
|`--acme-http01-solver-resource-limits-memory`
|Controller
|Defines the maximum memory limit for ACME HTTP01 solver pods. The default value is `64Mi`.
|`--acme-http01-solver-resource-request-cpu`
|Controller
|Defines the minimum CPU request for ACME HTTP01 solver pods. The default value is `10m`.
|`--acme-http01-solver-resource-request-memory`
|Controller
|Defines the minimum memory request for ACME HTTP01 solver pods. The default value is `64Mi`.
|`--v=<verbosity_level>`
|Controller, Webhook, CA injector
|Specify the log level verbosity to determine the verbosity of log messages.
|====
[id="cert-manager-overridable-env-variables_{context}"]
== Overridable environment variables for the cert-manager controller
You can configure the overridable environment variables for the cert-manager controller in the `spec.controllerConfig.overrideEnv` field in the `CertManager` CR.
The following table describes the overridable environment variables for the cert-manager controller:
.Overridable environment variables for the cert-manager controller
[cols=".^2,.^2",options="header"]
|====
|Environment variable|Description
|`HTTP_PROXY`
|Proxy server for outgoing HTTP requests.
|`HTTPS_PROXY`
|Proxy server for outgoing HTTPS requests.
|`NO_PROXY`
|Commaseparated list of hosts that bypass the proxy.
|====
[id="cert-manager-overridable-resource-parameters_{context}"]
== Overridable resource parameters for the cert-manager components
You can configure the CPU and memory limits for the cert-manager components in the `spec.controllerConfig`, `spec.webhookConfig`, and `spec.cainjectorConfig` sections in the `CertManager` CR.
The following table describes the overridable resource parameters for the cert-manager components:
.Overridable resource parameters for the cert-manager components
[cols=".^2,.^2",options="header"]
|====
|Field|Description
|`overrideResources.limits.cpu`
|Defines the maximum amount of CPU that a component pod can use.
|`overrideResources.limits.memory`
|Defines the maximum amount of memory that a component pod can use.
|`overrideResources.requests.cpu`
|Defines the minimum amount of CPU requested by the scheduler for a component pod.
|`overrideResources.requests.memory`
|Defines the minimum amount of memory requested by the scheduler for a component pod.
|====
[id="cert-manager-overridable-scheduling-parameters_{context}"]
== Overridable scheduling parameters for the cert-manager components
You can configure the pod scheduling constrainsts for the cert-manager components in the `spec.controllerConfig`, `spec.webhookConfig` field, and `spec.cainjectorConfig` sections in the `CertManager` CR.
The following table describes the pod scheduling parameters for the cert-manager components:
.Overridable scheduling parameters for the cert-manager components
[cols=".^2,.^2",options="header"]
|====
|Field|Description
|`overrideScheduling.nodeSelector`
|Keyvalue pairs to constrain pods to specific nodes.
|`overrideScheduling.tolerations`
|List of tolerations to schedule pods on tainted nodes.
|====

View File

@@ -35,29 +35,23 @@ 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>
- '--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=4' <4>
- '--v=<verbosity_level>'
cainjectorConfig:
overrideArgs:
- '--v=2' <4>
- '--v=<verbosity_level>'
----
<1> Provide a comma-separated list of nameservers to query for the DNS-01 self check. The nameservers can be specified either as `<host>:<port>`, for example, `1.1.1.1:53`, or use DNS over HTTPS (DoH), for example, `https://1.1.1.1/dns-query`.
<2> Specify to only use recursive nameservers instead of checking the authoritative nameservers associated with that domain.
<3> Provide a comma-separated list of `<host>:<port>` nameservers to query for the Automated Certificate Management Environment (ACME) HTTP01 self check. For example, `--acme-http01-solver-nameservers=1.1.1.1:53`.
<4> Specify to set the log level verbosity to determine the verbosity of log messages.
<5> Specify the host and port for the metrics endpoint. The default value is `--metrics-listen-address=0.0.0.0:9402`.
<6> You must use the `--issuer-ambient-credentials` argument when configuring an ACME Issuer to solve DNS-01 challenges by using ambient credentials.
+
[NOTE]
====
DNS over HTTPS (DoH) is supported starting only from {cert-manager-operator} version 1.13.0 and later.
====
<1> For information about the overridable aruguments, see "Overridable arguments for the cert-manager components" in "Explanation of fields in the CertManager custom resource".
. Save your changes and quit the text editor to apply your changes.

View File

@@ -43,6 +43,11 @@ spec:
----
<1> Replace `<proxy_url>` with the proxy server URL.
<2> Replace `<ignore_proxy_domains>` with a comma separated list of domains. These domains are ignored by the proxy server.
+
[NOTE]
====
For more information about the overridable environment variables, see "Overridable environment variables for the cert-manager components" in "Explanation of fields in the CertManager custom resource".
====
. Save your changes and quit the text editor to apply your changes.

View File

@@ -6,7 +6,7 @@
[id="cert-manager-override-scheduling_{context}"]
= Configuring scheduling overrides for cert-manager components
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.
You can configure the pod scheduling from the {cert-manager-operator} API for the {cert-manager-operator} components, such as the cert-manager controller, CA injector, and Webhook.
.Prerequisites
@@ -22,37 +22,32 @@ You can configure the pod scheduling from the {cert-manager-operator} API for th
$ oc patch certmanager.operator cluster --type=merge -p="
spec:
controllerConfig:
overrideScheduling:
overrideScheduling: <1>
nodeSelector:
node-role.kubernetes.io/control-plane: '' <1>
node-role.kubernetes.io/control-plane: ''
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule <2>
effect: NoSchedule
webhookConfig:
overrideScheduling:
nodeSelector:
node-role.kubernetes.io/control-plane: '' <3>
node-role.kubernetes.io/control-plane: ''
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule <4>
effect: NoSchedule
cainjectorConfig:
overrideScheduling:
nodeSelector:
node-role.kubernetes.io/control-plane: '' <5>
node-role.kubernetes.io/control-plane: ''
tolerations:
- key: node-role.kubernetes.io/master
operator: Exists
effect: NoSchedule" <6>
effect: NoSchedule"
"
----
<1> Defines the `nodeSelector` for the cert-manager controller deployment.
<2> Defines the `tolerations` for the cert-manager controller deployment.
<3> Defines the `nodeSelector` for the cert-manager webhook deployment.
<4> Defines the `tolerations` for the cert-manager webhook deployment.
<5> Defines the `nodeSelector` for the cert-manager cainjector deployment.
<6> Defines the `tolerations` for the cert-manager cainjector deployment.
<1> For information about the overridable scheduling parameters, see "Overridable scheduling parameters for the cert-manager components" in "Explanation of fields in the CertManager custom resource".
.Verification

View File

@@ -1,24 +1,103 @@
:_mod-docs-content-type: ASSEMBLY
[id="cert-manager-customizing-api-fields"]
= Customizing cert-manager Operator API fields
= Customizing the cert-manager Operator by using the CertManager custom resource
include::_attributes/common-attributes.adoc[]
:context: cert-manager-customizing-api-fields
toc::[]
You can customize the {cert-manager-operator} API fields by overriding environment variables and arguments.
After installing the {cert-manager-operator}, you can perform the following actions by configuring the `CertManager` custom resource (CR):
* Configure the arguments to modify the behavior of the cert-manager components, such as the cert-manager controller, CA injector, and Webhook.
* Set environment variables for the controller pod.
* Define resource requests and limits to manage CPU and memory usage.
* Configure scheduling rules to control where pods run in your cluster.
.Example CertManager CR YAML file
[source,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"
webhookConfig:
overrideArgs:
#...
overrideResources:
#...
overrideScheduling:
#...
cainjectorConfig:
overrideArgs:
#...
overrideResources:
#...
overrideScheduling:
#...
----
[WARNING]
====
To override unsupported arguments, you can add `spec.unsupportedConfigOverrides` section in the `CertManager` resource, but using `spec.unsupportedConfigOverrides` is unsupported.
====
include::modules/cert-manager-explanation-of-certmanager-cr-fields.adoc[leveloffset=+1]
[role="_additional-resources"]
.Additional resources
* xref:../../security/cert_manager_operator/cert-manager-customizing-api-fields.adoc#cert-manager-override-flag-controller_cert-manager-customizing-api-fields[Deleting a TLS secret automatically upon Certificate removal]
include::modules/cert-manager-override-environment-variables.adoc[leveloffset=+1]
[role="_additional-resources"]
.Additional resources
* xref:../../security/cert_manager_operator/cert-manager-customizing-api-fields.adoc#cert-manager-explanation-of-certmanager-cr-fields_cert-manager-customizing-api-fields[Explanation of fields in the CertManager custom resource]
include::modules/cert-manager-override-arguments.adoc[leveloffset=+1]
[role="_additional-resources"]
.Additional resources
* xref:../../security/cert_manager_operator/cert-manager-customizing-api-fields.adoc#cert-manager-explanation-of-certmanager-cr-fields_cert-manager-customizing-api-fields[Explanation of fields in the CertManager custom resource]
include::modules/cert-manager-override-flag-controller.adoc[leveloffset=+1]
include::modules/cert-manager-configure-cpu-memory.adoc[leveloffset=+1]
include::modules/cert-manager-override-scheduling.adoc[leveloffset=+1]
[role="_additional-resources"]
.Additional resources
* xref:../../security/cert_manager_operator/cert-manager-customizing-api-fields.adoc#cert-manager-explanation-of-certmanager-cr-fields_cert-manager-customizing-api-fields[Explanation of fields in the CertManager custom resource]
include::modules/cert-manager-override-scheduling.adoc[leveloffset=+1]
[role="_additional-resources"]
.Additional resources
* xref:../../security/cert_manager_operator/cert-manager-customizing-api-fields.adoc#cert-manager-explanation-of-certmanager-cr-fields_cert-manager-customizing-api-fields[Explanation of fields in the CertManager custom resource]