본문 바로가기
문서 목차
ORKESTRIX설치

cert-manager (TLS 인증서 발급·갱신 자동화)

Certificate 리소스를 선언하면 키 생성부터 발급, Secret 저장, 만료 전 자동 갱신까지 사람 개입 없이 처리해주는 cert manager 를 설치합니다.

QUANTUM C&S

Certificate 리소스를 선언하면 키 생성부터 발급, Secret 저장, 만료 전 자동 갱신까지 사람 개입 없이 처리해주는 cert-manager를 설치합니다.

설정값

inventory/qks/group_vars/all/all-k8s.yaml:

qks_cert_manager_enabled: true
qks_cert_manager_version: v1.21.2
qks_cert_manager_namespace: cert-manager

ubuntu.yaml:

qks_cert_manager_public_domain_used: false

실행

./install.sh ubuntu plays/qks-cert-manager.yaml

설치 흐름

./install.sh ubuntu plays/qks-cert-manager.yaml
  ├─ 1. Helm 저장소 등록 (jetstack)
  ├─ 2. cert-manager 네임스페이스 생성
  └─ 3. Helm으로 cert-manager 배포 (컨트롤러 + webhook + cainjector, CRD 함께 설치)

설치 확인

kubectl get pods -n cert-manager
helm list -n cert-manager

cert-manager, cert-manager-webhook, cert-manager-cainjector 3개 파드가 Running, Helm 릴리즈가 deployed여야 합니다.

실제 동작 확인 — 발급과 갱신 자동화

자체서명(Self-Signed) Issuer로 테스트용 인증서를 발급하고, 실제로 자동 갱신되는지까지 확인합니다.

# test-cert-manager.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: test-selfsigned
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: test-cert
  namespace: default
spec:
  secretName: test-cert-tls
  duration: 1h        # 최소 1시간 이상이어야 함(웹훅 검증)
  renewBefore: 55m     # 최소 5분 이상이어야 함
  issuerRef:
    name: test-selfsigned
    kind: ClusterIssuer
  commonName: test.example.com
  dnsNames:
    - test.example.com

1. 발급 자동화 확인

kubectl apply -f test-cert-manager.yaml
kubectl get certificate test-cert -n default

READY가 True로 바뀌면(수 초 내) 발급 자동화가 정상 동작하는 것입니다.

2. 갱신 자동화 확인

발급 직후 인증서 정보를 기록해둡니다:

kubectl get secret test-cert-tls -n default -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -noout -serial -dates

cert-manager가 계산해둔 실제 갱신 예정 시각을 확인합니다:

kubectl get certificate test-cert -n default -o jsonpath='{.status.renewalTime}'

그 시각이 지날 때까지 기다린 뒤(renewBefore: 55m 기준 발급 후 약 5분), 같은 명령으로 다시 확인합니다:

kubectl get secret test-cert-tls -n default -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -noout -serial -dates

serial과 notBefore 값이 사람 개입 없이 자동으로 바뀌어 있으면, 갱신 자동화가 실제로 동작하는 것입니다.

확인 후 정리:

kubectl delete -f test-cert-manager.yaml

다음 단계