Kubernetes – Cert-manager

By | 2022년 12월 5일
Table of Contents

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

답글 남기기