๊ธฐ๋ณธ ์ง€์‹

8482 ๋‹จ์–ด certificatetech

cert-manager๋ž€?


kubernetes ํด๋Ÿฌ์Šคํ„ฐ์—์„œ SSL/TLS ์ธ์ฆ์„œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
์ธ์ฆ์„œ์˜ ์ทจ๋“, ๊ฐฑ์‹ , ์‚ฌ์šฉ์ด ๊ฐ„๋‹จํ•ด์กŒ๋‹ค.
๊ณต์‹ ๋ฌธ์„œ
https://cert-manager.io/docs/

์ด ๊ธ€์˜ ๋‚ด์šฉ


์ด ๊ธ€์—์„œ๋Š” cert-Manager๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ตœ์†Œํ•œ ํ†ต์ œํ•ด์•ผ ํ• '์ฆ๋ช…์„œ ๋ฐœํ–‰ยทํ™œ์šฉ ํ”„๋กœ์„ธ์Šค'์™€'๋“ฑ์žฅ์ธ๋ฌผ'๋งŒ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ–ˆ๋‹ค.
์ฆ๋ช…์„œ ์ฃผ๋ณ€์—์„œ๋Š” ์‚ฌ๊ณ ๊ฐ€ ๋‚˜๋ฉด ๊ท€์ฐฎ์•„์„œ ๋งŒ์ง€๊ณ  ์‹ถ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ธฐ์ดˆ ์ง€์‹์„ ๋จผ์ € ์•Œ๊ณ  ์‹ถ์€ ๊ฒƒ์ด ์ตœ์ดˆ์˜ ๋ฐœํŒ์ด๋‹ค.
cert-manager v1.์ด์–ด์„œ 6.1์˜ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ Let's Encerypt๋ฅผ Issuer์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์„ค๋ช…ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ Issuer Type์—๋Š” ๋‹ค๋ฅธ ๋‚ด์šฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ์„œ ๋ฐœํ–‰ ๋ฐ ์‚ฌ์šฉ์˜ ๊ฐ„๋‹จํ•œ ์ ˆ์ฐจ


