본문 바로가기
Kubernetes

Kubernetes 인증서 관리를 위한 가이드: cert-manager와 issuer 설치

by beann 2023. 7. 25.
반응형

 

쿠버네티스 환경에서의 인증서 관리를 위한 툴인 Cert-Manager와 Issuer에 대하여 설치 및 설정방법

 

 

목차

1. Cert-Manager설치 방법 (helm을 활용합니다.)

2. Cluster Iussuer 또는 Issuer 설치 및 설정

3. Ingress 매니페스트 파일에 적용

 

 

 


[Cert-Manager 설치 방법]

1. cert-manager 설치를 위한 네임스페이스를 생성합니다.

kubectl create namespace cert-manager

 

 

2. Cert-Manager Chart를 포함하는 Helm repo 추가

helm repo add jetstack https://charts.jetstack.io

 

 

3. Helm repo Update

helm repo update

 

 

4. Helm을 통해 Cert-Manager 설치

helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --version v1.6.1 \
  --create-namespace

 

 

5. Cert-Manager가 정상적으로 설치 됐는지 확인합니다.

kubectl get pods -n cert-manager

 

 

 

 

 

[ClusterIssuer 설정 방법]

참고: Cluster-Manager에서는 아래 두가지 종류의 Issuer를 제공합니다.

- ClusterIssuer: 클러스터 전역으로 적용되는 설정입니다.

- Issuer: 특정 네임스페이스에 적용되는 설정입니다.

 

* 테스트는 Cluster Issuer로 진행했습니다.

 

1. Cluster Issuer 매니페스트 파일 작성

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt
spec:
  acme:
    # 자주 사용하는 이메일 주소 지정
    email: sungjun7305@gmail.com
    # ACME서버 지정(ACME란, 도메인의 소유권을 자동으로 검증, 발급, 갱신해주는 프로토콜이다. 아래는 ACME 프로토콜을 가장 널리 사용하는 Letsencrypt의 ACME서버 URL이다.)
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      # ACME서버와의 통신에 사용되는 ACME계정의 Private Key를 저장할  Secret 이름지정
      name: letsencrypt
    solvers:
    - http01:
        ingress:
          # Ingress Controller Class 지정
          class: nginx

 

 

[Ingress 배포]

1. Ingress 매니페스트 파일 내용의 Annotations에 cret-manager.io 필드를 새로 넣어준다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress-uri
  annotations:

    # 아까 생성한 Cluster-Issuer 이름을 넣어준다.
    cert-manager.io/cluster-issuer: "letsencrypt"

    # http01 방식으로 도메인 소유 인증 진행
    cert-manager.io/acme-challenge-type: http01
spec:
  ingressClassName: nginx
  tls:
  - hosts:

      # 자신의 도메인 입력
    - kong-lab.site
    secretName: cafe-secret
  rules:
  - host: kong-lab.site
    http:
      paths:
      - path: /tea
        pathType: Prefix
        backend:
          service:
            name: tea-svc
            port:
              number: 80
      - path: /coffee
        pathType: Prefix
        backend:
          service:
            name: coffee-svc
            port:
              number: 80

 

 

 

[적용 확인]

 

위와같이 정상적으로 적용된 것을 확인할 수 있습니다.

 

 

결론

Cert-Manager를 통해 쿠버네티스 환경에서 인증서 설정을 진행할 경우 30일 전에 인증서 만료일이 자동으로 연장됩니다.

따라서, 별도 스크립트를 작성해야한다던가 수동으로 renew를 진행 할 필요가 없어 운영관리 측면에서 리소스가 적게들어간다는 장점이 있습니다.

 

다만, 인증서에 문제가 생긴다던가 갱신하는 과정에서 문제가 생기게 될 수도 있기 때문에 지속적인 모니터링, 로그 확인이 필요할 수 있을 것으로 보입니다.

반응형