cert-manager ClusterIssuer: HTTP01ยทDNS01 ์ฑŒ๋ฆฐ์ง€

๐Ÿ’ก ํ•ต์‹ฌ ์š”์•ฝ (Executive Summary)

๋ณธ ๊ฐ€์ด๋“œ๋Š” manif cert manager clusterIssure.yaml ํ•ต์‹ฌ ๊ฐ€์ด๋“œ ๋ฐ ์‹ค์ „ ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ๊ฐœ๋…, ์‹ค์ „ ๊ตฌ์„ฑ ๋ช…๋ น์–ด ๋ฐ ์•„ํ‚คํ…์ฒ˜ ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ ์ธํ”„๋ผ ์—”์ง€๋‹ˆ์–ด๋ง ์‹ค๋ฌด์— ์ฆ‰์‹œ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

Reference & Guidelines (NOTE)

– ClusterIssuer๋Š” Namespace์— ๊ตญํ•œํ•˜์ง€ ์•Š๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์—์„œ ์ธ์ฆ์„œ ๋ฐœํ–‰์˜ ์ธ์ฆ๊ธฐ๊ด€์˜ ์—ญํ• ์„ ํ•œ๋‹ค.
– Issuer๋Š” Namespace์ •๋ณด๋งŒ ์ถ”๊ฐ€ํ•œ๋‹ค.

Self-Sign Issuer
bash
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: selfsigned-issuer
spec:
  selfSigned: {}
CA Issuer
bash
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: ca-issuer
spec:
  ca:
    secretName: ca-key-pair #cert-manager์„ค์น˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด
HTTP01

http://{your-domain}/.well-known/acme-challenge/ ๋งํฌ ๋‚ด์— ์ธ์ฆํŒŒ์ผ

bash
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod #์šด์˜์šฉ !!! ์‹ค์ œ ์กด์žฌํ•˜๋Š” ๋„๋ฉ”์ธ์— ๋Œ€ํ•˜์—ฌ ์‹ ๋ขฐํ• ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์œ„ํ•œ Issuer ์ด๋ฏ€๋กœ ์ฃผ์˜
spec:
  acme:
    email: #๋‚˜์˜ ์ด๋ฉ”์ผ ์ž…๋ ฅ
    privateKeySecretRef:
      name: letsencrypt-prod #์ƒ์„ฑ๋  tls.key secret
    server: https://acme-v02.api.letsencrypt.org/directory
    solvers:
    - http01:
        ingress:
          class: #ingressClass ์ž…๋ ฅ
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging #ํ…Œ์ŠคํŠธ๋ฐ ๊ฐœ๋ฐœ์šฉ
spec:
  acme:
    email: #๋‚˜์˜ ์ด๋ฉ”์ผ ์ž…๋ ฅ
    privateKeySecretRef:
      name: letsencrypt-staging #์ƒ์„ฑ๋  tls.key secret
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    solvers:
    - http01:
        ingress:
          class: #ingressClass ์ž…๋ ฅ
DNS01

ํŠน์ •ํ•œ TXT ๋ ˆ์ฝ”๋“œ๋ฅผ ๋„๋ฉ”์ธ DNS์— ๋“ฑ๋ก

bash
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod #์šด์˜์šฉ !!! ์‹ค์ œ ์กด์žฌํ•˜๋Š” ๋„๋ฉ”์ธ์— ๋Œ€ํ•˜์—ฌ ์‹ ๋ขฐํ• ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์œ„ํ•œ Issuer ์ด๋ฏ€๋กœ ์ฃผ์˜
spec:
  acme:
    email: #๋‚˜์˜ ์ด๋ฉ”์ผ ์ž…๋ ฅ
    privateKeySecretRef:
      name: letsencrypt-prod #์ƒ์„ฑ๋  tls.key secret
    server: https://acme-v02.api.letsencrypt.org/directory
    solvers:
    - dns01:
        cloudDNS:
          project: my-project
          serviceAccountSecretRef:
            name: prod-clouddns-svc-acct-secret
            key: service-account.json
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging #ํ…Œ์ŠคํŠธ๋ฐ ๊ฐœ๋ฐœ์šฉ
spec:
  acme:
    email: #๋‚˜์˜ ์ด๋ฉ”์ผ ์ž…๋ ฅ
    privateKeySecretRef:
      name: letsencrypt-staging #์ƒ์„ฑ๋  tls.key secret
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    solvers:
    - dns01:
        cloudDNS:
          project: my-project
          serviceAccountSecretRef:
            name: prod-clouddns-svc-acct-secret
            key: service-account.json

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *