最新:在TwitterMastodon 获取项目更新。

API 参考

cert-manager API 文档,包括各种自定义资源定义

acme.cert-manager.io/v1

包 v1 是 API 的 v1 版本。

资源类型

挑战

挑战是一种类型,用于表示与 ACME 服务器的挑战请求

字段描述
apiVersion

字符串

acme.cert-manager.io/v1
kind

字符串

挑战
metadata
Kubernetes meta/v1.ObjectMeta

有关metadata字段的字段,请参阅 Kubernetes API 文档。

spec
ChallengeSpec


url
字符串

此挑战的 ACME 挑战资源的 URL。这可以用来查找有关此挑战状态的详细信息。

authorizationURL
字符串

此挑战所属的 ACME 授权资源的 URL。

dnsName
字符串

dnsName 是此挑战所针对的标识符,例如 example.com。如果请求的 DNSName 是“通配符”,则此字段必须设置为非通配符域,例如,对于*.example.com,它必须为example.com

wildcard
布尔值
(可选)

如果此挑战针对通配符标识符(例如“*.example.com”),则 wildcard 将为 true。

type
ACMEChallengeType

此资源表示的 ACME 挑战类型。其中之一为“HTTP-01”或“DNS-01”。

token
字符串

此挑战的 ACME 挑战令牌。这是从 ACME 服务器返回的原始值。

key
字符串

此挑战的 ACME 挑战密钥。对于 HTTP01 挑战,这是必须以以下格式响应以完成 HTTP01 挑战的值:<private key JWK thumbprint>.<key from acme server for challenge>。对于 DNS01 挑战,这是必须设置为 TXT 记录内容的<private key JWK thumbprint>.<key from acme server for challenge>文本的 base64 编码 SHA256 校验和。

solver
ACMEChallengeSolver

包含用于解决此挑战资源的域求解配置。

issuerRef
ObjectReference

引用应用于创建此挑战的正确配置的 ACME 类型颁发者。如果颁发者不存在,将重试处理。如果颁发者不是“ACME”颁发者,将返回错误,并且挑战将被标记为失败。

status
ChallengeStatus
(可选)

订单

订单是一种类型,用于表示与 ACME 服务器的订单

字段描述
apiVersion

字符串

acme.cert-manager.io/v1
kind

字符串

订单
metadata
Kubernetes meta/v1.ObjectMeta

有关metadata字段的字段,请参阅 Kubernetes API 文档。

spec
OrderSpec


request
[]byte

DER 编码中的证书签名请求字节。这将在完成订单时使用。此字段必须在订单上设置。

issuerRef
ObjectReference

IssuerRef 引用应用于创建此订单的正确配置的 ACME 类型颁发者。如果颁发者不存在,将重试处理。如果颁发者不是“ACME”颁发者,将返回错误,并且订单将被标记为失败。

commonName
字符串
(可选)

CommonName 是 DER 编码 CSR 上指定的通用名称。如果指定,此值也必须存在于dnsNamesipAddresses中。此字段必须与 DER 编码 CSR 上的相应字段匹配。

dnsNames
[]string
(可选)

DNSNames 是应作为订单验证过程的一部分包含的 DNS 名称列表。此字段必须与 DER 编码 CSR 上的相应字段匹配。

ipAddresses
[]string
(可选)

IPAddresses 是应作为订单验证过程的一部分包含的 IP 地址列表。此字段必须与 DER 编码 CSR 上的相应字段匹配。

duration
Kubernetes meta/v1.Duration
(可选)

Duration 是请求证书的不晚于日期的持续时间。这是根据 ACME 规范在订单创建时设置的。

status
OrderStatus
(可选)

ACMEAuthorization

(出现在: OrderStatus)

ACMEAuthorization 包含从 ACME 服务器返回的数据,这些数据是关于必须完成的授权,以便验证 ACME 订单资源上的 DNS 名称。

字段描述
url
字符串

URL 是必须完成的授权的 URL

identifier
字符串
(可选)

Identifier 是要验证的 DNS 名称,作为此授权的一部分

wildcard
布尔值
(可选)

如果此授权针对通配符 DNS 名称,则 Wildcard 将为 true。如果为 true,则标识符将是 DNS 名称的非通配符版本。例如,如果“*.example.com”是正在验证的 DNS 名称,则此字段将为“true”,而“identifier”字段将为“example.com”。

initialState
State
(可选)

