cert-manager CRDs
Issure
- https://cert-manager.io/docs/concepts/issuer/
- https://cert-manager.io/docs/configuration/
- https://cert-manager.io/docs/reference/api-docs/#cert-manager.io/v1.ClusterIssuer
- 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>
- ACME 서버의 directory 엔드포인트를 설정합니다.
- e.g., https://acme-v02.api.letsencrypt.org/directory
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 서버에 정의되어 있습니다.
- webhook 서버에
config: {}
- webhook 서버에 전달할 설정을 설정합니다.
Certificate
Reference
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>