$ oc edit certmanager cluster
您可以通过覆盖环境变量和参数来自定义适用于 Red Hat OpenShift 的 cert-manager Operator API 字段。
要覆盖不受支持的参数,可以在 `CertManager` 资源中添加 `spec.unsupportedConfigOverrides` 部分,但是使用 `spec.unsupportedConfigOverrides` 不受支持。 |
您可以通过在 `CertManager` 资源中添加 `spec.controllerConfig` 部分来覆盖适用于 Red Hat OpenShift 的 cert-manager Operator 的受支持环境变量。
您可以作为具有 `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> (1)
- name: NO_PROXY
value: <ignore_proxy_domains> (2)
1 | 将 `<proxy_url>` 替换为代理服务器 URL。 |
2 | 将 `<ignore_proxy_domains>` 替换为用逗号分隔的域名列表。代理服务器会忽略这些域名。 |
保存更改并退出文本编辑器以应用更改。
通过运行以下命令来验证 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>
您可以通过在 `CertManager` 资源中添加 `spec.controllerConfig` 部分来覆盖适用于 Red Hat OpenShift 的 cert-manager Operator 的受支持参数。
您可以作为具有 `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' (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' (4)
cainjectorConfig:
overrideArgs:
- '--v=2' (4)
1 | 提供逗号分隔的名称服务器列表以查询 DNS-01 自我检查。名称服务器可以指定为 `<host>:<port>`,例如 `1.1.1.1:53`,或者使用 DNS over HTTPS (DoH),例如 `https://1.1.1.1/dns-query`。 |
2 | 指定仅使用递归名称服务器,而不是检查与该域名关联的权威名称服务器。 |
3 | 提供逗号分隔的 `<host>:<port>` 名称服务器列表以查询自动证书管理环境 (ACME) HTTP01 自我检查。例如,`--acme-http01-solver-nameservers=1.1.1.1:53`。 |
4 | 指定设置日志级别详细程度以确定日志消息的详细程度。 |
5 | 指定指标端点的主机和端口。默认值为 `--metrics-listen-address=0.0.0.0:9402`。 |
6 | 当配置 ACME 发行者以使用环境凭据解决 DNS-01 挑战时,必须使用 `--issuer-ambient-credentials` 参数。 |
从适用于 Red Hat OpenShift 的 cert-manager Operator 1.13.0 及更高版本才开始支持 DNS over HTTPS (DoH)。 |
保存更改并退出文本编辑器以应用更改。
通过运行以下命令来验证是否已更新 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
您可以通过在 `CertManager` 资源中添加 `spec.controllerConfig` 部分来为适用于 Red Hat OpenShift 的 cert-manager Operator 启用 `--enable-certificate-owner-ref` 标志。`--enable-certificate-owner-ref` 标志将证书资源设置为存储 TLS 证书的密钥的所有者。
如果您卸载适用于 Red Hat OpenShift 的 cert-manager Operator 或从集群中删除证书资源,则密钥将自动删除。这可能会导致网络连接问题,具体取决于证书 TLS 密钥的使用位置。 |
您可以作为具有 `cluster-admin` 角色的用户访问 OpenShift Container Platform 集群。
您已安装适用于 Red Hat OpenShift 的 cert-manager Operator 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
安装适用于 Red Hat OpenShift 的 cert-manager Operator 后,您可以从适用于 Red Hat OpenShift 的 cert-manager Operator API 配置 cert-manager 组件(例如 cert-manager 控制器、CA 注射器和 Webhook)的 CPU 和内存限制。
您可以作为具有 `cluster-admin` 角色的用户访问 OpenShift Container Platform 集群。
您已安装适用于 Red Hat OpenShift 的 cert-manager Operator 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 53m
在设置 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: {} (1)
# ...
metadata:
name: cert-manager-webhook
namespace: cert-manager
# ...
spec:
template:
spec:
containers:
- name: cert-manager-webhook
resources: {} (1)
# ...
1 | 默认情况下,spec.resources 字段为空。cert-manager 组件没有 CPU 和内存限制。 |
要为 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 (2)
memory: 16Mi (3)
webhookConfig:
overrideResources:
limits: (5)
cpu: 200m (6)
memory: 64Mi (7)
requests: (8)
cpu: 10m (6)
memory: 16Mi (7)
cainjectorConfig:
overrideResources:
limits: (9)
cpu: 200m (10)
memory: 64Mi (11)
requests: (12)
cpu: 10m (10)
memory: 16Mi (11)
"
1 | 定义 cert-manager 控制器 Pod 中单个容器可以请求的 CPU 和内存最大量。 |
2 | 您可以指定 cert-manager 控制器 Pod 可以请求的 CPU 限制。默认值为 10m 。 |
3 | 您可以指定 cert-manager 控制器 Pod 可以请求的内存限制。默认值为 32Mi 。 |
4 | 定义调度程序为 cert-manager 控制器 Pod 设置的 CPU 和内存量。 |
5 | 定义 CA 注射器 Pod 中单个容器可以请求的 CPU 和内存最大量。 |
6 | 您可以指定 CA 注射器 Pod 可以请求的 CPU 限制。默认值为 10m 。 |
7 | 您可以指定 CA 注射器 Pod 可以请求的内存限制。默认值为 32Mi 。 |
8 | 定义调度程序为 CA 注射器 Pod 设置的 CPU 和内存量。 |
9 | 定义 Webhook Pod 中单个容器可以请求的 CPU 和内存最大量。 |
10 | 您可以指定 Webhook Pod 可以请求的 CPU 限制。默认值为 10m 。 |
11 | 您可以指定 Webhook Pod 可以请求的内存限制。默认值为 32Mi 。 |
12 | 定义调度程序为 Webhook Pod 设置的 CPU 和内存量。 |
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
# ...