InitialState 是从 ACME 服务器首次获取 ACME 授权时的初始状态。如果授权已经“有效”,则订单控制器将不会为授权创建挑战资源。当使用启用“authz 重用”的 ACME 服务器(例如 Let's Encrypt 的生产端点)时,将发生这种情况。如果没有设置并且“identifier”已设置,则状态被假定为待处理,并且将创建挑战。

challenges
[]ACMEChallenge
(可选)

Challenges 指定 ACME 服务器提供的挑战类型。验证 DNS 名称时,将选择这些挑战类型之一,并将创建适当的挑战资源以执行 ACME 挑战过程。

ACMEChallenge

(出现在: ACMEAuthorization)

Challenge 指定 ACME 服务器为订单提供的挑战。可以创建适当的挑战资源以执行 ACME 挑战过程。

字段描述
url
字符串

URL 是此挑战的 URL。它可以用来从 ACME 服务器检索有关挑战的其他元数据。

token
字符串

Token 是必须为此挑战提供的令牌。这用于计算也必须提供的“密钥”。

type
字符串

Type 是提供的挑战类型,例如“http-01”、“dns-01”、“tls-sni-01”等。这是从 ACME 服务器检索到的原始值。cert-manager 仅支持“http-01”和“dns-01”,其他值将被忽略。

ACMEChallengeSolver

(出现在: ACMEIssuer, ChallengeSpec)

ACMEChallengeSolver 描述了如何解决其所属颁发者的 ACME 挑战。可以提供选择器以对不同的 DNS 名称使用不同的解决策略。只能提供 HTTP01 或 DNS01 中的一个。

字段描述
selector
CertificateDNSNameSelector
(可选)

Selector 选择应使用此挑战求解器解决的证书资源上的 DNSName 集。如果未指定,则求解器将被视为具有最低优先级的“默认”求解器,即,如果任何其他求解器具有更具体的匹配,则将使用该求解器。

http01
ACMEChallengeSolverHTTP01
(可选)

配置 cert-manager 以尝试通过执行 HTTP01 挑战流程来完成授权。使用 HTTP01 挑战机制无法为通配符域名(例如*.example.com)获取证书。

dns01
ACMEChallengeSolverDNS01
(可选)

配置 cert-manager 以尝试通过执行 DNS01 挑战流程来完成授权。

ACMEChallengeSolverDNS01

(出现在: ACMEChallengeSolver)

用于配置 DNS01 挑战提供程序,以便在解决 DNS01 挑战时使用。每个求解器只能配置一个 DNS 提供程序。

字段描述
cnameStrategy
CNAMEStrategy
(可选)

CNAMEStrategy 配置 DNS01 提供程序在 DNS 区域中找到 CNAME 记录时应如何处理它们。

akamai
ACMEIssuerDNS01ProviderAkamai
(可选)

使用 Akamai DNS 区域管理 API 管理 DNS01 挑战记录。

cloudDNS
ACMEIssuerDNS01ProviderCloudDNS
(可选)

使用 Google Cloud DNS API 管理 DNS01 挑战记录。

cloudflare
ACMEIssuerDNS01ProviderCloudflare
(可选)

使用 Cloudflare API 管理 DNS01 挑战记录。

route53
ACMEIssuerDNS01ProviderRoute53
(可选)

使用 AWS Route53 API 管理 DNS01 挑战记录。

azureDNS
ACMEIssuerDNS01ProviderAzureDNS
(可选)

使用 Microsoft Azure DNS API 管理 DNS01 挑战记录。

digitalocean
ACMEIssuerDNS01ProviderDigitalOcean
(可选)

使用 DigitalOcean DNS API 管理 DNS01 挑战记录。

acmeDNS
ACMEIssuerDNS01ProviderAcmeDNS
(可选)

使用“ACME DNS”(https://github.com/joohoi/acme-dns)API 管理 DNS01 挑战记录。

rfc2136
ACMEIssuerDNS01ProviderRFC2136
(可选)

使用 RFC2136(“域名系统中的动态更新”)(https://datatracker.ietf.org/doc/rfc2136/)管理 DNS01 挑战记录。

webhook
ACMEIssuerDNS01ProviderWebhook
(可选)

配置基于外部 Webhook 的 DNS01 挑战求解器以管理 DNS01 挑战记录。

ACMEChallengeSolverHTTP01

(出现在: ACMEChallengeSolver)

ACMEChallengeSolverHTTP01 包含有关如何在 Kubernetes 集群中解决 HTTP01 挑战的详细配置。通常,这是通过创建某种描述的“路由”来完成的,这些路由配置 ingress 控制器将流量定向到“求解器 pod”,这些 pod 负责响应 ACME 服务器的 HTTP 请求。只能指定 Ingress/Gateway 中的一个。

字段描述
ingress
ACMEChallengeSolverHTTP01Ingress
(可选)

基于 ingress 的 HTTP01 挑战求解器将通过创建或修改 Ingress 资源来解决挑战,以将对“/.well-known/acme-challenge/XYZ”的请求路由到为每个要完成的挑战由 cert-manager 预配的“挑战求解器”pod。

gatewayHTTPRoute
ACMEChallengeSolverHTTP01GatewayHTTPRoute
(可选)

Gateway API 是 sig-network 社区 API,它对 Kubernetes 中的服务网络进行建模(https://gateway-api.kubernetes.ac.cn/)。Gateway 求解器将在与挑战相同的命名空间中创建具有指定标签的 HTTPRoute。此求解器处于实验阶段,字段/行为在将来可能会发生变化。

ACMEChallengeSolverHTTP01GatewayHTTPRoute

(出现在: ACMEChallengeSolverHTTP01)

ACMEChallengeSolverHTTP01GatewayHTTPRoute 求解器将为路由到 ACME 挑战求解器 pod 的 Gateway 类创建 HTTPRoute 对象。

字段描述
serviceType
Kubernetes core/v1.ServiceType
(可选)

Kubernetes 求解器服务的可选服务类型。支持的值为 NodePort 或 ClusterIP。如果未设置,则默认为 NodePort。

labels
map[string]string
(可选)

将应用于 cert-manager 在解决 HTTP-01 挑战时创建的 HTTPRoute 的自定义标签。

parentRefs
[]sigs.k8s.io/gateway-api/apis/v1.ParentReference

在解决 HTTP-01 挑战时,cert-manager 会创建 HTTPRoute。cert-manager 需要知道在创建 HTTPRoute 时应使用哪些 parentRefs。通常,parentRef 引用 Gateway。参见:https://gateway-api.kubernetes.ac.cn/api-types/httproute/#attaching-to-gateways

podTemplate
ACMEChallengeSolverHTTP01IngressPodTemplate
(可选)

用于配置用于 HTTP01 挑战的 ACME 挑战求解器 pod 的可选 pod 模板。

ACMEChallengeSolverHTTP01Ingress

(出现在: ACMEChallengeSolverHTTP01)

字段描述
serviceType
Kubernetes core/v1.ServiceType
(可选)

Kubernetes 求解器服务的可选服务类型。支持的值为 NodePort 或 ClusterIP。如果未设置,则默认为 NodePort。

ingressClassName
字符串
(可选)

此字段配置创建的 Ingress 资源上的字段ingressClassName,这些资源用于解决使用此挑战求解器的 ACME 挑战。这是配置 ingress 类的推荐方法。只能指定classnameingressClassName中的一个。

class
字符串
(可选)

此字段在创建 Ingress 资源时配置注释kubernetes.io/ingress.class,以解决使用此挑战求解器的 ACME 挑战。只能指定classnameingressClassName中的一个。

name
字符串
(可选)

应在其中插入 ACME 挑战解决路由以解决 HTTP01 挑战的 ingress 资源的名称。这通常与 ingress-gce 等 ingress 控制器结合使用,这些控制器在外部 IP 和 ingress 资源之间维护 1:1 映射。只能指定classnameingressClassName中的一个。

podTemplate
ACMEChallengeSolverHTTP01IngressPodTemplate
(可选)

用于配置用于 HTTP01 挑战的 ACME 挑战求解器 pod 的可选 pod 模板。

ingressTemplate
ACMEChallengeSolverHTTP01IngressTemplate
(可选)

用于配置用于 HTTP01 挑战的 ACME 挑战求解器 ingress 的可选 ingress 模板。

ACMEChallengeSolverHTTP01IngressObjectMeta

(出现在: ACMEChallengeSolverHTTP01IngressTemplate)

字段描述
annotations
map[string]string
(可选)

应添加到创建的 ACME HTTP01 求解器 ingress 的注释。

labels
map[string]string
(可选)

应添加到创建的 ACME HTTP01 求解器 Ingress 的标签。

ACMEChallengeSolverHTTP01IngressPodObjectMeta

(显示于: ACMEChallengeSolverHTTP01IngressPodTemplate)

字段描述
annotations
map[string]string
(可选)

应添加到创建的 ACME HTTP01 求解器 Pod 的注释。

labels
map[string]string
(可选)

应添加到创建的 ACME HTTP01 求解器 Pod 的标签。

ACMEChallengeSolverHTTP01IngressPodSecurityContext

(显示于: ACMEChallengeSolverHTTP01IngressPodSpec)

字段描述
seLinuxOptions
Kubernetes core/v1.SELinuxOptions
(可选)

要应用于所有容器的 SELinux 上下文。如果未指定,容器运行时将为每个容器分配随机的 SELinux 上下文。也可以在 SecurityContext 中设置。如果在 SecurityContext 和 PodSecurityContext 中都设置,则 SecurityContext 中指定的值优先于该容器。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

runAsUser
int64
(可选)

运行容器进程入口点的 UID。如果未指定,默认为映像元数据中指定的用户。也可以在 SecurityContext 中设置。如果在 SecurityContext 和 PodSecurityContext 中都设置,则 SecurityContext 中指定的值优先于该容器。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

runAsGroup
int64
(可选)

运行容器进程入口点的 GID。如果未设置,则使用运行时默认值。也可以在 SecurityContext 中设置。如果在 SecurityContext 和 PodSecurityContext 中都设置,则 SecurityContext 中指定的值优先于该容器。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

runAsNonRoot
布尔值
(可选)

指示容器必须以非 root 用户身份运行。如果为 true,Kubelet 将在运行时验证映像以确保它不以 UID 0(root)身份运行,如果运行,则会停止启动容器。如果未设置或为 false,则不会执行此类验证。也可以在 SecurityContext 中设置。如果在 SecurityContext 和 PodSecurityContext 中都设置,则 SecurityContext 中指定的值优先。

supplementalGroups
[]int64
(可选)

除了容器的主要 GID、fsGroup(如果指定)以及容器映像中为容器进程 uid 定义的组成员身份外,应用于每个容器中运行的第一个进程的一系列组。如果未指定,则不会向任何容器添加其他组。请注意,容器映像中为容器进程 uid 定义的组成员身份仍然有效,即使它们未包含在此列表中。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

fsGroup
int64
(可选)

应用于 Pod 中所有容器的特殊补充组。某些卷类型允许 Kubelet 更改该卷的所有权,使其归 Pod 所有

  1. 拥有 GID 将是 FSGroup
  2. 设置 setgid 位(在卷中创建的新文件将由 FSGroup 拥有)
  3. 权限位将与 rw-rw—- 相或

如果未设置,Kubelet 不会修改任何卷的所有权和权限。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

sysctls
[]Kubernetes core/v1.Sysctl
(可选)

Sysctls 包含用于 Pod 的命名空间 sysctls 列表。具有不受支持的 sysctls(由容器运行时)的 Pod 可能无法启动。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

fsGroupChangePolicy
Kubernetes core/v1.PodFSGroupChangePolicy
(可选)

fsGroupChangePolicy 定义在卷暴露到 Pod 内部之前更改卷的所有权和权限的行为。此字段仅适用于支持基于 fsGroup 的所有权(和权限)的卷类型。它对短暂的卷类型(例如:secret、configmaps 和 emptydir)无效。有效值为“OnRootMismatch”和“Always”。如果未指定,则使用“Always”。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

seccompProfile
Kubernetes core/v1.SeccompProfile
(可选)

此 Pod 中容器使用的 seccomp 选项。请注意,当 spec.os.name 为 windows 时,无法设置此字段。

ACMEChallengeSolverHTTP01IngressPodSpec

(显示于: ACMEChallengeSolverHTTP01IngressPodTemplate)

字段描述
nodeSelector
map[string]string
(可选)

NodeSelector 是一个选择器,Pod 必须为 true 才能适合节点。选择器必须与节点的标签匹配才能将 Pod 调度到该节点。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/assign-pod-node/

affinity
Kubernetes core/v1.Affinity
(可选)

如果指定,则为 Pod 的调度约束

tolerations
[]Kubernetes core/v1.Toleration
(可选)

如果指定,则为 Pod 的容忍度。

priorityClassName
字符串
(可选)

如果指定,则为 Pod 的 priorityClassName。

serviceAccountName
字符串
(可选)

如果指定,则为 Pod 的服务帐户

imagePullSecrets
[]Kubernetes core/v1.LocalObjectReference
(可选)

如果指定,则为 Pod 的 imagePullSecrets

securityContext
ACMEChallengeSolverHTTP01IngressPodSecurityContext
(可选)

如果指定,则为 Pod 的安全上下文

ACMEChallengeSolverHTTP01IngressPodTemplate

(显示于: ACMEChallengeSolverHTTP01GatewayHTTPRoute, ACMEChallengeSolverHTTP01Ingress)

字段描述
metadata
ACMEChallengeSolverHTTP01IngressPodObjectMeta
(可选)

用于解决 HTTP01 挑战的 Pod 的 ObjectMeta 覆盖。仅 'labels' 和 'annotations' 字段可以设置。如果标签或注释与内置值重叠,则此处的值将覆盖内置值。

spec
ACMEChallengeSolverHTTP01IngressPodSpec
(可选)

PodSpec 定义了对 HTTP01 挑战求解器 Pod 的覆盖。查看 ACMEChallengeSolverHTTP01IngressPodSpec 了解当前支持的字段。所有其他字段将被忽略。



nodeSelector
map[string]string
(可选)

NodeSelector 是一个选择器,Pod 必须为 true 才能适合节点。选择器必须与节点的标签匹配才能将 Pod 调度到该节点。更多信息:https://kubernetes.ac.cn/docs/concepts/configuration/assign-pod-node/

affinity
Kubernetes core/v1.Affinity
(可选)

如果指定,则为 Pod 的调度约束

tolerations
[]Kubernetes core/v1.Toleration
(可选)

如果指定,则为 Pod 的容忍度。

priorityClassName
字符串
(可选)

如果指定,则为 Pod 的 priorityClassName。

serviceAccountName
字符串
(可选)

如果指定,则为 Pod 的服务帐户

imagePullSecrets
[]Kubernetes core/v1.LocalObjectReference
(可选)

如果指定,则为 Pod 的 imagePullSecrets

securityContext
ACMEChallengeSolverHTTP01IngressPodSecurityContext
(可选)

如果指定,则为 Pod 的安全上下文

ACMEChallengeSolverHTTP01IngressTemplate

(显示于: ACMEChallengeSolverHTTP01Ingress)

字段描述
metadata
ACMEChallengeSolverHTTP01IngressObjectMeta
(可选)

用于解决 HTTP01 挑战的 Ingress 的 ObjectMeta 覆盖。仅 'labels' 和 'annotations' 字段可以设置。如果标签或注释与内置值重叠,则此处的值将覆盖内置值。

ACMEChallengeType(string 别名)

(显示于: ChallengeSpec)

ACME 挑战的类型。仅支持 HTTP-01 和 DNS-01。

描述

"DNS-01"

ACMEChallengeTypeDNS01 表示挑战类型为 dns-01 更多信息:https://letsencrypt.openssl.ac.cn/docs/challenge-types/#dns-01-challenge

"HTTP-01"

ACMEChallengeTypeHTTP01 表示挑战类型为 http-01 更多信息:https://letsencrypt.openssl.ac.cn/docs/challenge-types/#http-01-challenge

ACMEExternalAccountBinding

(显示于: ACMEIssuer)

ACMEExternalAccountBinding 是对 ACME 服务器的 CA 外部帐户的引用。

字段描述
keyID
字符串

keyID 是 CA 密钥的 ID,外部帐户绑定到该密钥。

keySecretRef
SecretKeySelector

keySecretRef 是一个 Secret 密钥选择器,引用 Kubernetes Secret 中的一个数据项,该数据项保存外部帐户绑定的对称 MAC 密钥。key 是与 Secret 中的密钥数据配对的索引字符串,不应与密钥数据本身混淆,也不应与上面的外部帐户绑定 keyID 混淆。存储在 Secret 中的密钥必须是非填充的,base64 URL 编码的数据。

keyAlgorithm
HMACKeyAlgorithm
(可选)

已弃用:keyAlgorithm 字段存在是为了历史兼容性,不应使用。该算法现在在 golang/x/crypto/acme 中硬编码为 HS256。

ACMEIssuer

(显示于: IssuerConfig)

ACMEIssuer 包含 ACME 发行者的规范。这使用 RFC8555 规范通过完成“挑战”来获取证书,以证明对域标识符的所有权。不支持早期草案版本的 ACME 规范。

字段描述
email
字符串
(可选)

Email 是要与 ACME 帐户关联的电子邮件地址。此字段是可选的,但强烈建议设置。它将用于在您的帐户或证书出现问题时与您联系,包括到期通知电子邮件。此字段可以在帐户最初注册后更新。

server
字符串

Server 是用于访问 ACME 服务器的“目录”端点的 URL。例如,对于 Let’s Encrypt 的暂存端点,您将使用:“https://acme-staging-v02.api.letsencrypt.org/directory”。仅支持 ACME v2 端点(即 RFC 8555)。

preferredChain
字符串
(可选)

PreferredChain 是在 ACME 服务器输出多个证书时要使用的证书链。PreferredChain 并不保证此证书链能被 ACME 端点交付。例如,对于 Let’s Encrypt 的 DST 交叉签名,您将使用:“DST Root CA X3”或“ISRG Root X1”用于较新的 Let’s Encrypt 根 CA。此值在 ACME 默认链和备用链的组合集中选择第一个证书捆绑包,该捆绑包具有以该值作为其发行者的通用名的最根证书。

caBundle
[]byte
(可选)

Base64 编码的 PEM CA 捆绑包,可用于验证 ACME 服务器提供的证书链。与 SkipTLSVerify 相互排斥;优先使用 CABundle 以防止各种安全漏洞。如果 CABundle 和 SkipTLSVerify 未设置,则使用容器内的系统证书捆绑包来验证 TLS 连接。

skipTLSVerify
布尔值
(可选)

不安全:启用或禁用 ACME 服务器 TLS 证书的验证。如果为 true,对 ACME 服务器的请求将不会验证 TLS 证书链。与 CABundle 相互排斥;优先使用 CABundle 以防止各种安全漏洞。仅在开发环境中启用此选项。如果 CABundle 和 SkipTLSVerify 未设置,则使用容器内的系统证书捆绑包来验证 TLS 连接。默认为 false。

externalAccountBinding
ACMEExternalAccountBinding
(可选)

ExternalAccountBinding 是对 ACME 服务器的 CA 外部帐户的引用。如果设置,cert-manager 将在注册时尝试将给定的外部帐户凭据与已注册的 ACME 帐户关联。

privateKeySecretRef
SecretKeySelector

PrivateKey 是 Kubernetes Secret 资源的名称,将用于存储自动生成的 ACME 帐户私钥。可选地,可以指定一个key 来选择命名 Secret 资源中的特定条目。如果未指定key,则将使用默认的tls.key

solvers
[]ACMEChallengeSolver
(可选)

Solvers 是将用于解决与匹配域的 ACME 挑战的挑战求解器列表。必须提供求解器配置才能从 ACME 服务器获取证书。有关更多信息,请参阅:https://cert-manager.k8s.ac.cn/docs/configuration/acme/

disableAccountKeyGeneration
布尔值
(可选)

启用或禁用生成新的 ACME 帐户密钥。如果为 true,Issuer 资源不会请求新帐户,而是会期望通过现有密钥提供帐户密钥。如果为 false,cert-manager 系统将为 Issuer 生成新的 ACME 帐户密钥。默认为 false。

enableDurationFeature
布尔值
(可选)

启用在证书上请求与证书持续时间相匹配的“不晚于”日期。并非所有 ACME 服务器(如 Let’s Encrypt)都支持此功能。如果在 ACME 服务器不支持的情况下设置为 true,则会在订单上创建错误。默认为 false。

ACMEIssuerDNS01ProviderAcmeDNS

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderAcmeDNS 是一个包含 ACME-DNS 服务器配置的结构

字段描述
host
字符串
accountSecretRef
SecretKeySelector

ACMEIssuerDNS01ProviderAkamai

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderAkamai 是一个结构,包含 Akamai DNS 的 DNS 配置,即区域记录管理 API。

字段描述
服务消费者域名
字符串
客户端令牌密钥引用
SecretKeySelector
客户端密钥密钥引用
SecretKeySelector
访问令牌密钥引用
SecretKeySelector

ACMEIssuerDNS01ProviderAzureDNS

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderAzureDNS 是一个结构,包含 Azure DNS 的配置。

字段描述
客户端 ID
字符串
(可选)

身份验证:Azure 服务主体:用于向 Azure DNS 进行身份验证的 Azure 服务主体的 ClientID。如果已设置,则 ClientSecret 和 TenantID 也必须设置。

客户端密钥密钥引用
SecretKeySelector
(可选)

身份验证:Azure 服务主体:对包含与服务主体关联的密码的密钥的引用。如果已设置,则 ClientID 和 TenantID 也必须设置。

订阅 ID
字符串

Azure 订阅的 ID

租户 ID
字符串
(可选)

身份验证:Azure 服务主体:用于向 Azure DNS 进行身份验证的 Azure 服务主体的 TenantID。如果已设置,则 ClientID 和 ClientSecret 也必须设置。

资源组名称
字符串

DNS 区域所在的资源组

托管区域名称
字符串
(可选)

要使用的 DNS 区域的名称

环境
AzureDNSEnvironment
(可选)

Azure 环境的名称(默认值为 AzurePublicCloud)

托管身份
AzureManagedIdentity
(可选)

身份验证:Azure 工作负载身份或 Azure 托管服务身份:设置以启用 Azure 工作负载身份或 Azure 托管服务身份。如果已设置,则 ClientID、ClientSecret 和 TenantID 必须未设置。

ACMEIssuerDNS01ProviderCloudDNS

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderCloudDNS 是一个结构,包含 Google Cloud DNS 的 DNS 配置。

字段描述
服务帐户密钥引用
SecretKeySelector
(可选)
项目
字符串
托管区域名称
字符串
(可选)

HostedZoneName 是一个可选字段,它告诉 cert-manager 在哪个 Cloud DNS 区域创建挑战记录。如果留空,cert-manager 将自动选择一个区域。

ACMEIssuerDNS01ProviderCloudflare

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderCloudflare 是一个结构,包含 Cloudflare 的 DNS 配置。必须提供 apiKeySecretRefapiTokenSecretRef 之一。

字段描述
email
字符串
(可选)

帐户的电子邮件,仅在使用基于 API 密钥的身份验证时需要。

apiKeySecretRef
SecretKeySelector
(可选)

用于向 Cloudflare 进行身份验证的 API 密钥。注意:现在建议使用 API 令牌进行身份验证,因为它允许更好地控制权限。

apiTokenSecretRef
SecretKeySelector
(可选)

用于向 Cloudflare 进行身份验证的 API 令牌。

ACMEIssuerDNS01ProviderDigitalOcean

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderDigitalOcean 是一个结构,包含 DigitalOcean 域的 DNS 配置。

字段描述
令牌密钥引用
SecretKeySelector

ACMEIssuerDNS01ProviderRFC2136

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderRFC2136 是一个结构,包含 RFC2136 DNS 的配置。

字段描述
名称服务器
字符串

支持 RFC2136 的权威 DNS 服务器的 IP 地址或主机名,格式为 host:port。如果主机是 IPv6 地址,则必须用方括号括起来(例如 [2001:db8::1]);端口是可选的。此字段是必需的。

tsigSecretSecretRef
SecretKeySelector
(可选)

包含 TSIG 值的密钥的名称。如果定义了 tsigKeyName,则此字段是必需的。

tsigKeyName
字符串
(可选)

在 DNS 中配置的 TSIG 密钥名称。如果定义了 tsigSecretSecretRef,则此字段是必需的。

tsigAlgorithm
字符串
(可选)

在支持 RFC2136 的 DNS 中配置的 TSIG 算法。仅在定义了 tsigSecretSecretReftsigKeyName 时使用。支持的值为(不区分大小写):HMACMD5(默认)、HMACSHA1HMACSHA256HMACSHA512

ACMEIssuerDNS01ProviderRoute53

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderRoute53 是一个结构,包含 AWS 的 Route 53 配置。

字段描述
身份验证
Route53Auth
(可选)

Auth 配置 cert-manager 如何进行身份验证。

访问密钥 ID
字符串
(可选)

AccessKeyID 用于身份验证。在设置 SecretAccessKeyID 时无法设置。如果既未设置访问密钥,也未设置密钥 ID,我们将回退到使用环境变量、共享凭据文件或 AWS 实例元数据,请参见:https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials

accessKeyIDSecretRef
SecretKeySelector
(可选)

SecretAccessKey 用于身份验证。如果已设置,则从 Kubernetes 密钥中的密钥中提取 AWS 访问密钥 ID。在设置 AccessKeyID 时无法设置。如果既未设置访问密钥,也未设置密钥 ID,我们将回退到使用环境变量、共享凭据文件或 AWS 实例元数据,请参见:https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials

secretAccessKeySecretRef
SecretKeySelector
(可选)

SecretAccessKey 用于身份验证。如果既未设置访问密钥,也未设置密钥 ID,我们将回退到使用环境变量、共享凭据文件或 AWS 实例元数据,请参见:https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials

角色
字符串
(可选)

角色是 Route53 提供程序将使用显式凭据 AccessKeyID/SecretAccessKey 或从环境变量、共享凭据文件或 AWS 实例元数据中推断出的凭据来承担的角色 ARN。

托管区域 ID
字符串
(可选)

如果已设置,提供程序将仅管理 Route53 中的此区域,并且不会使用 route53:ListHostedZonesByName api 调用进行查找。

区域
字符串
(可选)

覆盖 AWS 区域。

Route53 是一项全球性服务,没有区域性端点,但此处指定的区域(或通过环境变量)用作提示,以帮助在连接到 Route53 时计算正确的 AWS 凭据范围和分区。请参见:- Amazon Route 53 端点和配额- 全局服务

如果省略此区域字段,cert-manager 将使用 AWS_REGION 和 AWS_DEFAULT_REGION 环境变量中的区域(如果这些变量在 cert-manager 控制器 Pod 中设置)。

如果您使用 适用于服务帐户的 IAM 角色 (IRSA),则不需要 region 字段。相反,AWS_REGION 环境变量将由 Amazon EKS Pod 身份 Webhook 添加到 cert-manager 控制器 Pod 中。在这种情况下,此 region 字段的值将被忽略。

如果您使用 EKS Pod 身份,则不需要 region 字段。相反,AWS_REGION 环境变量将由 Amazon EKS Pod 身份代理 添加到 cert-manager 控制器 Pod 中。在这种情况下,此 region 字段的值将被忽略。

ACMEIssuerDNS01ProviderWebhook

(显示于: ACMEChallengeSolverDNS01)

ACMEIssuerDNS01ProviderWebhook 指定了 webhook DNS01 提供程序的配置,包括向哪里 POST ChallengePayload 资源。

字段描述
组名
字符串

向 webhook apiserver POST ChallengePayload 资源时应使用的 API 组名。这应该与 webhook 提供程序实现中指定的 GroupName 相同。

求解器名称
字符串

要使用的求解器的名称,如 webhook 提供程序实现中定义的那样。这通常是提供程序的名称,例如“cloudflare”。

配置
Kubernetes apiextensions/v1.JSON
(可选)

在处理挑战时应传递到 webhook apiserver 的附加配置。这可以包含任意 JSON 数据。此节中不应指定秘密值。如果需要秘密值(例如 DNS 服务的凭据),您应该使用 SecretKeySelector 来引用 Secret 资源。有关此字段模式的详细信息,请参阅 webhook 提供程序实现的文档。

ACMEIssuerStatus

(出现在: IssuerStatus)

字段描述
URI
字符串
(可选)

URI 是唯一的帐户标识符,它也可以用于从 CA 检索帐户详细信息。

lastRegisteredEmail
字符串
(可选)

LastRegisteredEmail 是与最新注册的 ACME 帐户关联的电子邮件,以便跟踪对与颁发者关联的注册帐户所做的更改。

lastPrivateKeyHash
字符串
(可选)

LastPrivateKeyHash 是与最新注册的 ACME 帐户关联的私钥的哈希值,以便跟踪对与颁发者关联的注册帐户所做的更改。

AzureDNSEnvironment (string 别名)

(出现在: ACMEIssuerDNS01ProviderAzureDNS)

描述

"AzureChinaCloud"

"AzureGermanCloud"

"AzurePublicCloud"

"AzureUSGovernmentCloud"

AzureManagedIdentity

(出现在: ACMEIssuerDNS01ProviderAzureDNS)

AzureManagedIdentity 包含 Azure 工作负载身份或 Azure 托管服务身份的配置。如果设置了 AZURE_FEDERATED_TOKEN_FILE 环境变量,则将使用 Azure 工作负载身份。否则,我们将回退到使用 Azure 托管服务身份。

字段描述
客户端 ID
字符串
(可选)

托管身份的客户端 ID,不能与 resourceID 同时使用。

resourceID
字符串
(可选)

托管身份的资源 ID,不能与 clientID 同时使用。不能用于 Azure 托管服务身份。

CNAMEStrategy (string 别名)

(显示于: ACMEChallengeSolverDNS01)

CNAMEStrategy 配置 DNS01 提供程序在 DNS 区域中找到 CNAME 记录时应如何处理。默认情况下,将应用 None 策略(即不跟随 CNAME)。

CertificateDNSNameSelector

(出现在: ACMEChallengeSolver)

CertificateDNSNameSelector 使用标签选择器选择证书,并且可以选择在这些证书中选择单个 DNS 名称。如果 MatchLabels 和 DNSNames 都为空,则此选择器将匹配所有证书及其中的所有 DNS 名称。

字段描述
matchLabels
map[string]string
(可选)

用于细化此挑战求解器将应用于的证书集的标签选择器。

dnsNames
[]string
(可选)

此求解器将用于解决的 DNSNames 列表。如果指定了并找到了匹配项,则 dnsNames 选择器将优先于 dnsZones 选择器。如果多个求解器使用相同的 dnsNames 值匹配,则将选择 matchLabels 中具有最多匹配标签的求解器。如果两者都没有更多匹配项,则将选择列表中定义较早的求解器。

dnsZones
[]string
(可选)

此求解器将用于解决的 DNSZones 列表。此处指定的匹配最具体的 DNS 区域将优先于其他 DNS 区域匹配,因此,为 sys.example.com 指定的求解器将在为 example.com 指定的求解器之前被选中,用于域名 www.sys.example.com。如果多个求解器使用相同的 dnsZones 值匹配,则将选择 matchLabels 中具有最多匹配标签的求解器。如果两者都没有更多匹配项,则将选择列表中定义较早的求解器。

ChallengeSpec

(出现在: Challenge)

字段描述
url
字符串

此挑战的 ACME 挑战资源的 URL。这可以用来查找有关此挑战状态的详细信息。

authorizationURL
字符串

此挑战所属的 ACME 授权资源的 URL。

dnsName
字符串

dnsName 是此挑战所针对的标识符,例如 example.com。如果请求的 DNSName 是“通配符”,则此字段必须设置为非通配符域,例如,对于*.example.com,它必须为example.com

wildcard
布尔值
(可选)

如果此挑战针对通配符标识符(例如“*.example.com”),则 wildcard 将为 true。

type
ACMEChallengeType

此资源表示的 ACME 挑战类型。其中之一为“HTTP-01”或“DNS-01”。

token
字符串

此挑战的 ACME 挑战令牌。这是从 ACME 服务器返回的原始值。

key
字符串

此挑战的 ACME 挑战密钥。对于 HTTP01 挑战,这是必须以以下格式响应以完成 HTTP01 挑战的值:<private key JWK thumbprint>.<key from acme server for challenge>。对于 DNS01 挑战,这是必须设置为 TXT 记录内容的<private key JWK thumbprint>.<key from acme server for challenge>文本的 base64 编码 SHA256 校验和。

solver
ACMEChallengeSolver

包含用于解决此挑战资源的域求解配置。

issuerRef
ObjectReference

引用应用于创建此挑战的正确配置的 ACME 类型颁发者。如果颁发者不存在,将重试处理。如果颁发者不是“ACME”颁发者,将返回错误,并且挑战将被标记为失败。

ChallengeStatus

(出现在: Challenge)

字段描述
处理中
布尔值
(可选)

用于表示是否应处理此挑战。此字段将仅由“调度”组件设置为 true。它将仅由“挑战”控制器在挑战达到最终状态或超时后设置为 false。如果此字段设置为 false,挑战控制器将不再采取任何操作。

已呈现
布尔值
(可选)

如果当前“呈现”了此挑战的挑战值,则 presented 将设置为 true。这表示自检正在通过。只是表示这些值已“提交”用于相应的挑战机制(即已呈现 DNS01 TXT 记录,或者已配置 HTTP01 配置)。

原因
字符串
(可选)

包含有关挑战处于当前状态的原因的人类可读信息。

状态
State
(可选)

包含挑战的当前“状态”。如果未设置,则挑战的状态未知。

HMACKeyAlgorithm (string 别名)

(出现在: ACMEExternalAccountBinding)

HMACKeyAlgorithm 是用于 HMAC 加密的密钥算法的名称。

描述

"HS256"

"HS384"

"HS512"

OrderSpec

(出现在: Order)

字段描述
request
[]byte

DER 编码中的证书签名请求字节。这将在完成订单时使用。此字段必须在订单上设置。

issuerRef
ObjectReference

IssuerRef 引用应用于创建此订单的正确配置的 ACME 类型颁发者。如果颁发者不存在,将重试处理。如果颁发者不是“ACME”颁发者,将返回错误,并且订单将被标记为失败。

commonName
字符串
(可选)

CommonName 是 DER 编码 CSR 上指定的通用名称。如果指定,此值也必须存在于dnsNamesipAddresses中。此字段必须与 DER 编码 CSR 上的相应字段匹配。

dnsNames
[]string
(可选)

DNSNames 是应作为订单验证过程的一部分包含的 DNS 名称列表。此字段必须与 DER 编码 CSR 上的相应字段匹配。

ipAddresses
[]string
(可选)

IPAddresses 是应作为订单验证过程的一部分包含的 IP 地址列表。此字段必须与 DER 编码 CSR 上的相应字段匹配。

duration
Kubernetes meta/v1.Duration
(可选)

Duration 是请求证书的不晚于日期的持续时间。这是根据 ACME 规范在订单创建时设置的。

OrderStatus

(出现在: Order)

字段描述
url
字符串
(可选)

订单的 URL。最初,在资源首次创建时,此字段将为空。订单控制器将在首次处理订单时填充此字段。此字段在最初设置后将不可变。

finalizeURL
字符串
(可选)

订单的 FinalizeURL。这用于在订单完成并过渡到“有效”状态后,为该订单获取证书。

授权
[]ACMEAuthorization
(可选)

Authorizations 包含从 ACME 服务器返回的数据,这些数据表明必须完成哪些授权才能验证订单上指定的 DNS 名称。

证书
[]byte
(可选)

Certificate 是此订单的 PEM 编码证书的副本。此字段将在订单成功完成与 ACME 服务器的最终确定并订单过渡到“有效”状态后填充。

状态
State
(可选)

状态包含此订单资源的当前状态。状态“成功”和“过期”是“最终”状态。

原因
字符串
(可选)

原因可选地提供有关订单为何处于当前状态的更多信息。

失败时间
Kubernetes meta/v1.Time
(可选)

FailureTime 存储此订单失败的时间。这用于影响垃圾收集和回退。

Route53Auth

显示于: ACMEIssuerDNS01ProviderRoute53

Route53Auth 是用于向 Route53 进行身份验证的配置。

字段描述
Kubernetes
Route53KubernetesAuth

Kubernetes 通过传递绑定 ServiceAccount 令牌,使用 AssumeRoleWithWebIdentity 对 Route53 进行身份验证。

Route53KubernetesAuth

显示于: Route53Auth

Route53KubernetesAuth 是一种配置,用于使用绑定 Kubernetes ServiceAccount 令牌对 Route53 进行身份验证。

字段描述
serviceAccountRef
ServiceAccountRef

对将用于请求绑定令牌(也称为“投影令牌”)的服务帐户的引用。要使用此字段,您必须配置一个 RBAC 规则以允许 cert-manager 请求令牌。

ServiceAccountRef

显示于: Route53KubernetesAuth

ServiceAccountRef 是 cert-manager 用于请求令牌的服务帐户。cert-manager 还将令牌的有效期设置为 10 分钟。

字段描述
name
字符串

用于请求令牌的 ServiceAccount 的名称。

受众
[]string
(可选)

TokenAudiences 是一个可选的受众列表,用于包含在传递给 AWS 的令牌中。始终包含由发行者命名空间和名称组成的默认令牌。如果未设置,则受众默认为 sts.amazonaws.com

状态(string 别名)

显示于: ACMEAuthorizationChallengeStatusOrderStatus

状态表示 ACME 资源(如订单)的状态。这里的可能选项映射到 ACME 规范中的相应值。这些值的详细信息可以在此处找到: https://tools.ietf.org/html/draft-ietf-acme-acme-15#section-7.1.6 使用此类型的客户端还必须优雅地处理未知值,因为此枚举的内容可能会随着时间的推移而添加。

描述

"错误"

Errored 表示 ACME 资源由于某种原因出错。这是一个万能状态,用于标记内部 cert-manager 错误,例如验证失败。这是一个最终状态。

"过期"

Expired 表示 ACME 资源已过期。如果订单标记为“过期”,则其验证之一可能已过期,或者订单本身已过期。这是一个最终状态。

"无效"

Invalid 表示 ACME 资源由于某种原因无效。如果订单标记为“无效”,则其验证之一必须由于某种原因无效。这是一个最终状态。

"待定"

Pending 表示 ACME 资源仍在待定状态,尚未准备就绪。如果订单标记为“待定”,则该订单的验证仍在进行中。这是一个瞬态状态。

"处理中"

Processing 表示 ACME 资源正在由服务器处理。如果订单标记为“处理中”,则该订单的验证当前正在处理中。这是一个瞬态状态。

"准备就绪"

Ready 表示 ACME 资源处于就绪状态。如果订单为“准备就绪”,则其所有挑战都已成功完成,并且订单已准备好进行最终处理。完成最终处理后,它将过渡到 Valid 状态。这是一个瞬态状态。

""

Unknown 不是 ACME 规范中实际状态。它用于表示未识别的值。

"有效"

Valid 表示 ACME 资源处于有效状态。如果订单为“有效”,则它已使用 ACME 服务器完成最终处理,并且可以使用存储在订单状态子资源中的证书 URL 从 ACME 服务器检索证书。这是一个最终状态。


cainjector.config.cert-manager.io/v1alpha1

包 v1alpha1 是 cainjector 配置 API 的 v1alpha1 版本。

资源类型

    CAInjectorConfiguration

    字段描述
    kubeConfig
    字符串

    kubeConfig 是用于连接到 Kubernetes apiserver 的 kubeconfig 文件。如果未指定,则 cainjector 将尝试加载集群内配置。

    命名空间
    字符串

    如果设置,则这会将 cainjector 的范围限制到单个命名空间。如果设置,cainjector 不会更新具有证书但位于配置命名空间之外的资源。

    leaderElectionConfig
    github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.LeaderElectionConfig

    LeaderElectionConfig 配置领导者选举的行为

    enableDataSourceConfig
    EnableDataSourceConfig

    EnableDataSourceConfig 决定 cainjector 的控制循环是否将观察 cert-manager 资源作为潜在的 CA 数据源。

    enableInjectableConfig
    EnableInjectableConfig

    EnableInjectableConfig 决定 cainjector 的控制循环是否将观察 cert-manager 资源作为潜在的 CA 数据注入目标。

    enablePprof
    布尔值

    为 cainjector 启用性能分析。

    pprofAddress
    字符串

    Go 性能分析器应监听的主机和端口,例如 localhost:6060。确保性能分析器未公开到公共地址。性能分析器将在 /debug/pprof 提供服务。

    日志记录
    k8s.io/component-base/logs/api/v1.LoggingConfiguration

    logging 配置 cainjector 的日志记录行为。 https://pkg.go.dev/k8s.io/component-base@v0.27.3/logs/api/v1#LoggingConfiguration

    功能网关
    map[string]bool
    (可选)

    featureGates 是一个功能名称到布尔值的映射,用于启用或禁用实验性功能。

    metricsListenAddress
    字符串

    指标端点应监听的主机和端口。值“0”将禁用指标服务器。默认为“0.0.0.0:9402”。

    metricsTLSConfig
    github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.TLSConfig

    metricsTLSConfig 用于配置指标服务器 TLS 设置。

    EnableDataSourceConfig

    显示于: CAInjectorConfiguration

    字段描述
    证书
    布尔值

    Certificates 决定 cainjector 的控制循环是否将观察 cert-manager 证书资源作为潜在的 CA 数据源。如果未设置,则默认为 true。

    EnableInjectableConfig

    显示于: CAInjectorConfiguration

    字段描述
    validatingWebhookConfigurations
    布尔值

    ValidatingWebhookConfigurations 决定 cainjector 是否会启动一个控制循环,将 CA 数据注入到带注释的 ValidatingWebhookConfigurations 中。如果未设置,则默认为 true。

    mutatingWebhookConfigurations
    布尔值

    MutatingWebhookConfigurations 决定 cainjector 是否会启动一个控制循环,将 CA 数据注入到带注释的 MutatingWebhookConfigurations 中。如果未设置,则默认为 true。

    customResourceDefinitions
    布尔值

    CustomResourceDefinitions 决定 cainjector 是否会启动一个控制循环,将 CA 数据注入到带注释的 CustomResourceDefinitions 中。如果未设置,则默认为 true。

    apiServices
    布尔值

    APIServices 决定 cainjector 是否会启动一个控制循环,将 CA 数据注入到带注释的 APIServices 中。如果未设置,则默认为 true。


    cert-manager.io/v1

    包 v1 是 API 的 v1 版本。

    资源类型

    证书

    应创建证书资源以确保在 spec.secretName 中命名的 Kubernetes Secret 资源中存储最新的已签署 X.509 证书。

    存储的证书将在过期之前续订(由 spec.renewBefore 配置)。

    字段描述
    apiVersion

    字符串

    cert-manager.io/v1
    kind

    字符串

    证书
    metadata
    Kubernetes meta/v1.ObjectMeta

    (可选)

    标准对象的元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    有关metadata字段的字段,请参阅 Kubernetes API 文档。

    spec
    CertificateSpec
    (可选)

    证书资源所需状态的规范。 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status



    主题
    X509Subject
    (可选)

    请求的一组 X.509 证书主题属性。更多信息: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6

    公用名属性在 commonName 字段中单独指定。如果设置了 literalSubject 字段,则无法设置。

    literalSubject
    字符串
    (可选)

    请求的 X.509 证书主题,使用 LDAP 的“区分名称的字符串表示形式” [1] 表示。重要提示:LDAP 字符串格式还指定了主题中属性的顺序,这在为 LDAP 身份验证颁发证书时很重要。示例:CN=foo,DC=corp,DC=example,DC=com 更多信息 [1]: https://datatracker.ietf.org/doc/html/rfc4514 更多信息: https://github.com/cert-manager/cert-manager/issues/3203 更多信息: https://github.com/cert-manager/cert-manager/issues/4424

    如果设置了 subjectcommonName 字段,则无法设置。

    commonName
    字符串
    (可选)

    请求的公用名 X.509 证书主题属性。更多信息: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 注意:当设置任何主题备用名称时,TLS 客户端将忽略此值(请参阅 https://tools.ietf.org/html/rfc6125#section-6.4.4)。

    应具有 64 个字符或更少的长度,以避免生成无效的 CSR。如果设置了 literalSubject 字段,则无法设置。

    duration
    Kubernetes meta/v1.Duration
    (可选)

    请求的证书“持续时间”(即生命周期)。请注意,发行者可以选择忽略请求的持续时间,就像任何其他请求的属性一样。

    如果未设置,则默认为 90 天。最短可接受持续时间为 1 小时。值必须以 Go time.ParseDuration 接受的单位表示 https://golang.ac.cn/pkg/time/#ParseDuration

    renewBefore
    Kubernetes meta/v1.Duration
    (可选)

    在当前颁发的证书到期之前,cert-manager 应该多久续订一次证书。例如,如果证书有效期为 60 分钟,并且 renewBefore=10m,则 cert-manager 将在证书颁发 50 分钟后(即距离证书失效还有 10 分钟时)开始尝试续订证书。

    注意:颁发的证书的实际有效期用于确定续订时间。如果发行者返回的证书的有效期与请求的有效期不同,则 cert-manager 将使用颁发的证书的有效期。

    如果未设置,则默认为颁发的证书有效期的 13。最小可接受值为 5 分钟。值必须以 Go time.ParseDuration 接受的单位表示 https://golang.ac.cn/pkg/time/#ParseDuration。如果设置了 renewBeforePercentage 字段,则无法设置。

    renewBeforePercentage
    int32
    (可选)

    renewBeforePercentagerenewBefore 类似,只是它是一个相对百分比,而不是绝对持续时间。例如,如果证书有效期为 60 分钟,并且 renewBeforePercentage=25,则 cert-manager 将在证书颁发 45 分钟后(即距离证书失效还有 15 分钟(25%)时)开始尝试续订证书。

    注意:颁发的证书的实际有效期用于确定续订时间。如果发行者返回的证书的有效期与请求的有效期不同,则 cert-manager 将使用颁发的证书的有效期。

    值必须是介于 (0,100) 之间的整数。从 renewBeforePercentageduration 字段派生的最小有效 renewBefore 为 5 分钟。如果设置了 renewBefore 字段,则无法设置。

    dnsNames
    []string
    (可选)

    请求的 DNS 主题备用名称。

    ipAddresses
    []string
    (可选)

    请求的 IP 地址主题备用名称。

    uris
    []string
    (可选)

    请求的 URI 主题备用名称。

    otherNames
    []OtherName
    (可选)

    otherNames 是用于 SAN 的一个备用方案,它允许任何类型。我们目前将支持限制为类似字符串的 otherNames,cf RFC 5280 p 37 通过设置键 oid: x.x.x.x 和 UTF8Value: somevalue 用于 otherName,可以传递任何 UTF8 字符串值 otherName。最常见的情况是使用 oid: 1.3.6.1.4.1.311.20.2.3 设置 UPN。您应确保传递的任何 OID 对 UTF8String 类型有效,因为我们不会显式验证这一点。

    emailAddresses
    []string
    (可选)

    请求的电子邮件主题备用名称。

    secretName
    字符串

    将由此证书资源自动创建和管理的 Secret 资源的名称。它将填充有私钥和证书,并由指定的发行者签名。Secret 资源位于与证书资源相同的命名空间中。

    secretTemplate
    证书密钥模板
    (可选)

    定义要复制到证书密钥的注释和标签。在添加或删除时,密钥上的标签和注释将根据密钥模板中的显示进行更改。密钥模板注释将与 cert-manager 在证书密钥上设置的基本注释集一起添加,但不能覆盖这些注释。

    keystores
    证书密钥库
    (可选)

    要在证书的密钥中存储的其他密钥库输出格式。

    issuerRef
    ObjectReference

    对负责颁发证书的发行者的引用。如果发行者是命名空间范围的,则它必须与证书位于同一个命名空间。如果发行者是集群范围的,则可以从任何命名空间使用它。

    引用的name字段必须始终指定。

    isCA
    布尔值
    (可选)

    请求的基本约束 isCA 值。isCA 值用于设置在创建的证书请求资源上设置的isCA字段。请注意,发行者可以选择忽略请求的 isCA 值,就像任何其他请求的属性一样。

    如果为 true,这将自动将cert sign 用法添加到请求的usages列表中。

    usages
    []密钥用法
    (可选)

    请求的密钥用法和扩展密钥用法。这些用法用于设置在创建的证书请求资源上设置的usages字段。如果encodeUsagesInRequest未设置或设置为true,则用法还会被编码在包含 CSR blob 的request字段中。

    如果未设置,则默认为digital signaturekey encipherment

    privateKey
    证书私钥
    (可选)

    私钥选项。这些包括密钥算法和大小、使用的编码和轮换策略。

    encodeUsagesInRequest
    布尔值
    (可选)

    是否应在编码的 CSR 中设置 KeyUsage 和 ExtKeyUsage 扩展。

    此选项默认为 true,仅在目标发行者不支持具有这些 X509 KeyUsage/ExtKeyUsage 扩展的 CSR 时才应禁用。

    revisionHistoryLimit
    int32
    (可选)

    在证书历史记录中维护的证书请求修订的最大数量。每个修订表示由该证书创建的单个CertificateRequest,无论是在创建、续订还是规范发生变化时。如果修订数量超过此数量,将按最旧到最新的顺序删除修订。

    如果设置,revisionHistoryLimit 必须为1或更大。如果未设置(nil),则不会进行垃圾回收修订。默认值为nil

    additionalOutputFormats
    []证书附加输出格式
    (可选)

    定义要写入此证书的目标密钥的私钥和已签名证书链的额外输出格式。

    这是一个默认启用的 Beta 功能。它可以通过在控制器和 webhook 组件上设置--feature-gates=AdditionalCertificateOutputFormats=false选项来禁用。

    nameConstraints
    名称约束
    (可选)

    x.509 证书 NameConstraint 扩展,绝对不能在非 CA 证书中使用。更多信息:https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10

    这是一个 Alpha 功能,仅在控制器和 webhook 组件上设置--feature-gates=NameConstraints=true选项时启用。

    status
    证书状态
    (可选)

    证书的状态。这将自动设置和管理。只读。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

    证书请求

    证书请求用于从已配置的发行者之一请求已签名的证书。

    证书请求的spec中的所有字段在创建后都是不可变的。证书请求将成功或失败,如Ready状态条件及其status.failureTime字段所示。

    证书请求是一次性资源,这意味着它代表了对证书的单一时间点请求,并且不能重复使用。

    字段描述
    apiVersion

    字符串

    cert-manager.io/v1
    kind

    字符串

    证书请求
    metadata
    Kubernetes meta/v1.ObjectMeta

    (可选)

    标准对象的元数据。更多信息: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    有关metadata字段的字段,请参阅 Kubernetes API 文档。

    spec
    证书请求规范
    (可选)

    证书请求资源的预期状态的规范。 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status



    duration
    Kubernetes meta/v1.Duration
    (可选)

    请求的证书“持续时间”(即生命周期)。请注意,发行者可以选择忽略请求的持续时间,就像任何其他请求的属性一样。

    issuerRef
    ObjectReference

    对负责颁发证书的发行者的引用。如果发行者是命名空间范围的,则它必须与证书位于同一个命名空间。如果发行者是集群范围的,则可以从任何命名空间使用它。

    引用的name字段必须始终指定。

    request
    []byte

    要提交给发行者进行签名的 PEM 编码 X.509 证书签名请求。

    如果 CSR 具有 BasicConstraints 扩展,则其 isCA 属性必须与该证书请求的isCA值匹配。如果 CSR 具有 KeyUsage 扩展,则其密钥用法必须与该证书请求的usages字段中的密钥用法匹配。如果 CSR 具有 ExtKeyUsage 扩展,则其扩展密钥用法必须与该证书请求的usages字段中的扩展密钥用法匹配。

    isCA
    布尔值
    (可选)

    请求的基本约束 isCA 值。请注意,发行者可以选择忽略请求的 isCA 值,就像任何其他请求的属性一样。

    注意:如果Request字段中的 CSR 具有 BasicConstraints 扩展,则它必须具有与此处指定的相同的 isCA 值。

    如果为 true,这将自动将cert sign 用法添加到请求的usages列表中。

    usages
    []密钥用法
    (可选)

    请求的密钥用法和扩展密钥用法。

    注意:如果Request字段中的 CSR 使用 KeyUsage 或 ExtKeyUsage 扩展,则这些扩展必须具有与此处指定的相同值,而不能有任何其他值。

    如果未设置,则默认为digital signaturekey encipherment

    username
    字符串
    (可选)

    用户名包含创建证书请求的用户姓名。在创建时由 cert-manager webhook 填充,并且不可变。

    uid
    字符串
    (可选)

    UID 包含创建证书请求的用户 uid。在创建时由 cert-manager webhook 填充,并且不可变。

    groups
    []string
    (可选)

    Groups 包含创建证书请求的用户组成员资格。在创建时由 cert-manager webhook 填充,并且不可变。

    extra
    map[string][]string
    (可选)

    Extra 包含创建证书请求的用户额外属性。在创建时由 cert-manager webhook 填充,并且不可变。

    status
    证书请求状态
    (可选)

    证书请求的状态。这将自动设置和管理。只读。更多信息:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

    集群发行者

    集群发行者表示一个证书颁发机构,可以作为issuerRef字段的一部分引用。它类似于发行者,但它是集群范围的,因此可以被存在于任何命名空间中的资源引用,而不仅仅是与引用者相同的命名空间。

    字段描述
    apiVersion

    字符串

    cert-manager.io/v1
    kind

    字符串

    集群发行者
    metadata
    Kubernetes meta/v1.ObjectMeta

    有关metadata字段的字段,请参阅 Kubernetes API 文档。

    spec
    发行者规范

    集群发行者资源的预期状态。



    发行者配置
    发行者配置

    (IssuerConfig的成员嵌入到此类型中。)

    status
    发行者状态
    (可选)

    集群发行者的状态。这将自动设置和管理。

    颁发者

    发行者表示一个证书颁发机构,可以作为issuerRef字段的一部分引用。它的范围限定为单个命名空间,因此只能被同一个命名空间中的资源引用。

    字段描述
    apiVersion

    字符串

    cert-manager.io/v1
    kind

    字符串

    颁发者
    metadata
    Kubernetes meta/v1.ObjectMeta

    有关metadata字段的字段,请参阅 Kubernetes API 文档。

    spec
    发行者规范

    发行者资源的预期状态。



    发行者配置
    发行者配置

    (IssuerConfig的成员嵌入到此类型中。)

    status
    发行者状态
    (可选)

    发行者的状态。这将自动设置和管理。

    CAIssuer

    (显示于: IssuerConfig)

    字段描述
    secretName
    字符串

    SecretName 是用于签名此发行者颁发的证书的密钥的名称。

    crlDistributionPoints
    []string
    (可选)

    CRL 分发点是一个 X.509 v3 证书扩展,它标识了可以检查证书撤销的 CRL 的位置。如果未设置,则证书将发出,不设置分发点。

    ocspServers
    []string
    (可选)

    OCSP 服务器列表是一个 X.509 v3 扩展,它定义了 OCSP 响应程序的 URL 列表。可以查询 OCSP 响应程序以获取已颁发证书的撤销状态。如果未设置,则证书将发出,不设置 OCSP 服务器。例如,OCSP 服务器 URL 可以是“http://ocsp.int-x3.letsencrypt.org”。

    issuingCertificateURLs
    []string
    (可选)

    IssuingCertificateURLs 是一个 URL 列表,此发行者应将这些 URL 嵌入到它创建的证书中。有关详细信息,请参阅https://www.rfc-editor.org/rfc/rfc5280#section-4.2.2.1。例如,此类 URL 可以是“http://ca.domain.com/ca.crt”。

    证书附加输出格式

    (出现在: 证书规范)

    CertificateAdditionalOutputFormat 定义了证书资源的附加输出格式。这些包含已签名证书链和配对私钥的补充数据格式。

    字段描述
    type
    证书输出格式类型

    Type 是应写入证书的目标密钥的格式类型的名称。

    证书条件

    (出现在: 证书状态)

    CertificateCondition 包含证书的条件信息。

    字段描述
    type
    证书条件类型

    条件的类型,已知值为(ReadyIssuing)。

    status
    条件状态

    条件的状态,其中之一(TrueFalseUnknown)。

    lastTransitionTime
    Kubernetes meta/v1.Time
    (可选)

    LastTransitionTime 是与该条件的上次状态更改相对应的 timestamps。

    原因
    字符串
    (可选)

    Reason 是对条件上次过渡的简短机器可读解释。

    message
    字符串
    (可选)

    Message 是对上次过渡的详细信息的人类可读描述,补充了 reason。

    observedGeneration
    int64
    (可选)

    如果设置,则表示设置条件的 .metadata.generation。例如,如果 .metadata.generation 当前为 12,但 .status.condition[x].observedGeneration 为 9,则该条件相对于证书的当前状态已过时。

    CertificateConditionType (string 别名)

    (出现在: 证书条件)

    CertificateConditionType 表示证书条件值。

    描述

    "Issuing"

    当需要发行时添加到证书资源的条件。如果满足以下条件,则将自动添加此条件并设置为 true:* 目标密钥中不存在密钥对数据 * 密钥中存储的数据无法解码 * 私钥和证书不具有匹配的公钥 * 如果当前修订的证书请求存在,并且密钥中存储的证书数据与证书请求的status.certificate不匹配。* 如果当前修订不存在证书请求资源,则将证书资源上的选项与密钥中的 X.509 数据进行比较,类似于早期版本中的操作。如果存在不匹配,则会触发发行。此条件也可以由外部 API 消费者添加,以便出于任何其他原因手动触发重新发行。

    它将在“发行”控制器完成发行后被删除。

    "Ready"

    CertificateConditionReady 指示证书已准备好使用。这定义为:- 目标密钥存在 - 目标密钥包含一个未过期的证书 - 目标密钥包含一个对证书有效的私钥 - commonName 和 dnsNames 属性与证书上指定的属性匹配

    证书密钥库

    (出现在: 证书规范)

    CertificateKeystores 配置要在证书的输出密钥中创建的其他密钥库输出格式。

    字段描述
    jks
    JKSKeystore
    (可选)

    JKS 配置了在spec.secretName密钥资源中存储 JKS 密钥库的选项。

    pkcs12
    PKCS12Keystore
    (可选)

    PKCS12 配置了在spec.secretName密钥资源中存储 PKCS12 密钥库的选项。

    CertificateOutputFormatType (string 别名)

    (出现在: 证书附加输出格式)

    CertificateOutputFormatType 指定应写入证书目标密钥的附加输出格式。允许的值为DERCombinedPEM。当 Type 设置为DER时,一个额外的条目key.der将被写入密钥,包含私钥的二进制格式。当 Type 设置为CombinedPEM时,一个额外的条目tls-combined.pem将被写入密钥,包含 PEM 格式的私钥和已签名证书链(tls.key + tls.crt 连接在一起)。

    描述

    "CombinedPEM"

    CertificateOutputFormatCombinedPEM 将证书的已签名证书链和私钥以 PEM 格式写入 tls-combined.pem 目标 Secret 数据密钥。此密钥的值将包含私钥 PEM 文档,后跟至少一个换行符,然后是已签名证书 PEM 文档链 (<private key> + \n + <signed certificate chain>)。

    "DER"

    CertificateOutputFormatDER 将证书的私钥以 DER 二进制格式写入 key.der 目标 Secret 数据密钥。

    证书私钥

    (出现在: 证书规范)

    CertificatePrivateKey 包含证书控制器使用的私钥的配置选项。这些选项包括密钥算法和大小、使用的编码以及轮换策略。

    字段描述
    rotationPolicy
    PrivateKeyRotationPolicy
    (可选)

    RotationPolicy 控制在处理重新颁发时应如何重新生成私钥。

    如果设置为 Never,则仅当目标 spec.secretName 中不存在私钥时才会生成私钥。如果存在但算法或大小不正确,则会发出警告,等待用户干预。如果设置为 Always,则在每次重新颁发发生时,都会生成符合指定要求的私钥。出于向后兼容性考虑,默认值为 Never

    encoding
    PrivateKeyEncoding
    (可选)

    此证书的私钥要编码的私钥密码学标准 (PKCS) 编码。

    如果提供,允许的值为 PKCS1PKCS8,分别代表 PKCS#1 和 PKCS#8。如果未指定,则默认为 PKCS1

    algorithm
    PrivateKeyAlgorithm
    (可选)

    Algorithm 是此证书的对应私钥的私钥算法。

    如果提供,允许的值为 RSAECDSAEd25519。如果指定了 algorithm,但未提供 size,则将使用 2048 的密钥大小用于 RSA 密钥算法,使用 256 的密钥大小用于 ECDSA 密钥算法。使用 Ed25519 密钥算法时,将忽略密钥大小。

    size
    int
    (可选)

    Size 是此证书的对应私钥的密钥位大小。

    如果 algorithm 设置为 RSA,则有效值为 204840968192,如果未指定,则默认为 2048。如果 algorithm 设置为 ECDSA,则有效值为 256384521,如果未指定,则默认为 256。如果 algorithm 设置为 Ed25519,则会忽略 Size。不允许使用其他值。

    CertificateRequestCondition

    (出现在: CertificateRequestStatus)

    CertificateRequestCondition 包含 CertificateRequest 的条件信息。

    字段描述
    type
    CertificateRequestConditionType

    条件类型,已知值为 (Ready, InvalidRequest,Approved, Denied)。

    status
    条件状态

    条件的状态,其中之一(TrueFalseUnknown)。

    lastTransitionTime
    Kubernetes meta/v1.Time
    (可选)

    LastTransitionTime 是与该条件的上次状态更改相对应的 timestamps。

    原因
    字符串
    (可选)

    Reason 是对条件上次过渡的简短机器可读解释。

    message
    字符串
    (可选)

    Message 是对上次过渡的详细信息的人类可读描述,补充了 reason。

    CertificateRequestConditionType (string 别名)

    (出现在: CertificateRequestCondition)

    CertificateRequestConditionType 表示 Certificate 条件值。

    描述

    "Approved"

    CertificateRequestConditionApproved 表示证书请求已获批准并准备签名。条件绝不能具有 False 状态,并且一旦设置就无法修改。不能与 Denied 一起设置。

    "Denied"

    CertificateRequestConditionDenied 表示证书请求被拒绝,并且绝不能签名。条件绝不能具有 False 状态,并且一旦设置就无法修改。不能与 Approved 一起设置。

    "InvalidRequest"

    CertificateRequestConditionInvalidRequest 表示证书签名者由于至少一个输入参数无效而拒绝签名请求。有关拒绝请求原因的更多信息,请参见 reasonmessage 字段。

    "Ready"

    CertificateRequestConditionReady 表示证书已准备好使用。这定义为:- 目标证书存在于 CertificateRequest.Status 中

    证书请求规范

    (出现在: CertificateRequest)

    CertificateRequestSpec 定义了 CertificateRequest 的期望状态

    注意:重要的是要注意,颁发者可以选择忽略或更改任何请求的属性。颁发者如何将证书请求映射到已签名证书完全由颁发者自身负责。例如,作为极端情况,可以自由地反转 isCA 值的颁发者可以这样做。

    字段描述
    duration
    Kubernetes meta/v1.Duration
    (可选)

    请求的证书“持续时间”(即生命周期)。请注意,发行者可以选择忽略请求的持续时间,就像任何其他请求的属性一样。

    issuerRef
    ObjectReference

    对负责颁发证书的发行者的引用。如果发行者是命名空间范围的,则它必须与证书位于同一个命名空间。如果发行者是集群范围的,则可以从任何命名空间使用它。

    引用的name字段必须始终指定。

    request
    []byte

    要提交给发行者进行签名的 PEM 编码 X.509 证书签名请求。

    如果 CSR 具有 BasicConstraints 扩展,则其 isCA 属性必须与该证书请求的isCA值匹配。如果 CSR 具有 KeyUsage 扩展,则其密钥用法必须与该证书请求的usages字段中的密钥用法匹配。如果 CSR 具有 ExtKeyUsage 扩展,则其扩展密钥用法必须与该证书请求的usages字段中的扩展密钥用法匹配。

    isCA
    布尔值
    (可选)

    请求的基本约束 isCA 值。请注意,发行者可以选择忽略请求的 isCA 值,就像任何其他请求的属性一样。

    注意:如果Request字段中的 CSR 具有 BasicConstraints 扩展,则它必须具有与此处指定的相同的 isCA 值。

    如果为 true,这将自动将cert sign 用法添加到请求的usages列表中。

    usages
    []密钥用法
    (可选)

    请求的密钥用法和扩展密钥用法。

    注意:如果Request字段中的 CSR 使用 KeyUsage 或 ExtKeyUsage 扩展,则这些扩展必须具有与此处指定的相同值,而不能有任何其他值。

    如果未设置,则默认为digital signaturekey encipherment

    username
    字符串
    (可选)

    用户名包含创建证书请求的用户姓名。在创建时由 cert-manager webhook 填充,并且不可变。

    uid
    字符串
    (可选)

    UID 包含创建证书请求的用户 uid。在创建时由 cert-manager webhook 填充,并且不可变。

    groups
    []string
    (可选)

    Groups 包含创建证书请求的用户组成员资格。在创建时由 cert-manager webhook 填充,并且不可变。

    extra
    map[string][]string
    (可选)

    Extra 包含创建证书请求的用户额外属性。在创建时由 cert-manager webhook 填充,并且不可变。

    证书请求状态

    (出现在: CertificateRequest)

    CertificateRequestStatus 定义了 CertificateRequest 的观察到的状态和生成的已签名证书。

    字段描述
    conditions
    []CertificateRequestCondition
    (可选)

    状态条件列表,用于指示 CertificateRequest 的状态。已知的条件类型为 ReadyInvalidRequestApprovedDenied

    证书
    []byte
    (可选)

    由证书签名请求生成的 PEM 编码 X.509 证书。如果未设置,则表示 CertificateRequest 尚未完成或已失败。有关故障的更多信息,请查看 conditions 字段。

    ca
    []byte
    (可选)

    签名者的 PEM 编码 X.509 证书,也称为 CA(证书颁发机构)。此值由不同的颁发者尽力设置。如果未设置,则假定 CA 未知/不可用。

    失败时间
    Kubernetes meta/v1.Time
    (可选)

    FailureTime 存储此 CertificateRequest 失败的时间。此用于影响垃圾回收和回退。

    证书密钥模板

    (出现在: 证书规范)

    CertificateSecretTemplate 定义了要复制到 CertificateSpec.secretName 中命名的 Kubernetes Secret 资源的默认标签和注释。

    字段描述
    annotations
    map[string]string
    (可选)

    Annotations 是要复制到目标 Kubernetes Secret 的键值对映射。

    labels
    map[string]string
    (可选)

    Labels 是要复制到目标 Kubernetes Secret 的键值对映射。

    CertificateSpec

    (出现在: Certificate)

    CertificateSpec 定义了 Certificate 的期望状态。

    注意:规范包含许多“请求的”证书属性,重要的是要注意,颁发者可以选择忽略或更改任何这些请求的属性。颁发者如何将证书请求映射到已签名证书完全由颁发者自身负责。例如,作为极端情况,可以自由地反转 isCA 值的颁发者可以这样做。

    有效的证书至少需要一个 CommonName、LiteralSubject、DNSName 或 URI 才能有效。

    字段描述
    主题
    X509Subject
    (可选)

    请求的一组 X.509 证书主题属性。更多信息: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6

    公用名属性在 commonName 字段中单独指定。如果设置了 literalSubject 字段,则无法设置。

    literalSubject
    字符串
    (可选)

    请求的 X.509 证书主题,使用 LDAP 的“区分名称的字符串表示形式” [1] 表示。重要提示:LDAP 字符串格式还指定了主题中属性的顺序,这在为 LDAP 身份验证颁发证书时很重要。示例:CN=foo,DC=corp,DC=example,DC=com 更多信息 [1]: https://datatracker.ietf.org/doc/html/rfc4514 更多信息: https://github.com/cert-manager/cert-manager/issues/3203 更多信息: https://github.com/cert-manager/cert-manager/issues/4424

    如果设置了 subjectcommonName 字段,则无法设置。

    commonName
    字符串
    (可选)

    请求的公用名 X.509 证书主题属性。更多信息: https://datatracker.ietf.org/doc/html/rfc5280#section-4.1.2.6 注意:当设置任何主题备用名称时,TLS 客户端将忽略此值(请参阅 https://tools.ietf.org/html/rfc6125#section-6.4.4)。

    应具有 64 个字符或更少的长度,以避免生成无效的 CSR。如果设置了 literalSubject 字段,则无法设置。

    duration
    Kubernetes meta/v1.Duration
    (可选)

    请求的证书“持续时间”(即生命周期)。请注意,发行者可以选择忽略请求的持续时间,就像任何其他请求的属性一样。

    如果未设置,则默认为 90 天。最短可接受持续时间为 1 小时。值必须以 Go time.ParseDuration 接受的单位表示 https://golang.ac.cn/pkg/time/#ParseDuration

    renewBefore
    Kubernetes meta/v1.Duration
    (可选)

    在当前颁发的证书到期之前,cert-manager 应该多久续订一次证书。例如,如果证书有效期为 60 分钟,并且 renewBefore=10m,则 cert-manager 将在证书颁发 50 分钟后(即距离证书失效还有 10 分钟时)开始尝试续订证书。

    注意:颁发的证书的实际有效期用于确定续订时间。如果发行者返回的证书的有效期与请求的有效期不同,则 cert-manager 将使用颁发的证书的有效期。

    如果未设置,则默认为颁发的证书有效期的 13。最小可接受值为 5 分钟。值必须以 Go time.ParseDuration 接受的单位表示 https://golang.ac.cn/pkg/time/#ParseDuration。如果设置了 renewBeforePercentage 字段,则无法设置。

    renewBeforePercentage
    int32
    (可选)

    renewBeforePercentagerenewBefore 类似,只是它是一个相对百分比,而不是绝对持续时间。例如,如果证书有效期为 60 分钟,并且 renewBeforePercentage=25,则 cert-manager 将在证书颁发 45 分钟后(即距离证书失效还有 15 分钟(25%)时)开始尝试续订证书。

    注意:颁发的证书的实际有效期用于确定续订时间。如果发行者返回的证书的有效期与请求的有效期不同,则 cert-manager 将使用颁发的证书的有效期。

    值必须是介于 (0,100) 之间的整数。从 renewBeforePercentageduration 字段派生的最小有效 renewBefore 为 5 分钟。如果设置了 renewBefore 字段,则无法设置。

    dnsNames
    []string
    (可选)

    请求的 DNS 主题备用名称。

    ipAddresses
    []string
    (可选)

    请求的 IP 地址主题备用名称。

    uris
    []string
    (可选)

    请求的 URI 主题备用名称。

    otherNames
    []OtherName
    (可选)

    otherNames 是用于 SAN 的一个备用方案,它允许任何类型。我们目前将支持限制为类似字符串的 otherNames,cf RFC 5280 p 37 通过设置键 oid: x.x.x.x 和 UTF8Value: somevalue 用于 otherName,可以传递任何 UTF8 字符串值 otherName。最常见的情况是使用 oid: 1.3.6.1.4.1.311.20.2.3 设置 UPN。您应确保传递的任何 OID 对 UTF8String 类型有效,因为我们不会显式验证这一点。

    emailAddresses
    []string
    (可选)

    请求的电子邮件主题备用名称。

    secretName
    字符串

    将由此证书资源自动创建和管理的 Secret 资源的名称。它将填充有私钥和证书,并由指定的发行者签名。Secret 资源位于与证书资源相同的命名空间中。

    secretTemplate
    证书密钥模板
    (可选)

    定义要复制到证书密钥的注释和标签。在添加或删除时,密钥上的标签和注释将根据密钥模板中的显示进行更改。密钥模板注释将与 cert-manager 在证书密钥上设置的基本注释集一起添加,但不能覆盖这些注释。

    keystores
    证书密钥库
    (可选)

    要在证书的密钥中存储的其他密钥库输出格式。

    issuerRef
    ObjectReference

    对负责颁发证书的发行者的引用。如果发行者是命名空间范围的,则它必须与证书位于同一个命名空间。如果发行者是集群范围的,则可以从任何命名空间使用它。

    引用的name字段必须始终指定。

    isCA
    布尔值
    (可选)

    请求的基本约束 isCA 值。isCA 值用于设置在创建的证书请求资源上设置的isCA字段。请注意,发行者可以选择忽略请求的 isCA 值,就像任何其他请求的属性一样。

    如果为 true,这将自动将cert sign 用法添加到请求的usages列表中。

    usages
    []密钥用法
    (可选)

    请求的密钥用法和扩展密钥用法。这些用法用于设置在创建的证书请求资源上设置的usages字段。如果encodeUsagesInRequest未设置或设置为true,则用法还会被编码在包含 CSR blob 的request字段中。

    如果未设置,则默认为digital signaturekey encipherment

    privateKey
    证书私钥
    (可选)

    私钥选项。这些包括密钥算法和大小、使用的编码和轮换策略。

    encodeUsagesInRequest
    布尔值
    (可选)

    是否应在编码的 CSR 中设置 KeyUsage 和 ExtKeyUsage 扩展。

    此选项默认为 true,仅在目标发行者不支持具有这些 X509 KeyUsage/ExtKeyUsage 扩展的 CSR 时才应禁用。

    revisionHistoryLimit
    int32
    (可选)

    在证书历史记录中维护的证书请求修订的最大数量。每个修订表示由该证书创建的单个CertificateRequest,无论是在创建、续订还是规范发生变化时。如果修订数量超过此数量,将按最旧到最新的顺序删除修订。

    如果设置,revisionHistoryLimit 必须为1或更大。如果未设置(nil),则不会进行垃圾回收修订。默认值为nil

    additionalOutputFormats
    []证书附加输出格式
    (可选)

    定义要写入此证书的目标密钥的私钥和已签名证书链的额外输出格式。

    这是一个默认启用的 Beta 功能。它可以通过在控制器和 webhook 组件上设置--feature-gates=AdditionalCertificateOutputFormats=false选项来禁用。

    nameConstraints
    名称约束
    (可选)

    x.509 证书 NameConstraint 扩展,绝对不能在非 CA 证书中使用。更多信息:https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10

    这是一个 Alpha 功能,仅在控制器和 webhook 组件上设置--feature-gates=NameConstraints=true选项时启用。

    证书状态

    (出现在: Certificate)

    CertificateStatus 定义了 Certificate 的观察到的状态

    字段描述
    conditions
    []CertificateCondition
    (可选)

    状态条件列表,用于指示证书的状态。已知的条件类型为 ReadyIssuing

    lastFailureTime
    Kubernetes meta/v1.Time
    (可选)

    LastFailureTime 仅在针对此 Certificate 的最新颁发失败时设置,并包含失败时间。如果颁发失败,则下次颁发的延迟将使用公式 time.Hour * 2 ^ (failedIssuanceAttempts - 1) 计算。如果最新颁发已成功,则此字段将被取消设置。

    notBefore
    Kubernetes meta/v1.Time
    (可选)

    此资源在 spec.secretName 中命名的密钥中存储的证书的有效时间。

    notAfter
    Kubernetes meta/v1.Time
    (可选)

    此资源在 spec.secretName 中命名的密钥中存储的证书的到期时间。

    renewalTime
    Kubernetes meta/v1.Time
    (可选)

    RenewalTime 是证书将要下一次续订的时间。如果未设置,则表示未安排即将到来的续订。

    revision
    int
    (可选)

    已颁发的证书的当前“版本”。

    创建 CertificateRequest 资源时,它的 cert-manager.io/certificate-revision 将设置为当前值加 1。

    颁发后,此字段将设置为用于颁发证书的 CertificateRequest 资源上的注释的值。

    在 CertificateRequest 资源上持久保存该值允许证书控制器通过检查注释中的版本值是否大于此字段来了解请求是否属于旧颁发或属于正在进行的版本的颁发。

    nextPrivateKeySecretName
    字符串
    (可选)

    包含用于下次证书迭代的私钥的 Secret 资源的名称。如果 Issuing 条件设置为 True,则 keymanager 控制器会自动设置此字段。如果 Issuing 条件未设置或为 False,则会自动取消设置此字段。

    failedIssuanceAttempts
    int
    (可选)

    到目前为止的连续颁发失败尝试次数。此字段在成功颁发后将被删除(如果已设置),如果未设置并且颁发已失败,则将被设置为 1。如果颁发失败,则下次颁发的延迟将使用公式 time.Hour * 2 ^ (failedIssuanceAttempts - 1) 计算。

    GenericIssuer

    IssuerCondition

    (出现在: IssuerStatus)

    IssuerCondition 包含 Issuer 的条件信息。

    字段描述
    type
    IssuerConditionType

    条件类型,已知值为 (Ready)。

    status
    条件状态

    条件的状态,其中之一(TrueFalseUnknown)。

    lastTransitionTime
    Kubernetes meta/v1.Time
    (可选)

    LastTransitionTime 是与该条件的上次状态更改相对应的 timestamps。

    原因
    字符串
    (可选)

    Reason 是对条件上次过渡的简短机器可读解释。

    message
    字符串
    (可选)

    Message 是对上次过渡的详细信息的人类可读描述,补充了 reason。

    observedGeneration
    int64
    (可选)

    如果设置,则表示条件所基于的 .metadata.generation。例如,如果 .metadata.generation 当前为 12,但 .status.condition[x].observedGeneration 为 9,则条件对于 Issuer 的当前状态而言已过时。

    IssuerConditionType (string 别名)

    (出现在: IssuerCondition)

    IssuerConditionType 表示 Issuer 条件值。

    描述

    "Ready"

    IssuerConditionReady 表示给定的 Issuer 条件处于就绪状态,能够颁发证书。如果此条件的 statusFalse,则 CertificateRequest 控制器应阻止尝试签名证书。

    发行者配置

    (出现在: IssuerSpec)

    颁发者的配置。只能设置其中一个。

    字段描述
    acme
    ACMEIssuer
    (可选)

    ACME 将此颁发者配置为与 RFC8555 (ACME) 服务器通信,以获取已签名的 x509 证书。

    ca
    CAIssuer
    (可选)

    CA 将此颁发者配置为使用存储在 Secret 资源中的签名 CA 密钥对来签名证书。这用于构建由 cert-manager 管理的内部 PKI。

    vault
    VaultIssuer
    (可选)

    Vault 将此颁发者配置为使用 HashiCorp Vault PKI 后端来签名证书。

    selfSigned
    SelfSignedIssuer
    (可选)

    SelfSigned 将此颁发者配置为使用用于创建 CertificateRequest 对象的私钥来“自签名”证书。

    venafi
    VenafiIssuer
    (可选)

    Venafi 将此颁发者配置为使用 Venafi TPP 或 Venafi Cloud 策略区域来签名证书。

    发行者规范

    (出现在: ClusterIssuer, Issuer)

    IssuerSpec 是 Issuer 的规范。这包括颁发者所需的任何配置。

    字段描述
    发行者配置
    发行者配置

    (IssuerConfig的成员嵌入到此类型中。)

    发行者状态

    (出现在: ClusterIssuer, Issuer)

    IssuerStatus 包含有关 Issuer 的状态信息

    字段描述
    conditions
    []IssuerCondition
    (可选)

    状态条件列表,用于指示 CertificateRequest 的状态。已知的条件类型为 Ready

    acme
    ACMEIssuerStatus
    (可选)

    ACME 特定的状态选项。如果 Issuer 配置为使用 ACME 服务器颁发证书,则应仅设置此字段。

    JKSKeystore

    (出现在: CertificateKeystores)

    JKS 配置了在spec.secretName密钥资源中存储 JKS 密钥库的选项。

    字段描述
    create
    布尔值

    Create 为 Certificate 启用 JKS 密钥库创建。如果为 true,则将在目标 Secret 资源中创建名为 keystore.jks 的文件,并使用 passwordSecretRef 中存储的密码进行加密。密钥库文件将立即更新。如果颁发者提供了 CA 证书,则还将在目标 Secret 资源中创建一个名为 truststore.jks 的文件,并使用 passwordSecretRef 中存储的密码进行加密,其中包含颁发的证书颁发机构

    passwordSecretRef
    SecretKeySelector

    PasswordSecretRef 是对 Secret 资源中包含用于加密 JKS 密钥库的密码的密钥的引用。

    alias
    字符串
    (可选)

    Alias 指定密钥库中密钥的别名,这是 JKS 格式要求的。如果未提供,则将使用默认别名 certificate

    KeyUsage (string 别名)

    (出现在: CertificateRequestSpec, CertificateSpec)

    KeyUsage 指定密钥的有效使用场景。参见:https://tools.ietf.org/html/rfc5280#section-4.2.1.3 https://tools.ietf.org/html/rfc5280#section-4.2.1.12

    有效的 KeyUsage 值如下:“signing”,“digital signature”,“content commitment”,“key encipherment”,“key agreement”,“data encipherment”,“cert sign”,“crl sign”,“encipher only”,“decipher only”,“any”,“server auth”,“client auth”,“code signing”,“email protection”,“s/mime”,“ipsec end system”,“ipsec tunnel”,“ipsec user”,“timestamping”,“ocsp signing”,“microsoft sgc”,“netscape sgc”

    描述

    "any"

    "crl sign"

    "cert sign"

    "client auth"

    "code signing"

    "content commitment"

    "data encipherment"

    "decipher only"

    "digital signature"

    "email protection"

    "encipher only"

    "ipsec end system"

    "ipsec tunnel"

    "ipsec user"

    "key agreement"

    "key encipherment"

    "microsoft sgc"

    "netscape sgc"

    "ocsp signing"

    "s/mime"

    "server auth"

    "signing"

    "timestamping"

    NameConstraintItem

    (出现在: NameConstraints)

    字段描述
    dnsDomains
    []string
    (可选)

    DNSDomains 是一个允许或排除的 DNS 域名列表。

    ipRanges
    []string
    (可选)

    IPRanges 是一个允许或排除的 IP 范围列表。它应该是一个有效的 CIDR 表示法。

    emailAddresses
    []string
    (可选)

    EmailAddresses 是一个允许或排除的电子邮件地址列表。

    uriDomains
    []string
    (可选)

    URIDomains 是一个允许或排除的 URI 域名列表。

    名称约束

    (出现在: 证书规范)

    NameConstraints 是一种用于表示 x509 NameConstraints 的类型。

    字段描述
    critical
    布尔值
    (可选)

    如果为真,则名称约束被标记为关键。

    permitted
    NameConstraintItem
    (可选)

    Permitted 包含名称必须位于其中的约束。

    excluded
    NameConstraintItem
    (可选)

    Excluded 包含必须禁止的约束。任何与 excluded 字段中限制匹配的名称都是无效的,无论 permitted 中是否包含信息。

    OtherName

    (出现在: 证书规范)

    字段描述
    oid
    字符串

    OID 是 otherName SAN 的对象标识符。对象标识符必须用点分隔字符串表示,例如,“1.2.840.113556.1.4.221”。

    utf8Value
    字符串

    utf8Value 是 otherName SAN 的字符串值。utf8Value 接受任何有效的 UTF8 字符串,将其设置为 otherName SAN 的值。

    PKCS12Keystore

    (出现在: CertificateKeystores)

    PKCS12 配置了在spec.secretName密钥资源中存储 PKCS12 密钥库的选项。

    字段描述
    create
    布尔值

    Create 为证书启用 PKCS12 密钥库创建。如果为真,则名为 keystore.p12 的文件将在目标 Secret 资源中创建,使用存储在 passwordSecretRef 中的密码进行加密。密钥库文件将立即更新。如果颁发者提供了 CA 证书,则名为 truststore.p12 的文件也将使用存储在 passwordSecretRef 中的密码在目标 Secret 资源中创建,其中包含颁发证书颁发机构

    passwordSecretRef
    SecretKeySelector

    PasswordSecretRef 是对 Secret 资源中的密钥的引用,该密钥包含用于加密 PKCS12 密钥库的密码。

    profile
    PKCS12Profile
    (可选)

    Profile 指定用于创建 PKCS12 密钥库的密钥和证书加密算法以及 HMAC 算法。默认值为 LegacyRC2,以保持向后兼容性。

    如果提供,允许的值为:LegacyRC2:已弃用。默认情况下不受 OpenSSL 3 或 Java 20 支持。LegacyDES:安全性较低的算法。对于最大兼容性,请使用此选项。Modern2023:安全算法。如果您必须始终使用安全算法(例如,由于公司策略),请使用此选项。请注意,在实际情况下,算法的安全性并不那么重要,因为未加密的证书和私钥也存储在 Secret 中。

    PKCS12Profile (string 别名)

    (出现在: PKCS12Keystore)

    描述

    "LegacyDES"

    参见:https://pkg.go.dev/software.sslmate.com/src/go-pkcs12#LegacyDES

    "LegacyRC2"

    参见:https://pkg.go.dev/software.sslmate.com/src/go-pkcs12#LegacyRC2

    "Modern2023"

    参见:https://pkg.go.dev/software.sslmate.com/src/go-pkcs12#Modern2023

    PrivateKeyAlgorithm (string 别名)

    (出现在: CertificatePrivateKey)

    描述

    "ECDSA"

    ECDSA 私钥算法。

    "Ed25519"

    Ed25519 私钥算法。

    "RSA"

    RSA 私钥算法。

    PrivateKeyEncoding (string 别名)

    (出现在: CertificatePrivateKey)

    描述

    "PKCS1"

    PKCS1 私钥编码。PKCS1 生成包含标头中的私钥算法和正文中的私钥的 PEM 块。使用此编码的密钥可以通过其 BEGIN RSA PRIVATE KEYBEGIN EC PRIVATE KEY 标头识别。注意:此编码不支持 Ed25519 密钥。尝试将此编码与 Ed25519 密钥一起使用将被忽略,并默认使用 PKCS8。

    "PKCS8"

    PKCS8 私钥编码。PKCS8 生成一个带有静态标头的 PEM 块,以及正文中的私钥算法和私钥。使用此编码的密钥可以通过其 BEGIN PRIVATE KEY 标头识别。

    PrivateKeyRotationPolicy (string 别名)

    (出现在: CertificatePrivateKey)

    表示证书颁发时应如何生成或获取私钥。

    SelfSignedIssuer

    (显示于: IssuerConfig)

    配置颁发者使用用于创建 CertificateRequest 对象的私钥对证书进行“自签名”。

    字段描述
    crlDistributionPoints
    []string
    (可选)

    CRL 分发点是 X.509 v3 证书扩展,它标识了可以检查此证书吊销的 CRL 的位置。如果未设置,则证书将不带 CDP 颁发。值是字符串。

    ServiceAccountRef

    (出现在: VaultKubernetesAuth)

    ServiceAccountRef 是 cert-manager 用于请求令牌的服务帐户。默认受众由 cert-manager 生成,对于 Issuer 采用 vault://namespace-name/issuer-name 的形式,对于 ClusterIssuer 采用 vault://issuer-name 的形式。令牌的有效期也由 cert-manager 设置为 10 分钟。

    字段描述
    name
    字符串

    用于请求令牌的 ServiceAccount 的名称。

    受众
    []string
    (可选)

    TokenAudiences 是一个可选的额外受众列表,要包含在传递给 Vault 的令牌中。始终包含包含颁发者命名空间和名称的默认令牌。

    VaultAppRole

    (出现在: VaultAuth)

    VaultAppRole 使用 App Role 身份验证机制与 Vault 身份验证,角色和秘密存储在 Kubernetes Secret 资源中。

    字段描述
    path
    字符串

    App Role 身份验证后端在 Vault 中的挂载路径,例如:“approle”

    roleId
    字符串

    在 Vault 中设置身份验证后端时,在 App Role 身份验证后端中配置的 RoleID。

    secretRef
    SecretKeySelector

    对 Secret 中的密钥的引用,该密钥包含用于与 Vault 身份验证的 App Role 密钥。必须指定 key 字段,它表示 Secret 资源中哪个条目用作 app role 密钥。

    VaultAuth

    (出现在: VaultIssuer)

    VaultAuth 是用于与 Vault 服务器身份验证的配置。优先级顺序为 [tokenSecretRef, appRole, clientCertificatekubernetes]。

    字段描述
    令牌密钥引用
    SecretKeySelector
    (可选)

    TokenSecretRef 通过提供令牌与 Vault 身份验证。

    appRole
    VaultAppRole
    (可选)

    AppRole 使用 App Role 身份验证机制与 Vault 身份验证,角色和秘密存储在 Kubernetes Secret 资源中。

    clientCertificate
    VaultClientCertificateAuth
    (可选)

    ClientCertificate 通过在请求的 TLS 握手期间提供客户端证书来与 Vault 身份验证。仅在使用 HTTPS 协议时有效。

    Kubernetes
    VaultKubernetesAuth
    (可选)

    Kubernetes 通过将存储在命名 Secret 资源中的 ServiceAccount 令牌传递给 Vault 服务器来与 Vault 身份验证。

    VaultClientCertificateAuth

    (出现在: VaultAuth)

    VaultKubernetesAuth 用于使用存储在 Secret 中的客户端证书对 Vault 进行身份验证。

    字段描述
    mountPath
    字符串
    (可选)

    此处的 Vault mountPath 是与 Vault 身份验证时要使用的挂载路径。例如,将值设置为 /v1/auth/foo,将使用路径 /v1/auth/foo/login 与 Vault 身份验证。如果未指定,则使用默认值“/v1/auth/cert”。

    secretName
    字符串
    (可选)

    对类型为“kubernetes.io/tls”的 Kubernetes Secret 的引用(因此包含 tls.crt 和 tls.key),用于使用 TLS 客户端身份验证对 Vault 进行身份验证。

    name
    字符串
    (可选)

    要针对其进行身份验证的证书角色的名称。如果未设置,则匹配任何证书角色(如果可用)。

    VaultIssuer

    (显示于: IssuerConfig)

    配置颁发者使用 HashiCorp Vault PKI 后端签署证书。

    字段描述
    身份验证
    VaultAuth

    Auth 配置 cert-manager 如何与 Vault 服务器身份验证。

    server
    字符串

    Server 是 Vault 服务器的连接地址,例如:“https://vault.example.com:8200”。

    path
    字符串

    Path 是 Vault PKI 后端的 sign 端点的挂载路径,例如:“my_pki_mount/sign/my-role-name”。

    命名空间
    字符串
    (可选)

    Vault 命名空间的名称。命名空间是 Vault 企业版中的一组功能,允许 Vault 环境支持安全的多租户。例如:“ns1” 有关命名空间的更多信息,请访问此处 https://www.vaultproject.io/docs/enterprise/namespaces

    caBundle
    []byte
    (可选)

    PEM CA 的 Base64 编码捆绑包,将用于验证 Vault 展示的证书链。仅在使用 HTTPS 连接到 Vault 时使用,对于 HTTP 连接则忽略。与 CABundleSecretRef 相互排斥。如果未定义 CABundle 和 CABundleSecretRef,则使用 cert-manager 控制器容器中的证书捆绑包来验证 TLS 连接。

    caBundleSecretRef
    SecretKeySelector
    (可选)

    对包含 PEM 编码 CA 捆绑包的 Secret 的引用,用于在使用 HTTPS 时验证 Vault 展示的证书链。与 CABundle 相互排斥。如果未定义 CABundle 和 CABundleSecretRef,则使用 cert-manager 控制器容器中的证书捆绑包来验证 TLS 连接。如果未为 Secret 指定密钥,则 cert-manager 将默认为“ca.crt”。

    clientCertSecretRef
    SecretKeySelector
    (可选)

    对包含 PEM 编码客户端证书的 Secret 的引用,用于在 Vault 服务器需要 mTLS 时使用。

    clientKeySecretRef
    SecretKeySelector
    (可选)

    对包含 PEM 编码客户端私钥的 Secret 的引用,用于在 Vault 服务器需要 mTLS 时使用。

    VaultKubernetesAuth

    (出现在: VaultAuth)

    使用存储在 Secret 中的 Kubernetes ServiceAccount 令牌对 Vault 进行身份验证。

    字段描述
    mountPath
    字符串
    (可选)

    此处的 Vault mountPath 是与 Vault 身份验证时要使用的挂载路径。例如,将值设置为 /v1/auth/foo,将使用路径 /v1/auth/foo/login 与 Vault 身份验证。如果未指定,则使用默认值“/v1/auth/kubernetes”。

    secretRef
    SecretKeySelector
    (可选)

    包含用于与 Vault 身份验证的 Kubernetes ServiceAccount JWT 的必需 Secret 字段。不支持使用“环境凭据”。

    serviceAccountRef
    ServiceAccountRef
    (可选)

    对将用于请求绑定令牌(也称为“投影令牌”)的服务帐户的引用。与使用“secretRef”相比,使用此字段意味着您不依赖于静态绑定令牌。要使用此字段,您必须配置 RBAC 规则以允许 cert-manager 请求令牌。

    角色
    字符串

    包含要承担的 Vault 角色的必需字段。角色将 Kubernetes ServiceAccount 与一组 Vault 策略绑定。

    VenafiCloud

    (出现在: VenafiIssuer)

    VenafiCloud 定义了 Venafi Cloud 的连接配置详细信息。

    字段描述
    url
    字符串
    (可选)

    URL 是 Venafi Cloud 的基本 URL。默认值为“https://api.venafi.cloud/v1”。

    apiTokenSecretRef
    SecretKeySelector

    APITokenSecretRef 是 Venafi Cloud API 令牌的密钥选择器。

    VenafiIssuer

    (显示于: IssuerConfig)

    配置一个发行者,使用 Venafi TPP 或 Cloud 策略区域来签署证书。

    字段描述
    zone
    字符串

    Zone 是要用于此发行者的 Venafi 策略区域。对 Venafi 平台发出的所有请求都将受到命名区域策略的限制。此字段是必需的。

    tpp
    VenafiTPP
    (可选)

    TPP 指定了 Trust Protection Platform 配置设置。只能指定 TPP 或 Cloud 之一。

    cloud
    VenafiCloud
    (可选)

    Cloud 指定了 Venafi 云配置设置。只能指定 TPP 或 Cloud 之一。

    VenafiTPP

    (出现在: VenafiIssuer)

    VenafiTPP 定义了 Venafi TPP 实例的连接配置详细信息

    字段描述
    url
    字符串

    URL 是 Venafi TPP 实例的 vedsdk 端点的基本 URL,例如:“https://tpp.example.com/vedsdk”。

    credentialsRef
    LocalObjectReference

    CredentialsRef 是对包含 Venafi TPP API 凭据的 Secret 的引用。该 Secret 必须包含用于访问令牌身份验证的键“access-token”,或者包含用于 API 密钥身份验证的两个键“username”和“password”。

    caBundle
    []byte
    (可选)

    PEM CA 的 Base64 编码捆绑包,将用于验证 TPP 服务器提供的证书链。仅在使用 HTTPS 时使用;对于 HTTP,则忽略。如果未定义,则使用 cert-manager 控制器容器中的证书捆绑包来验证链。

    caBundleSecretRef
    SecretKeySelector
    (可选)

    对包含 PEM CA 的 Base64 编码捆绑包的 Secret 的引用,将用于验证 TPP 服务器提供的证书链。仅在使用 HTTPS 时使用;对于 HTTP,则忽略。与 CABundle 相互排斥。如果未定义 CABundle 或 CABundleSecretRef,则使用 cert-manager 控制器容器中的证书捆绑包来验证 TLS 连接。

    X509Subject

    (出现在: 证书规范)

    X509Subject 全 X509 名称规范

    字段描述
    organizations
    []string
    (可选)

    要在证书上使用的组织。

    countries
    []string
    (可选)

    要在证书上使用的国家/地区。

    organizationalUnits
    []string
    (可选)

    要在证书上使用的组织单位。

    localities
    []string
    (可选)

    要在证书上使用的城市。

    provinces
    []string
    (可选)

    要在证书上使用的州/省。

    streetAddresses
    []string
    (可选)

    要在证书上使用的街道地址。

    postalCodes
    []string
    (可选)

    要在证书上使用的邮政编码。

    serialNumber
    字符串
    (可选)

    要在证书上使用的序列号。


    controller.config.cert-manager.io/v1alpha1

    Package v1alpha1 是控制器配置 API 的 v1alpha1 版本。

    资源类型

      ACMEDNS01Config

      (出现在: ControllerConfiguration)

      字段描述
      recursiveNameservers
      []string

      每个名称服务器可以是标准递归 DNS 服务器的 IP 地址和端口,也可以是 RFC 8484 DNS over HTTPS 端点的端点。例如,以下值有效: - “8.8.8.8:53” (标准 DNS) - “https://1.1.1.1/dns-query” (DNS over HTTPS)

      recursiveNameserversOnly
      布尔值

      如果为 true,则 cert-manager 将仅查询配置的 DNS 解析器以执行 ACME DNS01 自检。这在 DNS 受限的环境中非常有用,在这些环境中,对权威名称服务器的访问受到限制。启用此选项可能会导致 DNS01 自检时间更长,因为递归名称服务器会执行缓存。

      checkRetryPeriod
      github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.Duration

      控制器应在传播检查之间等待的持续时间。尽管名称如此,但此标志用于配置 DNS01 和 HTTP01 挑战传播检查的等待时间。对于 DNS01 挑战,传播检查会验证是否创建了具有挑战令牌的 TXT 记录。对于 HTTP01 挑战,传播检查会验证挑战令牌是否在挑战 URL 上提供。这应该是一个有效的持续时间字符串,例如 180s 或 1h

      ACMEHTTP01Config

      (出现在: ControllerConfiguration)

      字段描述
      solverImage
      字符串

      要用于解决 ACME HTTP01 挑战的 Docker 镜像。除非您正在测试新功能或开发 cert-manager,否则您很可能不需要更改此参数。

      solverResourceRequestCPU
      字符串

      定义在生成新的 ACME HTTP01 挑战求解器 Pod 时资源请求 CPU 大小。

      solverResourceRequestMemory
      字符串

      定义在生成新的 ACME HTTP01 挑战求解器 Pod 时资源请求内存大小。

      solverResourceLimitsCPU
      字符串

      定义在生成新的 ACME HTTP01 挑战求解器 Pod 时资源限制 CPU 大小。

      solverResourceLimitsMemory
      字符串

      定义在生成新的 ACME HTTP01 挑战求解器 Pod 时资源限制内存大小。

      solverRunAsNonRoot
      布尔值

      定义是否可以以 root 用户身份运行 http01 求解器以解决问题

      solverNameservers
      []string

      用于 ACME HTTP01 检查请求的逗号分隔 DNS 服务器端点列表。这应该是一个包含主机和端口的列表,例如 [“8.8.8.8:53”、“8.8.4.4:53”] 允许指定用于执行 HTTP01 检查的自定义名称服务器列表。

      ControllerConfiguration

      字段描述
      kubeConfig
      字符串

      kubeConfig 是用于连接到 Kubernetes apiserver 的 kubeconfig 文件。如果未指定,控制器将尝试加载集群内配置。

      apiServerHost
      字符串

      apiServerHost 用于覆盖 API 服务器连接地址。已弃用:使用 kubeConfig 代替。

      kubernetesAPIQPS
      float32

      指示对 Kubernetes apiserver 的最大查询每秒请求 TODO:不推荐使用浮点数。我们应该使用 resource.Quantity 吗? https://kubernetes.ac.cn/docs/reference/kubernetes-api/common-definitions/quantity/

      kubernetesAPIBurst
      int32

      发送到 Kubernetes apiserver 的请求的最大突发查询每秒数

      命名空间
      字符串

      如果设置,这会将 cert-manager 的范围限制到单个命名空间,并且会禁用 ClusterIssuers。如果未指定,则会监视所有命名空间

      clusterResourceNamespace
      字符串

      存储集群范围资源(如 ClusterIssuer)拥有的资源的命名空间。

      leaderElectionConfig
      LeaderElectionConfig

      LeaderElectionConfig 配置领导者选举的行为

      controllers
      []string

      要启用的控制器列表。[’’] 启用所有控制器,[‘foo’] 仅启用 foo 控制器 [’’, ‘-foo’] 禁用名为 foo 的控制器。

      issuerAmbientCredentials
      布尔值

      发行者是否可以使用环境凭据。‘环境凭据’是从环境、元数据服务或本地文件中获取的凭据,这些凭据未在 Issuer API 对象中明确配置。启用此标志后,还会使用以下凭据来源:AWS - Go SDK 默认使用的所有来源,尤其是通过实例元数据提供的任何 EC2 IAM 角色。

      clusterIssuerAmbientCredentials
      布尔值

      集群发行者是否可以使用环境凭据来获取发行者的凭据。‘环境凭据’是从环境、元数据服务或本地文件中获取的凭据,这些凭据未在 ClusterIssuer API 对象中明确配置。启用此标志后,还会使用以下凭据来源:AWS - Go SDK 默认使用的所有来源,尤其是通过实例元数据提供的任何 EC2 IAM 角色。

      enableCertificateOwnerRef
      布尔值

      是否将证书资源设置为存储 TLS 证书的 Secret 的所有者。启用此标志后,在删除证书资源时,将自动删除该 Secret。

      enableGatewayAPI
      布尔值

      是否在 cert-manager 中启用网关 API 集成。还必须启用 ExperimentalGatewayAPISupport 功能门(默认情况下从 1.15 开始)。

      copiedAnnotationPrefixes
      []string

      通过传递注释键前缀列表来指定哪些注释应该/不应该从 Certificate 复制到 CertificateRequest 和 Order,以及从 CertificateSigningRequest 复制到 Order。以连字符 (-) 开头的前缀指定不应该复制的注释。例如:‘*,-kubectl.kubernetes.io/’- 所有注释都会被复制,除了键以 ‘kubectl.kubernetes.io/’ 为前缀的注释。

      numberOfConcurrentWorkers
      int32

      每个控制器的并发工作程序数量。

      maxConcurrentChallenges
      int32

      可以一次作为 ‘processing’ 调度的挑战的最大数量。

      metricsListenAddress
      字符串

      度量端点应监听的主机和端口。

      metricsTLSConfig
      github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.TLSConfig

      度量端点的 TLS 配置

      healthzListenAddress
      字符串

      healthz 服务器应监听的主机和端口地址,用 ‘:’ 分隔。

      enablePprof
      布尔值

      为控制器启用分析。

      pprofAddress
      字符串

      Go 性能分析器应监听的主机和端口,例如 localhost:6060。确保性能分析器未公开到公共地址。性能分析器将在 /debug/pprof 提供服务。

      日志记录
      k8s.io/component-base/logs/api/v1.LoggingConfiguration

      logging 配置控制器的日志记录行为。 https://pkg.go.dev/k8s.io/component-base@v0.27.3/logs/api/v1#LoggingConfiguration

      功能网关
      map[string]bool
      (可选)

      featureGates 是一个功能名称到布尔值的映射,用于启用或禁用实验性功能。

      ingressShimConfig
      IngressShimConfig

      ingressShimConfig 配置 ingress-shim 控制器的行为

      acmeHTTP01Config
      ACMEHTTP01Config

      acmeHTTP01Config 配置 ACME HTTP01 挑战求解器的行为

      acmeDNS01Config
      ACMEDNS01Config

      acmeDNS01Config 配置 ACME DNS01 挑战求解器的行为

      IngressShimConfig

      (出现在: ControllerConfiguration)

      字段描述
      defaultIssuerName
      字符串

      ingress-shim 使用的默认发行者/证书详细信息,当请求 tls 但未在 ingress 资源上指定发行者名称时。

      defaultIssuerKind
      字符串

      当请求 TLS 但未在 ingress 资源上指定发行者类型时,要使用的发行者类型。

      defaultIssuerGroup
      字符串

      当请求 TLS 但未在 ingress 资源上指定发行者组时,要使用的发行者组。

      defaultAutoCertificateAnnotations
      []string

      ingress-shim 控制器使用的注释,用于指示 ingress 正在请求证书

      LeaderElectionConfig

      (出现在: ControllerConfiguration)

      字段描述
      LeaderElectionConfig
      github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.LeaderElectionConfig

      (LeaderElectionConfig 的成员已嵌入到此类型中。)

      healthzTimeout
      github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.Duration

      在租约过期后,在此超时时间内进行的领导者选举 healthz 检查仍将返回正常。


      meta.cert-manager.io/v1

      Package v1 包含 cert-manager API 的元类型

      资源类型

        ConditionStatus (string 别名)

        (出现在: CertificateCondition, CertificateRequestCondition, IssuerCondition)

        ConditionStatus 表示条件的状态。

        描述

        "False"

        ConditionFalse 表示给定条件为假

        "True"

        ConditionTrue 表示给定条件为真

        "Unknown"

        ConditionUnknown 表示给定条件未知

        LocalObjectReference

        (出现在: VenafiTPP, SecretKeySelector)

        对与引用者位于同一命名空间中的对象的引用。如果引用者是集群范围资源(例如 ClusterIssuer),则引用将改为引用在配置的‘集群资源命名空间’中具有给定名称的资源,该命名空间在控制器组件上设置为标志(默认情况下为 cert-manager 运行的命名空间)。

        字段描述
        name
        字符串

        被引用的资源的名称。更多信息: https://kubernetes.ac.cn/docs/concepts/overview/working-with-objects/names/#names

        ObjectReference

        (出现在: ChallengeSpec, OrderSpec, CertificateRequestSpec, CertificateSpec)

        ObjectReference 是对具有给定名称、类型和组的对象的引用。

        字段描述
        name
        字符串

        被引用的资源的名称。

        kind
        字符串
        (可选)

        被引用的资源的类型。

        group
        字符串
        (可选)

        被引用的资源的组。

        SecretKeySelector

        (出现在: ACMEExternalAccountBinding, ACMEIssuer, ACMEIssuerDNS01ProviderAcmeDNS, ACMEIssuerDNS01ProviderAkamai, ACMEIssuerDNS01ProviderAzureDNS, ACMEIssuerDNS01ProviderCloudDNS, ACMEIssuerDNS01ProviderCloudflare, ACMEIssuerDNS01ProviderDigitalOcean, ACMEIssuerDNS01ProviderRFC2136, ACMEIssuerDNS01ProviderRoute53, JKSKeystore, PKCS12Keystore, VaultAppRole, VaultAuth, VaultIssuer, VaultKubernetesAuth, VenafiCloud, VenafiTPP)

        对 Secret 资源中特定“key”的引用。在某些情况下,key 是必填字段。

        字段描述
        LocalObjectReference
        LocalObjectReference

        LocalObjectReference 的成员嵌入到此类型中。)

        被引用的 Secret 资源的名称。

        key
        字符串
        (可选)

        Secret 资源的 data 字段中要使用的条目的键。此字段的一些实例可能默认为值,而在其他情况下则可能需要指定。


        webhook.config.cert-manager.io/v1alpha1

        包 v1alpha1 是 webhook 配置 API 的 v1alpha1 版本。

        资源类型

          WebhookConfiguration

          字段描述
          securePort
          int32

          securePort 是用于监听来自 kube-apiserver 的安全 TLS 连接的端口号。如果为 0,则将选择一个随机可用的端口。默认为 6443。

          healthzPort
          int32

          healthzPort 是用于监听 (使用纯文本 HTTP) healthz 连接的端口号。如果为 0,则将选择一个随机可用的端口。默认为 6080。

          tlsConfig
          github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.TLSConfig

          tlsConfig 用于配置安全侦听器的 TLS 设置。

          kubeConfig
          字符串

          kubeConfig 是用于连接到 Kubernetes apiserver 的 kubeconfig 文件。如果未指定,webhook 将尝试加载集群内配置。

          apiServerHost
          字符串

          apiServerHost 用于覆盖 API 服务器连接地址。已弃用:使用 kubeConfig 代替。

          enablePprof
          布尔值

          enablePprof 配置是否启用 pprof。

          pprofAddress
          字符串

          pprofAddress 配置如果启用,将提供 /debug/pprof 端点的地址。默认为 ‘localhost:6060’。

          日志记录
          k8s.io/component-base/logs/api/v1.LoggingConfiguration

          logging 配置 webhook 的日志记录行为。 https://pkg.go.dev/k8s.io/component-base@v0.27.3/logs/api/v1#LoggingConfiguration

          功能网关
          map[string]bool
          (可选)

          featureGates 是一个功能名称到布尔值的映射,用于启用或禁用实验性功能。

          metricsListenAddress
          字符串

          指标端点应监听的主机和端口。值“0”将禁用指标服务器。默认为“0.0.0.0:9402”。

          metricsTLSConfig
          github.com/cert-manager/cert-manager/pkg/apis/config/shared/v1alpha1.TLSConfig

          metricsTLSConfig 用于配置指标服务器 TLS 设置。


          使用 gen-crd-api-reference-docs 在 git 提交 67c897d 上生成。