9.5. cert-manager Operator API 필드 사용자 정의
환경 변수 및 인수를 재정의하여 Red Hat OpenShift API 필드에 대한 cert-manager Operator를 사용자 지정할 수 있습니다.
지원되지 않는 인수를 재정의하려면 CertManager
리소스에 spec.unsupportedConfigOverrides
섹션을 추가할 수 있지만 spec.unsupportedConfigOverrides
를 사용하는 것은 지원되지 않습니다.
9.5.1. cert-manager Operator API에서 환경 변수를 재정의하여 cert-manager 사용자 정의
CertManager
리소스에 spec.controllerConfig
섹션을 추가하여 cert-manager Operator for Red Hat OpenShift에 대해 지원되는 환경 변수를 덮어쓸 수 있습니다.
사전 요구 사항
-
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
- 변경 사항을 저장하고 텍스트 편집기를 종료하여 변경 사항을 적용합니다.
검증
다음 명령을 실행하여 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>
9.5.2. cert-manager Operator API에서 인수를 재정의하여 cert-manager 사용자 정의
CertManager
리소스에 spec.controllerConfig
섹션을 추가하여 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' 7 cainjectorConfig: overrideArgs: - '--v=2' 8
- 1
- DNS-01 자체 검사를 쿼리할 쉼표로 구분된 이름 서버 목록을 제공합니다. 네임서버는 <
host>:<port
> (예:1.1.1.1:53
)로 지정하거나 HTTPS(DoH)를 통해 DNS를 사용할 수 있습니다(예:https://1.1.1.1/dns-query
). - 2
- 해당 도메인과 연결된 권한 있는 이름 서버를 확인하는 대신 재귀 이름 서버만 사용하도록 지정합니다.
- 3
- 쉼표로 구분된 <
host>:<port
> 네임서버 목록을 제공하여 ACME(Automated Certificate Management Environment) HTTP01 자체 검사를 쿼리합니다. 예를 들면--acme-http01-solver-nameservers=1.1.1.1:53
입니다. - 4 7 8
- 로그 수준 상세 수준을 설정하려면 로그 메시지의 상세 수준을 결정하려면 을 지정합니다.
- 5
- 지표 끝점의 호스트 및 포트를 지정합니다. 기본값은
--metrics-listen-address=0.0.0.0:9402
입니다. - 6
- 앰비언트 인증 정보를 사용하여 DNS-01 문제를 해결하기 위해 ACME 발급자를 구성할 때
--issuer-ambient-credentials
인수를 사용해야 합니다.
참고DoH(DNS over HTTPS)는 cert-manager Operator for Red Hat OpenShift 버전 1.13.0 이상에서만 지원됩니다.
- 변경 사항을 저장하고 텍스트 편집기를 종료하여 변경 사항을 적용합니다.
검증
다음 명령을 실행하여 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
9.5.3. 인증서 제거 시 자동으로 TLS 시크릿 삭제
CertManager
리소스에 spec.controllerConfig
섹션을 추가하여 cert-manager Operator for Red Hat OpenShift에 대해 --enable-certificate-owner-ref
플래그를 활성화할 수 있습니다. --enable-certificate-owner-ref
플래그는 인증서 리소스를 TLS 인증서가 저장된 보안의 소유자로 설정합니다.
cert-manager Operator for Red Hat OpenShift를 설치 제거하거나 클러스터에서 인증서 리소스를 삭제하면 보안이 자동으로 삭제됩니다. 이로 인해 인증서 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
9.5.4. cert-manager 구성 요소에 대한 CPU 및 메모리 제한 덮어쓰기
cert-manager Operator for Red Hat OpenShift를 설치한 후 cert-manager 컨트롤러, CA 인젝터 및 Webhook와 같은 cert-manager 구성 요소에 대한 cert-manager Operator for Red Hat OpenShift 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 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: {} 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: limits: 1 cpu: 200m 2 memory: 64Mi 3 requests: 4 cpu: 10m 5 memory: 16Mi 6 webhookConfig: overrideResources: limits: 7 cpu: 200m 8 memory: 64Mi 9 requests: 10 cpu: 10m 11 memory: 16Mi 12 cainjectorConfig: overrideResources: limits: 13 cpu: 200m 14 memory: 64Mi 15 requests: 16 cpu: 10m 17 memory: 16Mi 18 "
- 1
- cert-manager 컨트롤러 Pod의 단일 컨테이너에서 요청할 수 있는 최대 CPU 및 메모리 양을 정의합니다.
- 2 5
- cert-manager 컨트롤러 Pod에서 요청할 수 있는 CPU 제한을 지정할 수 있습니다. 기본값은
10m
입니다. - 3 6
- cert-manager 컨트롤러 Pod에서 요청할 수 있는 메모리 제한을 지정할 수 있습니다. 기본값은
32Mi
입니다. - 4
- cert-manager 컨트롤러 Pod에 대한 스케줄러에서 설정한 CPU 및 메모리 양을 정의합니다.
- 7
- CA 인젝터 Pod의 단일 컨테이너에서 요청할 수 있는 최대 CPU 및 메모리 양을 정의합니다.
- 8 11
- CA 인젝터 Pod에서 요청할 수 있는 CPU 제한을 지정할 수 있습니다. 기본값은
10m
입니다. - 9 12
- CA 인젝터 Pod에서 요청할 수 있는 메모리 제한을 지정할 수 있습니다. 기본값은
32Mi
입니다. - 10
- CA 인젝터 Pod에 대한 스케줄러에서 설정한 CPU 및 메모리 양을 정의합니다.
- 13
- Webhook Pod의 단일 컨테이너에서 요청할 수 있는 최대 CPU 및 메모리 양을 정의합니다.
- 14 17
- Webhook Pod에서 요청할 수 있는 CPU 제한을 지정할 수 있습니다. 기본값은
10m
입니다. - 15 18
- Webhook Pod에서 요청할 수 있는 메모리 제한을 지정할 수 있습니다. 기본값은
32Mi
입니다. - 16
- 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 # ...