Certificates
cert-manager 具有定义所需 X.509 证书的“证书”概念。证书是一种命名空间资源,它引用Issuer或ClusterIssuer以获取有关如何获取证书的信息。
一个简单的证书可以定义为:
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: acme-crt
spec:
secretName: acme-crt-secret
dnsNames:
- foo.example.com
- bar.example.com
acme:
config:
- http01:
ingressClass: nginx
domains:
- foo.example.com
- bar.example.com
issuerRef:
name: letsencrypt-prod
# We can reference ClusterIssuers by changing the kind here.
# The default value is Issuer (i.e. a locally namespaced Issuer)
kind: Issuer
<br />该证书将告诉 cert-manager 尝试使用指定的颁发者letsencrypt-prod来获取foo.example.com和bar.example.com域的证书密钥对 。如果成功的话,所产生的密钥和证书将被存储在一个名为秘密 acme-crt-secret与键tls.key和tls.crt分别。这个秘密将与Certificate资源位于同一个命名空间中。
该dnsNames字段指定要与证书关联的主题备用名称列表。如果commonName省略该字段,则列表中的第一个元素将是通用名称。
引用的Issuer必须与证书存在于相同的命名空间中。证书也可以引用非命名空间的 ClusterIssuer。
证书期限和更新窗口
cert-manager 证书资源还支持自定义有效期和续订窗口。
重要提示:后端服务实现可以选择生成有效期与颁发者要求的有效期不同的证书。
尽管证书资源上指定了持续时间和续订期限,但相应的颁发者或集群颁发者必须支持这一点。
下表显示了issuer types使用的不同后端服务的支持状态:
Issuer Description
ACME Only ‘renewBefore’ supported
CA Fully supported
Vault Fully supported (although the requested duration must be lower than the configured Vault role’s TTL)
Self Signed Fully supported
Venafi Fully supported
所有证书的默认期限为 90 天,默认续订窗口为 30 天。这意味着证书的有效期为 3 个月,将在到期后的 1 个月内尝试续订。
示例用法
这是一个指定持续时间和续订窗口的issuer示例。
上一节中的证书延长了 24 小时的有效期,并在证书到期前 12 小时开始尝试续订。
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: example
spec:
secretName: example-tls
duration: 24h
renewBefore: 12h
dnsNames:
- foo.example.com
- bar.example.com
issuerRef:
name: my-internal-ca
kind: Issuer