본문으로 건너뛰기

cert-manager CRDs

Issure


  • Issuer는 인증서에 서명할 수 있는 인증 기관을 나타내는 리소스입니다.
  • Issuer는 Namespace 내에서만 사용가능하므로 여러 Namespace에서 사용하려면 ClusterIssuer를 사용해야합니다.
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: <issuerName>
namespace: <namespace>
spec:
selfSigned: {}
# ca:
  • selfSigned: 별도의 인증 기관 없이 인증서 생성 요청이 오면 자체 서명합니다.
  • ca
    • 인증서 생성 요청이 오면 등록된 인증서를 사용하여 서명합니다.
    • secretName: 인증서가 저장된 Secret의 이름을 설정합니다. Issuer는 Issuer가 속한 Namespace에서 Secret을 찾고, ClusterIssuer의 경우 기본적으로 cert-manager가 설치된 Namespace에서 Secret을 찾습니다.(설치 시 clusterResourceNamespace 옵션으로 변경 가능)
  • acme
    • server: <server>
    • email: <email>
      • ACME 계정과 연결된 이메일 주소를 설정합니다.
      • 만료 알림 등의 메일을 보내는 데 사용됩니다.
    • privateKeySecretRef
      • name: <secretName>: 자동으로 생성될 ACME 계정의 privateKey를 저장할 Secret의 이름을 설정합니다.
    • solvers: []
      • selector
        • 설정하지 않으면 가장 낮은 우선순위의 solver가 됩니다.
        • dnsNames: [<dnsName>]
          • 해당 solver를 사용하여 인증서를 발급할 DNS name 리스트입니다.
          • dnsZones보다 우선순위가 높습니다.
        • dnsZones: [<dnsZone>]
          • 해당 solver를 사용하여 인증서를 발급할 DNS zone 리스트입니다.
      • dns01
        • cloudflare
          • Cloudflare
          • 내장된 Cloudflare solver를 사용합니다.
        • webhook
          • Webhook
          • 외부 webhook 서버로 구성된 solver를 사용합니다.
          • solverName: <solverName>
            • webhook solver의 이름을 설정합니다.
            • webhook 서버에 정의되어 있습니다.
          • groupName: <groupName>
            • webhook 서버에 ChallengePayload 리소스를 POST할 때 사용되는 API group 이름입니다.
            • webhook 서버에 정의되어 있습니다.
          • config: {}
            • webhook 서버에 전달할 설정을 설정합니다.

Certificate

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: <certificateName>
namespace: <namespace>
spec:
secretName: <secretName>
# isCA: false
# secretTemplate:
# annotations:
# <key>: <value>
# labels:
# <key>: <value>
duration: 2160h # 90d
# renewBefore: 360h # 15d
# subject:
# organizations:
# - <organization> # O
privateKey:
algorithm: Ed25519 # RSA|Ed25519|ECDSA

# dnsNames, uris, ipAddresses 중 하나는 필수로 입력해야합니다.
dnsNames: []
uris: []
ipAddresses: []

issuerRef:
group: cert-manager.io
kind: Issuer # Issuer|ClusterIssuer
name: <issuerName>
  • secretName: 인증서가 저장될 Secret의 이름을 설정합니다.

생성된 인증서는 아래와 같은 형태로 저장됩니다.

apiVersion: v1
kind: Secret
metadata:
name: <secretName>
namespace: <namespace>
type: kubernetes.io/tls
data:
ca.crt: <PEM CA certificate>
tls.key: <PEM private key>
tls.crt: <PEM signed certificate chain>
정보

직접 인증서 갱신을 트리거하려면 아래 명령어를 사용합니다.

cmctl renew -n <namespace> <certificateName>