SKS (Smileserv Kubernetes System) Cert-manager 배포 메뉴얼 ver. 2025.01.21
Cert-manager
cert-manager는 쿠버네티스 클러스터에서 TLS(SSL) 인증서를 자동으로 발급, 갱신 및 관리해주는 오픈소스 도구입니다.
Ingress 리소스와 연동하여 HTTPS 접속을 쉽게 적용 할 수 있습니다.
Install Cert-manager
Cert-manager 를 배포 합니다.
💡 Cert-manager Offical page
Cert-manager github 의 yaml 파일로 바로 배포 가능합니다.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.2/cert-manager.yaml
Create Issuer
- 인증서 발급을 위해 Issuer 배포를 위한 yaml 파일을 작성 합니다.
Letsencrypt 인증서 발급의 경우 DCV 인증을 위한 ACME challange 실패가 연속되면 횟수 제한에 걸려 신청이 거부 될 수 있습니다.
Letsencrypt 에서 최초 개발단계등 인증서 발급 테스트를 위해 실제 발급용인 product 와 함께 테스트를 위한 staging 도 제공하고 있습니다.
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: 담당자메일주소
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-prod
# Enable the HTTP-01 challenge provider
solvers:
- http01:
ingress:
ingressClassName: nginx
- kind 는 특정 네임스페이스에 적용 되는 Issuer 와 클러스터 전체에 적용 되는 ClusterIssuer 중 선택이 가능합니다.
- email 부분에 인증서 갱신, 유지보수 등에 필요한 담당자 메일을 입력 합니다.
- 작성한 yaml 파일을 apply 합니다.
- (선택) staging Issuer 를 위한 yaml 파일도 동일하게 생성하여 배포 합니다.
- lets-dry.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration
email: 담당자메일주소
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-staging
# Enable the HTTP-01 challenge provider
solvers:
- http01:
ingress:
ingressClassName: nginx
kubectl apply -f lets-dry.yaml
- Cluster issuer 상태를 확인 합니다.
kubectl get clusterissuer