์šฐ์„  ๋Œ€๋žต์ ์ธ ์ ˆ์ฐจ๋ฅผ ํ•˜๋‚˜ ์จ๋ผ.
์‹ค์ œ ์„ค์น˜ ๋ฐฉ๋ฒ•๊ณผ ์กฐ์ž‘ ๋“ฑ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๋ฌธ์„œ์— ๋„˜๊ธธ ๊ฒƒ์ด๋‹ค.
  • cert-Manager๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • Issuer ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Certificate ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Issuer, Certificate ๊ตฌ์„ฑ ์š”์†Œ์˜ ์„ค์ •์— ๋”ฐ๋ผ ์ง€์ •ํ•œ ์ธ์ฆ์„œ ๋ฐœํ–‰์ธ์—๊ฒŒ ์ง€์ •ํ•œ ์˜์—ญ์˜ ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ์ง€์ •ํ•œ ์˜์—ญ์ด ์ธ์ฆ์„œ ์š”์ฒญ์ž์˜ ํ†ต์ œํ•˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ฆ์„œ ๋ฐœํ–‰์ธ์ด ์‹คํ–‰ํ•œ๋‹คใƒใƒฃใƒฌใƒณใ‚ธ.
  • ใƒใƒฃใƒฌใƒณใ‚ธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ๋ฐœํ–‰๋œ ์ธ์ฆ์„œ์™€ ํ‚ค๋Š” Secret ์ž์›์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

  • ์ธ์ฆ์„œ์™€ ํ‚ค๊ฐ€ ์ €์žฅ๋œ ์‹œํฌ๋ฆฟ์€ ์ฐธ์กฐIngress ๋“ฑ์„ ํ†ตํ•ด ์ธ์ฆ์„œ๋กœ ์•”ํ˜ธ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋“ฑ์žฅ์ธ๋ฌผ


    cert-Manager๋Š” ์ธ์ฆ์„œ๋ฅผ ์ทจ๋“ํ•˜๊ณ  ์ด์šฉํ•  ๋•Œ ๊ด€๋ จ ๋“ฑ์žฅ์ธ๋ฌผ์„ ์†Œ๊ฐœํ•œ๋‹ค.

    Issuer


    https://cert-manager.io/docs/concepts/issuer/
  • ์ฆ๋ช…์„œ ๋ฐœํ–‰์ž(CA:Centefication Authority. ์ผ๋ณธ์–ด๋Š” ์ธ์ฆ๊ตญ).
  • ๊ธ€์ž์˜ ๋œป๋Œ€๋กœ ์ฆ๋ช…์„œ๋ฅผ ๋ฐœํ–‰ํ•œ ์‚ฌ๋žŒ์ด๋‹ค.
  • cert-Manager์—์„œ Issuer ๊ตฌ์„ฑ ์š”์†Œ๋Š” Custom Resource Definition(CRD)์— ์˜ํ•ด ์ •์˜๋œ ์ž์›์ž…๋‹ˆ๋‹ค.
  • Issuer ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ฐ™์€namespace์—์„œ๋งŒ ๋ฐœํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คCertificate.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ Namespace๋ฅผ ๋›ฐ์–ด๋„˜์–ด ๋ฐœํ–‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ClusterIssuer ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ์ž๊ฐ€ manfest ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Certificate


    https://cert-manager.io/docs/concepts/certificate/
  • ๋Š” X.509 ๊ธฐ๋ฐ˜ ์ธ์ฆ์„œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ๋„ CRD์—์„œ ์ •์˜ํ•œ Kubbernetes์˜ ์ž์›์ด๋‹ค.
  • X.509์€ ์ธ์ฆ์„œ์˜ ์‚ฌ์–‘์ž…๋‹ˆ๋‹ค.

  • ์—ฌ๊ธฐ ๊ธฐ์‚ฌ.์— ํ†ต์†์ ์ด๊ณ  ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ์ผ๋‹ค.
  • ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ์ž๊ฐ€ manfest ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ACME Orders and Challenges


    https://cert-manager.io/docs/concepts/acme-orders-challenges/
  • ACME(Automate Certificate Management Environment)
  • ์ธ์ฆ์„œ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.
  • Let's Encerypt๋Š” ๋Œ€ํ‘œ์ ์ธ ACME Issuer์ž…๋‹ˆ๋‹ค.
  • ์ธ์ฆ์„œ ์„œ๋ช… ์š”์ฒญ์„ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•ด ACME ํด๋ผ์ด์–ธํŠธ(์ฆ‰,cert-Manager, ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ์ž)๋Š” ACME Issuer์— ์ง€์ •๋œ ๋„๋ฉ”์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ์ฆ๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ์€ ACME ํ”„๋กœํ† ์ฝœ์—์„œ ใƒใƒฃใƒฌใƒณใ‚ธ๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.
  • ์ด๊ฒƒใƒใƒฃใƒฌใƒณใ‚ธ์„ ์™„์„ฑํ•˜๊ธฐ ์œ„ํ•ดcert-Manager๋Š” ๋‹ค์Œ ๋‘ ๊ฐœ์˜ CRD๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • Order
  • Challenge
  • Order

  • ใƒใƒฃใƒฌใƒณใ‚ธ๋Š” ์‹คํ–‰ ์š”์ฒญ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ใƒใƒฃใƒฌใƒณใ‚ธ์˜ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ.์ด๋‹ค.
  • ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.ํ•œ๋ฒˆ ํ•ด๋ดค์ž ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฑฐ์•ผ.
  • Challenge


  • ํ‘œ์‹œ ใƒใƒฃใƒฌใƒณใ‚ธ.
  • ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ์„ ์š”์ฒญํ•œ ๊ฒฝ์šฐ Order ํ•˜๋‚˜์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธChallenge์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Charllenge ์ˆ˜๋ช… ์ฃผ๊ธฐ
  • Challenge ๋Œ€๊ธฐ์—ด์—์„œ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ใƒใƒฃใƒฌใƒณใ‚ธ ์™„์„ฑ ํ›„Challenge ์ž์›์ด Kubernetes ๊ทธ๋ฃน์—์„œ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
  • ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.ํ•œ๋ฒˆ ํ•ด๋ดค์ž ๋ณ€ํ•˜์ง€ ์•Š์„ ๊ฑฐ์•ผ.
  • Ingress

  • Kubbernetes ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ HTTP(S)์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Nginx์™€ ๊ฐ™์€ ์›น ์„œ๋ฒ„๋กœ ์ œ๊ณต๋˜๊ฑฐ๋‚˜ GCP, AWS ๋“ฑ ๊ด€๋ฆฌ ์„œ๋น„์Šค์˜ ๋ถ€ํ•˜ ๋ฐธ๋Ÿฐ์„œ๋กœ ์ œ๊ณต๋  ๋•Œ๋„ ์žˆ๋‹ค.
  • SSL/TLS ์ธ์ฆ์„œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ SSL ๋ง๋‹จ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • cert-Manager๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์€ ์ธ์ฆ์„œ๋Š” ์ตœ์ข…์ ์œผ๋กœ Ingress์—์„œ ์ฐธ๊ณ ํ•˜๊ณ  ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ์ž๊ฐ€ manfest ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • Ingresscert-Manager๊ฐ€ CRD๋กœ ์ •์˜ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • ๋“ฑ์žฅ์ธ๋ฌผ๋ณ„ manfest ํŒŒ์ผ ์ƒ˜ํ”Œ


    ์œ„์—์„œ ๋งํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์ž์›์€ ์‚ฌ์šฉ์ž๊ฐ€ manfest ํŒŒ์ผ์„ ์ œ์ž‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  • Issuer
  • Certificate
  • Ingress
  • ๋‹ค์Œ์€ ์ด ์„ธ ์ž์›์— ๋Œ€ํ•œ manfest ํŒŒ์ผ์˜ ๊ฒฌ๋ณธ๊ณผ ๊ด€๊ณ„๋ฅผ ๋ณด์—ฌ ์ค๋‹ˆ๋‹ค.

    ๋ฌธ์„œ ๊ฒฌ๋ณธ


    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: YOUR_ISSUER_NAME
    spec:
      acme:
        email: "hoge@example.com"
        server: https://acme-staging-v02.api.letsencrypt.org/directory
        privateKeySecretRef:
          name: lets-encrypt
        solvers:
        - dns01:
            cloudDNS:
              project: example-com
              serviceAccountSecretRef:
                name: prod-clouddns-svc-acct-secret
                key: service-account.json
    
    Issuer์˜ manfest ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ metadata.name์™€specไปฅไธ‹์ด๋‹ค.metadata.name๊ฐ€ ๋ฐ”๋กœ ์ด ์ž์›์˜ ๋ช…์นญ์ด๋‹ค.์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‹ค๋ฅธ ์ž์›์—์„œ ์ด ์ž์›์„ ์ธ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.specไปฅไธ‹ ํƒ€์ž…์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.์ด๋ฒˆ์—๋Š” Let's Encerypt๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ „์ œ์กฐ๊ฑด์ด๊ธฐ ๋•Œ๋ฌธ์—Issuer.
    ์ด manfest๋Š” Staging ํ™˜๊ฒฝ์˜ Let's Encerypt ์„œ๋ฒ„์— ๋Œ€ํ•œ ์‹คํ–‰spec.acme์ž…๋‹ˆ๋‹ค. GCP์˜ ํด๋ผ์šฐ๋“œ DNS๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. DNS01ใƒใƒฃใƒฌใƒณใ‚ธ๋ผ๋Š” GCP ํ”„๋กœ์ ํŠธ์˜ ํด๋ผ์šฐ๋“œ DNS๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ดexample-com์ด ์‹œํฌ๋ฆฟ ์ž์›์— ์„œ๋น„์Šค ๊ณ„์ •์˜ ์‹ ์šฉ๋„๋ฅผ ๋†“์•˜์Šต๋‹ˆ๋‹ค.
    ๋‹ค๋ฅธ IssuerType ๋˜๋Š” ACME๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์„ค์ •์„ ์„ ํƒํ•  ๋•Œ๋Š” ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
    https://cert-manager.io/docs/configuration/

    ๋ฌธ์„œ ๊ฒฌ๋ณธ


    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: YOUR_CERTIFICATE_NAME
    spec:
      secretName: YOUR_SECRET_NAME
      dnsNames:
      - example.com
      issuerRef:
        name: YOUR_ISSUER_NAME
        kind: Issuer
    
    prod-clouddns-svc-acct-secret ๊ตฌ์„ฑ ์š”์†Œ์˜ manfest ํŒŒ์ผ์— Certificate,secretName,dnsNames์˜ ํ•„๋“œ๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.issuerRef์—์„œ ์ง€์ •ํ•œ dnsNames์—์„œ ์ง€์ •ํ•œ issuerRef์—์„œ Issuer์—์„œ ์ง€์ •ํ•œ ์˜์—ญ์˜ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.secretName Kubernetes์˜ Secret ์ž์› ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.์ด Secret์€ ์‹ค์ œ ํ‚ค์™€ ์ธ์ฆ์„œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    manfest ํŒŒ์ผ์„ ์„ค์ •ํ•˜๋ฉด example.com ์ธ์ฆ์„œ๋Š” YOUR_ISSUER_NAME ๋ผ๋Š” Issueer ์—์„œ ๊ฐ€์ ธ์˜ค๊ณ  ์ธ์ฆ์„œ์™€ ํ‚ค๋Š” YOUR_SECRET_NAME ๋ผ๋Š” Secret ์ž์›์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    ์‹ค์ œ ์‹œํฌ๋ฆฟ์— ์ €์žฅ๋œ ์˜ˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    $ kubectl get secret ${YOUR_SECRET_NAME}
    
    apiVersion: v1
    kind: Secret
    data:
      tls.crt: LS0tLaa.....
      tls.key: LS0tLOU....
      creationTimestamp: "2022-00-00T00:00:00Z"
      labels:
        certmanager.k8s.io/certificate-name: YOUR_SECRET_NAME
      name: YOUR_SECRET_NAME
      namespace: YOUR_NAMESPACE_NAME
    ...
    ...
    
    ์ธ์ฆ์„œdata.tls.crt๋Š” ์ธ์ฆ์„œ ๊ฐ’์„ ํฌํ•จํ•˜๊ณ  data.tls.key๋Š” ํ‚ค ๊ฐ’์„ ํฌํ•จํ•œ๋‹ค.
    ์ด ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธ ํ†ต์‹ ์„ ์‹คํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    ์ฐธ๊ณ ๋กœ ์‹ค์ œ ์ธ์ฆ์„œ์˜ ๊ฐ’์€ Secret์—๋งŒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
    ํ—ท๊ฐˆ๋ฆฌ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. Certificate ์ž์›์— ์ธ์ฆ์„œ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    ๋Œ€์‹  ์ธ์ฆ์„œ ์‹คํšจ, ์˜ˆ์ •์ผ ๊ฐฑ์‹  ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค.
    $ kubectl get Certificate ${YOUR_CERTIFICATE_NAME}
    
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      creationTimestamp: "2022-01-13T12:19:50Z"
      generation: 1
      name: YOUR_CERTIFICATE_NAME
      namespace: YOUR_NAMESPACE_NAME
    spec:
      commonName: example.com
      dnsNames:
      - example.com
      issuerRef:
        kind: Issuer
        name: YOUR_ISSUER_NAME
      secretName: YOUR_SECRET_NAME
    status:
      conditions:
      - lastTransitionTime: "2022-01-13T12:19:50Z" # 2022/1/13ใซไฝœๆˆ
        message: Certificate is up to date and has not expired
        observedGeneration: 1
        reason: Ready
        status: "True"
        type: Ready
      notAfter: "2022-04-13T11:21:25Z" # 90ๆ—ฅๅพŒใฎ2022/4/13ใซๅคฑๅŠน
      notBefore: "2022-01-13T11:21:26Z"
      renewalTime: "2022-03-14T11:21:25Z" # 60ๆ—ฅๅพŒใฎ2022/3/14ใซๆ›ดๆ–ฐไบˆๅฎš
      revision: 1
    

    ๋ฌธ์„œ ๊ฒฌ๋ณธ


    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      annotations:
        cert-manager.io/issuer: YOUR_ISSUER_NAME
      name: YOUR_INGRESS_NAME
      namespace: YOUR_INGRESS_NAME
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - pathType: Prefix
            path: /
            backend:
              service:
                name: YOUR_SERVICE_NAME
                port:
                  number: 80
      tls:
      - hosts:
        - example.com
        secretName: YOUR_SECRET_NAME
    
    tls.hosts[0].secretName์— ์ธ์ฆ์„œ์™€ ํ‚ค๋ฅผ ๊ฐ€์ง„ ์‹œํฌ๋ฆฟ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•จ์œผ๋กœ์จ Ingress๋Š” ์ธ์ฆ์„œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์•”ํ˜ธ ํ†ต์‹ ์„ ์‹คํ˜„ํ•œ๋‹ค.
    ์ฆ‰ Certificate์˜manfest ๋‚ดspec.secretName๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด OK๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

    ์ด๊ฒฐ์‚ฐ


    ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด manfest ํŒŒ์ผ์˜ ์ƒ˜ํ”Œ์„ ํฌํ•จํ•˜์—ฌcert-๊ด€๋ฆฌ์ž๊ฐ€ ์ธ์ฆ์„œ๋ฅผ ์ทจ๋“ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ์†Œ๊ฐœํ–ˆ๋‹ค.
    cert-Manager์˜ ๊ณต์‹ ๋ฌธ์„œ๊ฐ€ ๋น„๊ต์  ์ถฉ์‹คํ•ด์„œ ๋‚˜๋Š” ๋ฐฐ์šธ ๋งŒํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
    ๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์ž์„ธํžˆ ์ฝ์–ด๋ณด๋ฉด ์žฌ๋ฏธ์žˆ์„ ๊ฑฐ์˜ˆ์š”.

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