정지용
기술스택 목록
DevOps

cert-manager

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

쿠버네티스 클러스터에서 TLS 인증서 발급과 갱신을 자동화하는 컨트롤러

cert-manager는 쿠버네티스 위에서 동작하는 컨트롤러로, Let's Encrypt 같은 인증 기관이나 내부 CA로부터 TLS 인증서를 자동으로 발급받고 만료 전에 갱신해 Secret으로 관리해준다. 원래 클러스터 운영자가 수동으로 인증서를 발급받아 파일을 복사하고 만료일을 챙겨 갱신하던 반복 작업을 없애기 위해 만들어졌다. 인증서 요청, 검증, 발급, 갱신의 전체 생명주기를 쿠버네티스 리소스로 선언적으로 다루게 해준다.

이럴 때 사용합니다

  • 다수의 서비스나 도메인에 대해 TLS 인증서를 수동 관리하지 않고 자동화하고 싶을 때
  • Let's Encrypt 등 외부 CA와 사내 CA를 동일한 방식으로 쿠버네티스에서 다루고 싶을 때
  • Ingress나 서비스 메시에 TLS를 붙이면서 만료로 인한 장애를 예방하고 싶을 때

핵심 개념

Issuer / ClusterIssuer
인증서를 실제로 발급해줄 CA(예: Let's Encrypt, 사내 PKI)의 접속 정보와 인증 방식을 정의하는 리소스이다. Issuer는 특정 네임스페이스에서만, ClusterIssuer는 클러스터 전역에서 사용된다.
Certificate
어떤 도메인에 대해 어떤 Issuer를 통해 인증서를 발급받고 어느 Secret에 저장할지 선언하는 리소스로, cert-manager가 이를 보고 자동으로 발급·갱신 작업을 수행한다.
ACME Challenge
Let's Encrypt처럼 ACME 프로토콜을 쓰는 CA가 도메인 소유권을 검증하는 절차로, HTTP-01(웹 경로 응답)이나 DNS-01(TXT 레코드 등록) 방식이 흔히 쓰인다.
CertificateRequest
Certificate 리소스로부터 파생되어 실제 CSR(인증서 서명 요청)을 담고 있는 중간 리소스로, Issuer가 이를 처리해 서명된 인증서를 반환한다.
자동 갱신(Auto Renewal)
인증서 만료 시점이 가까워지면 cert-manager가 별도 개입 없이 새 인증서를 발급받아 대상 Secret을 갱신하는 동작이다.

ClusterIssuer와 Certificate 정의

Let's Encrypt를 사용하는 ClusterIssuer를 정의하고, example.com 도메인에 대한 인증서를 발급받아 example-com-tls Secret에 저장하도록 요청한다.

YAML
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: admin@example.com
    privateKeySecretRef:
      name: letsencrypt-prod-key
    solvers:
      - http01:
          ingress:
            class: nginx
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: example-com-tls
spec:
  secretName: example-com-tls
  issuerRef:
    name: letsencrypt-prod
    kind: ClusterIssuer
  dnsNames:
    - example.com

처음 쓸 때 흔한 함정

  • HTTP-01 챌린지는 와일드카드 도메인을 검증할 수 없어 DNS-01 방식이 필요하다
  • Issuer/ClusterIssuer 설정만 만들고 Certificate를 따로 선언하지 않으면 인증서가 발급되지 않는다
  • 발급 실패는 대부분 챌린지 검증 단계(DNS 전파, Ingress 라우팅)에서 발생한다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.