9.5. CertManager 사용자 정의 리소스를 사용하여 cert-manager 연산자 사용자 정의
Red Hat OpenShift용 cert-manager Operator를 설치한 후 CertManager 사용자 정의 리소스(CR)를 구성하여 다음 작업을 수행할 수 있습니다.
- cert-manager 컨트롤러, CA 인젝터, Webhook 등 cert-manager 구성 요소의 동작을 수정하기 위한 인수를 구성합니다.
- 컨트롤러 포드에 대한 환경 변수를 설정합니다.
- CPU 및 메모리 사용을 관리하기 위해 리소스 요청과 제한을 정의합니다.
- 클러스터에서 포드가 실행되는 위치를 제어하기 위해 스케줄링 규칙을 구성합니다.
예제 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)를 사용하여 Red Hat OpenShift용 cert-manager Operator의 다음 핵심 구성 요소를 구성할 수 있습니다.
-
Cert-manager 컨트롤러:
spec.controllerConfig필드를 사용하여 cert‑manager 컨트롤러 포드를 구성할 수 있습니다. -
웹훅:
spec.webhookConfig필드를 사용하여 검증 및 변형 요청을 처리하는 웹훅 포드를 구성할 수 있습니다. -
CA 인젝터:
spec.cainjectorConfig필드를 사용하여 CA 인젝터 포드를 구성할 수 있습니다.
9.5.1.1. cert-manager 구성 요소에 대한 CertManager CR의 공통 구성 가능 필드 링크 복사링크가 클립보드에 복사되었습니다!
다음 표는 CertManager CR의 spec.controllerConfig , spec.webhookConfig 및 spec.cainjectorConfig 섹션에서 구성할 수 있는 일반 필드를 나열합니다.
| 필드 | 유형 | 설명 |
|---|---|---|
|
|
| cert-manager 구성 요소에 대해 지원되는 인수를 재정의할 수 있습니다. |
|
|
| cert-manager 컨트롤러에 대해 지원되는 환경 변수를 재정의할 수 있습니다. 이 필드는 cert-manager 컨트롤러 구성 요소에만 지원됩니다. |
|
|
|
cert-manager 구성 요소에 대한 복제본을 구성할 수 있습니다. 기본값은
자세한 내용은 고가용성을 참조하세요. |
|
|
| cert-manager 구성 요소에 대한 CPU 및 메모리 제한을 구성할 수 있습니다. |
|
|
| cert-manager 구성 요소에 대한 Pod 스케줄링 제약 조건을 구성할 수 있습니다. |
9.5.1.2. cert-manager 구성 요소에 대한 재정의 가능한 인수 링크 복사링크가 클립보드에 복사되었습니다!
CertManager CR의 spec.controllerConfig , spec.webhookConfig 및 spec.cainjectorConfig 섹션에서 cert-manager 구성 요소에 대한 재정의 가능한 인수를 구성할 수 있습니다.
다음 표에서는 cert-manager 구성 요소에 대한 재정의 가능한 인수를 설명합니다.
| 인수 | Component | 설명 |
|---|---|---|
|
| 컨트롤러 |
DNS-01 자체 검사를 쿼리할 쉼표로 구분된 이름 서버 목록을 제공합니다. 네임서버는 참고 DoH(DNS over HTTPS)는 cert-manager Operator for Red Hat OpenShift 버전 1.13.0 이상에서만 지원됩니다. |
|
| 컨트롤러 | 해당 도메인과 연결된 권한 있는 이름 서버를 확인하는 대신 재귀 이름 서버만 사용하도록 지정합니다. |
|
| 컨트롤러 |
쉼표로 구분된 < |
|
| 컨트롤러 |
지표 끝점의 호스트 및 포트를 지정합니다. 기본값은 |
|
| 컨트롤러 | 이 인수를 사용하면 주변 자격 증명을 사용하여 DNS-01 문제를 해결하도록 ACME 발급자를 구성할 수 있습니다. |
|
| 컨트롤러 | 이 인수는 TLS 인증서가 저장된 비밀의 소유자로 인증서 리소스를 설정합니다. 자세한 내용은 "인증서 제거 시 TLS 비밀번호를 자동으로 삭제"를 참조하세요. |
|
| 컨트롤러 |
ACME HTTP‑01 솔버 포드의 최대 CPU 제한을 정의합니다. 기본값은 |
|
| 컨트롤러 |
ACME HTTP‑01 솔버 포드의 최대 메모리 한도를 정의합니다. 기본값은 |
|
| 컨트롤러 |
ACME HTTP‑01 솔버 포드에 대한 최소 CPU 요청을 정의합니다. 기본값은 |
|
| 컨트롤러 |
ACME HTTP‑01 솔버 포드에 대한 최소 메모리 요청을 정의합니다. 기본값은 |
|
| 컨트롤러, 웹훅, 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를 예약하기 위한 허용 목록입니다. |
9.5.2. cert-manager Operator API에서 환경 변수를 재정의하여 cert-manager 사용자 지정 링크 복사링크가 클립보드에 복사되었습니다!
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>2 - name: NO_PROXY value: <ignore_proxy_domains>3 참고재정의 가능한 환경 변수에 대한 자세한 내용은 "CertManager 사용자 정의 리소스의 필드 설명"에서 "cert-manager 구성 요소에 대한 재정의 가능한 환경 변수"를 참조하세요.
- 변경 사항을 저장하고 텍스트 편집기를 종료하면 변경 사항이 적용됩니다.
검증
다음 명령을 실행하여 cert-manager 컨트롤러 포드가 다시 배포되었는지 확인하세요.
$ 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 섹션을 추가하여 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' - '--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 포드에 대한 인수가 업데이트되었는지 확인하세요.
$ 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 섹션을 추가하여 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 이상을 설치했습니다.
프로세스
다음 명령을 실행하여
인증서개체와 해당 비밀번호를 사용할 수 있는지 확인하세요.$ 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 컨트롤러 포드에 대한
--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 및 메모리 제한 덮어쓰기 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift용 cert-manager Operator를 설치한 후에는 cert-manager 컨트롤러, CA 인젝터, Webhook과 같은 cert-manager 구성 요소에 대해 Red Hat OpenShift용 cert-manager Operator API에서 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 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 등의 Red Hat OpenShift 구성 요소인 cert-manager Operator for Red Hat OpenShift API에서 Pod 스케줄링을 구성할 수 있습니다.
사전 요구 사항
-
cluster-admin역할이 있는 사용자로 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. - Red Hat OpenShift용 cert-manager Operator 버전 1.15.0 이상을 설치했습니다.
프로세스
다음 명령을 실행하여 원하는 구성 요소에 대한 Pod 일정 재정의를 구성하려면
certmanager.operator사용자 지정 리소스를 업데이트합니다.controllerConfig,webhookConfig또는cainjectorConfig섹션 아래의overrideScheduling필드를 사용하여nodeSelector및tolerations설정을 정의합니다.$ 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-manager포드에 대한 포드 스케줄링 설정을 확인하세요.다음 명령을 실행하여
cert-manager네임스페이스의 배포를 검사하여 올바른nodeSelector와허용 범위가 있는지 확인하세요.$ 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및허용설정을 확인하세요.$ 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-manager네임스페이스에서 Pod 스케줄링 이벤트를 확인하세요.$ oc get events -n cert-manager --field-selector reason=Scheduled