쿠버네티스 환경에서의 인증서 관리를 위한 툴인 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를 진행 할 필요가 없어 운영관리 측면에서 리소스가 적게들어간다는 장점이 있습니다.
다만, 인증서에 문제가 생긴다던가 갱신하는 과정에서 문제가 생기게 될 수도 있기 때문에 지속적인 모니터링, 로그 확인이 필요할 수 있을 것으로 보입니다.
'Kubernetes' 카테고리의 다른 글
Kubernetes Network Study #2(Service to Pod) (0) | 2023.11.23 |
---|---|
Kubernetes Network Study #1 (Pod to Pod, CNI. Calico) (0) | 2023.11.22 |
[NKS]Velero를 활용하여 특정 네임스페이스를 통으로 백업하고 복원하기 (2) | 2023.07.31 |
Ingress에서 다른 Namespace에 있는 Service로 라우팅 하기 (0) | 2023.07.25 |
CKA 합격후기(2023.05.29 합격) (0) | 2023.07.17 |