먼저 Cert-Manager에서 사용하는 개념을 정리하면 다음과 같다.
개념 | 설명 |
---|---|
Issuer | 네임스페이스 범위에서 인증서를 발급할 수 있게 해주는 리소스 |
ClusterIssuer | 클러스터 전체 범위에서 인증서 발급 가능 |
Certificate | 실제로 발급받고자 하는 인증서 정의 |
issuerRef | 어떤 Issuer를 사용할지 지정 |
# selfsigned-clusterissuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-cluster-issuer
spec:
selfSigned: {}
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
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: ca-cluster-issuer
spec:
ca:
secretName: root-ca-secret
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
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