설정

Cert-Manager

먼저 Cert-Manager에서 사용하는 개념을 정리하면 다음과 같다.

개념 설명
Issuer 네임스페이스 범위에서 인증서를 발급할 수 있게 해주는 리소스
ClusterIssuer 클러스터 전체 범위에서 인증서 발급 가능
Certificate 실제로 발급받고자 하는 인증서 정의
issuerRef 어떤 Issuer를 사용할지 지정
  1. SelfSigned CA 발급을 위한 ClusterIssuer 생성
# selfsigned-clusterissuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: selfsigned-cluster-issuer
spec:
  selfSigned: {}
  1. CA Certificate 발급
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: root-ca
  namespace: cert-manager
spec:
  isCA: true
  commonName: "Private CA Cert"
  secretName: root-ca-secret
  duration: 8760h # 1년
  privateKey:
    algorithm: RSA
    size: 2048
  issuerRef:
    name: selfsigned-cluster-issuer
    kind: ClusterIssuer
  1. CA를 통해 발급한 인증서의 Issuer 등록
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: ca-cluster-issuer
spec:
  ca:
    secretName: root-ca-secret
  1. GitLab 인증서 발급 (SelfSigned Root CA)
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: gitlab-wildcard-cert
  namespace: gitlab
spec:
  secretName: gitlab-wildcard-tls
  commonName: "*.local.example"
  dnsNames:
    - "*.local.example"
    - "gitlab.example.com"  # 루트 도메인도 포함하려면 명시적으로 작성
  issuerRef:
    name: ca-cluster-issuer
    kind: ClusterIssuer
  1. GitLab Workspace 인증서 발급 (SelfSigned Root CA)
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: gitlab-workspace-wildcard-cert
  namespace: gitlab-workspaces
spec:
  secretName: gitlab-workspace-wildcart-tls
  commonName: "*.workspace.local.example"
  dnsNames:
    - "*.workspace.local.example"
    - "workspace.local.example"  # 루트 도메인도 포함하려면 명시적으로 작성
  issuerRef:
    name: ca-cluster-issuer
    kind: ClusterIssuer