Table of Content
Kubernetes – Cert-manager
Kubernetes 클러스터에 Cert-manager 를 설치합니다.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
용어정리
cert-manager 는 Cluster Issuer 를 생성합니다.(루트 인증서, CA)
Cluster Issuer 를 이용해 각 Namespace 별로 Certificate 를 생성합니다.
cert-manager 설치
k8s 버전을 확인해서 적절한 버전의 cert-manager 을 설치합니다.
자세한 내용은 여기 에서 확인합니다.
kubectl create namespace cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.10.1/cert-manager.yaml
Issuer 생성
ClusterIssuer 는 모든 Namespace 에서 사용 가능한 Certificate 를 발행할 수 있습니다.
클러스터 rootCA 등록되거나 하지는 않는 듯 합니다.
vi selfsigned-issuer.yaml
---------------------------
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-issuer
spec:
selfSigned: {}
---------------------------
kubectl apply -f selfsigned-issuer.yaml
Certificate 생성
Certificate 는 Namespace 내의 모든 서비스에서 사용가능한 인증서를 생성합니다.
vi repository-selfsigned-cert.yaml
---------------------------
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: repository-selfsigned-cert
namespace: default
spec:
secretName: repository-selfsigned-cert-tls
duration: 2880h # 120d
renewBefore: 360h # 15d
commonName: repository.skyer9.pe.kr
isCA: false
usages:
- digital signature
- key encipherment
- server auth
issuerRef:
name: selfsigned-issuer
kind: ClusterIssuer
group: cert-manager.io
---------------------------
kubectl apply -f repository-selfsigned-cert.yaml
kubectl describe secret repository-selfsigned-cert-tls
인증서 배포
배포시 yaml 에 repository-selfsigned-cert-tls 을 명시해 줍니다.
아래 코드는 테스트 안된 코드입니다.!!!
apiVersion: v1
kind: Pod
metadata:
name: cacheconnectsample
spec:
containers:
- name: cacheconnectsample
image: cacheconnectsample:v1
volumeMounts:
- name: repository-selfsigned-cert-tls
mountPath: /etc/ssl/certs
readOnly: true
ports:
- containerPort: 80
command: [ "dotnet" ]
args: [ "cacheconnectsample.dll" ]
volumes:
- name: repository-selfsigned-cert-tls
secret:
secretName: repository-selfsigned-cert-tls