API 参考
cert-manager API 文档,包括各种自定义资源定义
包
- acme.cert-manager.io/v1
- cainjector.config.cert-manager.io/v1alpha1
- cert-manager.io/v1
- controller.config.cert-manager.io/v1alpha1
- meta.cert-manager.io/v1
- webhook.config.cert-manager.io/v1alpha1
acme.cert-manager.io/v1
包 v1 是 API 的 v1 版本。
资源类型
挑战
挑战是一种类型,用于表示与 ACME 服务器的挑战请求
字段 | 描述 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
apiVersion 字符串 | acme.cert-manager.io/v1 | ||||||||||||||||||
kind 字符串 | 挑战 | ||||||||||||||||||
metadata Kubernetes meta/v1.ObjectMeta | 有关 | ||||||||||||||||||
spec ChallengeSpec |
| ||||||||||||||||||
status ChallengeStatus | (可选) |
订单
订单是一种类型,用于表示与 ACME 服务器的订单
字段 | 描述 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
apiVersion 字符串 | acme.cert-manager.io/v1 | ||||||||||||
kind 字符串 | 订单 | ||||||||||||
metadata Kubernetes meta/v1.ObjectMeta | 有关 | ||||||||||||
spec OrderSpec |
| ||||||||||||
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 挑战机制无法为通配符域名(例如 |
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 资源上的字段 |
class 字符串 | (可选) 此字段在创建 Ingress 资源时配置注释 |
name 字符串 | (可选) 应在其中插入 ACME 挑战解决路由以解决 HTTP01 挑战的 ingress 资源的名称。这通常与 ingress-gce 等 ingress 控制器结合使用,这些控制器在外部 IP 和 ingress 资源之间维护 1:1 映射。只能指定 |
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 所有
如果未设置,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 了解当前支持的字段。所有其他字段将被忽略。
|
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 密钥。 |
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 帐户私钥。可选地,可以指定一个 |
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 配置。必须提供 apiKeySecretRef
或 apiTokenSecretRef
之一。
字段 | 描述 |
---|---|
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 字符串 | (可选) 在 DNS 中配置的 TSIG 密钥名称。如果定义了 |
tsigAlgorithm 字符串 | (可选) 在支持 RFC2136 的 DNS 中配置的 TSIG 算法。仅在定义了 |
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),则不需要 如果您使用 EKS Pod 身份,则不需要 |
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 是“通配符”,则此字段必须设置为非通配符域,例如,对于 |
wildcard 布尔值 | (可选) 如果此挑战针对通配符标识符(例如“*.example.com”),则 wildcard 将为 true。 |
type ACMEChallengeType | 此资源表示的 ACME 挑战类型。其中之一为“HTTP-01”或“DNS-01”。 |
token 字符串 | 此挑战的 ACME 挑战令牌。这是从 ACME 服务器返回的原始值。 |
key 字符串 | 此挑战的 ACME 挑战密钥。对于 HTTP01 挑战,这是必须以以下格式响应以完成 HTTP01 挑战的值: |
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 上指定的通用名称。如果指定,此值也必须存在于 |
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 的令牌中。始终包含由发行者命名空间和名称组成的默认令牌。如果未设置,则受众默认为 |
状态(string
别名)
(显示于: ACMEAuthorization,ChallengeStatus,OrderStatus)
状态表示 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
| ||||||||||||||||||||||||||||||||||||||||||||
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
| ||||||||||||||||||
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 | 有关 | ||
spec 发行者规范 | 集群发行者资源的预期状态。
| ||
status 发行者状态 | (可选) 集群发行者的状态。这将自动设置和管理。 |
颁发者
发行者表示一个证书颁发机构,可以作为issuerRef
字段的一部分引用。它的范围限定为单个命名空间,因此只能被同一个命名空间中的资源引用。
字段 | 描述 | ||
---|---|---|---|
apiVersion 字符串 | cert-manager.io/v1 | ||
kind 字符串 | 颁发者 | ||
metadata Kubernetes meta/v1.ObjectMeta | 有关 | ||
spec 发行者规范 | 发行者资源的预期状态。
| ||
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 证书条件类型 | 条件的类型,已知值为( |
status 条件状态 | 条件的状态,其中之一( |
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:* 目标密钥中不存在密钥对数据 * 密钥中存储的数据无法解码 * 私钥和证书不具有匹配的公钥 * 如果当前修订的证书请求存在,并且密钥中存储的证书数据与证书请求的 它将在“发行”控制器完成发行后被删除。 |
"Ready" | CertificateConditionReady 指示证书已准备好使用。这定义为:- 目标密钥存在 - 目标密钥包含一个未过期的证书 - 目标密钥包含一个对证书有效的私钥 - commonName 和 dnsNames 属性与证书上指定的属性匹配 |
证书密钥库
(出现在: 证书规范)
CertificateKeystores 配置要在证书的输出密钥中创建的其他密钥库输出格式。
字段 | 描述 |
---|---|
jks JKSKeystore | (可选) JKS 配置了在 |
pkcs12 PKCS12Keystore | (可选) PKCS12 配置了在 |
CertificateOutputFormatType (string
别名)
(出现在: 证书附加输出格式)
CertificateOutputFormatType 指定应写入证书目标密钥的附加输出格式。允许的值为DER
或CombinedPEM
。当 Type 设置为DER
时,一个额外的条目key.der
将被写入密钥,包含私钥的二进制格式。当 Type 设置为CombinedPEM
时,一个额外的条目tls-combined.pem
将被写入密钥,包含 PEM 格式的私钥和已签名证书链(tls.key + tls.crt 连接在一起)。
值 | 描述 |
---|---|
"CombinedPEM" | CertificateOutputFormatCombinedPEM 将证书的已签名证书链和私钥以 PEM 格式写入 |
"DER" | CertificateOutputFormatDER 将证书的私钥以 DER 二进制格式写入 |
证书私钥
(出现在: 证书规范)
CertificatePrivateKey 包含证书控制器使用的私钥的配置选项。这些选项包括密钥算法和大小、使用的编码以及轮换策略。
字段 | 描述 |
---|---|
rotationPolicy PrivateKeyRotationPolicy | (可选) RotationPolicy 控制在处理重新颁发时应如何重新生成私钥。 如果设置为 |
encoding PrivateKeyEncoding | (可选) 此证书的私钥要编码的私钥密码学标准 (PKCS) 编码。 如果提供,允许的值为 |
algorithm PrivateKeyAlgorithm | (可选) Algorithm 是此证书的对应私钥的私钥算法。 如果提供,允许的值为 |
size int | (可选) Size 是此证书的对应私钥的密钥位大小。 如果 |
CertificateRequestCondition
(出现在: CertificateRequestStatus)
CertificateRequestCondition 包含 CertificateRequest 的条件信息。
字段 | 描述 |
---|---|
type CertificateRequestConditionType | 条件类型,已知值为 ( |
status 条件状态 | 条件的状态,其中之一( |
lastTransitionTime Kubernetes meta/v1.Time | (可选) LastTransitionTime 是与该条件的上次状态更改相对应的 timestamps。 |
原因 字符串 | (可选) Reason 是对条件上次过渡的简短机器可读解释。 |
message 字符串 | (可选) Message 是对上次过渡的详细信息的人类可读描述,补充了 reason。 |
CertificateRequestConditionType (string
别名)
(出现在: CertificateRequestCondition)
CertificateRequestConditionType 表示 Certificate 条件值。
值 | 描述 |
---|---|
"Approved" | CertificateRequestConditionApproved 表示证书请求已获批准并准备签名。条件绝不能具有 |
"Denied" | CertificateRequestConditionDenied 表示证书请求被拒绝,并且绝不能签名。条件绝不能具有 |
"InvalidRequest" | CertificateRequestConditionInvalidRequest 表示证书签名者由于至少一个输入参数无效而拒绝签名请求。有关拒绝请求原因的更多信息,请参见 |
"Ready" | CertificateRequestConditionReady 表示证书已准备好使用。这定义为:- 目标证书存在于 CertificateRequest.Status 中 |
证书请求规范
(出现在: CertificateRequest)
CertificateRequestSpec 定义了 CertificateRequest 的期望状态
注意:重要的是要注意,颁发者可以选择忽略或更改任何请求的属性。颁发者如何将证书请求映射到已签名证书完全由颁发者自身负责。例如,作为极端情况,可以自由地反转 isCA 值的颁发者可以这样做。
字段 | 描述 |
---|---|
duration Kubernetes meta/v1.Duration | (可选) 请求的证书“持续时间”(即生命周期)。请注意,发行者可以选择忽略请求的持续时间,就像任何其他请求的属性一样。 |
issuerRef ObjectReference | 对负责颁发证书的发行者的引用。如果发行者是命名空间范围的,则它必须与证书位于同一个命名空间。如果发行者是集群范围的,则可以从任何命名空间使用它。 引用的 |
request []byte | 要提交给发行者进行签名的 PEM 编码 X.509 证书签名请求。 如果 CSR 具有 BasicConstraints 扩展,则其 isCA 属性必须与该证书请求的 |
isCA 布尔值 | (可选) 请求的基本约束 isCA 值。请注意,发行者可以选择忽略请求的 isCA 值,就像任何其他请求的属性一样。 注意:如果 如果为 true,这将自动将 |
usages []密钥用法 | (可选) 请求的密钥用法和扩展密钥用法。 注意:如果 如果未设置,则默认为 |
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 的状态。已知的条件类型为 |
证书 []byte | (可选) 由证书签名请求生成的 PEM 编码 X.509 证书。如果未设置,则表示 CertificateRequest 尚未完成或已失败。有关故障的更多信息,请查看 |
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 公用名属性在 |
literalSubject 字符串 | (可选) 请求的 X.509 证书主题,使用 LDAP 的“区分名称的字符串表示形式” [1] 表示。重要提示:LDAP 字符串格式还指定了主题中属性的顺序,这在为 LDAP 身份验证颁发证书时很重要。示例: 如果设置了 |
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。如果设置了 |
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 分钟,并且 注意:颁发的证书的实际有效期用于确定续订时间。如果发行者返回的证书的有效期与请求的有效期不同,则 cert-manager 将使用颁发的证书的有效期。 如果未设置,则默认为颁发的证书有效期的 1⁄3。最小可接受值为 5 分钟。值必须以 Go time.ParseDuration 接受的单位表示 https://golang.ac.cn/pkg/time/#ParseDuration。如果设置了 |
renewBeforePercentage int32 | (可选) 注意:颁发的证书的实际有效期用于确定续订时间。如果发行者返回的证书的有效期与请求的有效期不同,则 cert-manager 将使用颁发的证书的有效期。 值必须是介于 (0,100) 之间的整数。从 |
dnsNames []string | (可选) 请求的 DNS 主题备用名称。 |
ipAddresses []string | (可选) 请求的 IP 地址主题备用名称。 |
uris []string | (可选) 请求的 URI 主题备用名称。 |
otherNames []OtherName | (可选) |
emailAddresses []string | (可选) 请求的电子邮件主题备用名称。 |
secretName 字符串 | 将由此证书资源自动创建和管理的 Secret 资源的名称。它将填充有私钥和证书,并由指定的发行者签名。Secret 资源位于与证书资源相同的命名空间中。 |
secretTemplate 证书密钥模板 | (可选) 定义要复制到证书密钥的注释和标签。在添加或删除时,密钥上的标签和注释将根据密钥模板中的显示进行更改。密钥模板注释将与 cert-manager 在证书密钥上设置的基本注释集一起添加,但不能覆盖这些注释。 |
keystores 证书密钥库 | (可选) 要在证书的密钥中存储的其他密钥库输出格式。 |
issuerRef ObjectReference | 对负责颁发证书的发行者的引用。如果发行者是命名空间范围的,则它必须与证书位于同一个命名空间。如果发行者是集群范围的,则可以从任何命名空间使用它。 引用的 |
isCA 布尔值 | (可选) 请求的基本约束 isCA 值。isCA 值用于设置在创建的证书请求资源上设置的 如果为 true,这将自动将 |
usages []密钥用法 | (可选) 请求的密钥用法和扩展密钥用法。这些用法用于设置在创建的证书请求资源上设置的 如果未设置,则默认为 |
privateKey 证书私钥 | (可选) 私钥选项。这些包括密钥算法和大小、使用的编码和轮换策略。 |
encodeUsagesInRequest 布尔值 | (可选) 是否应在编码的 CSR 中设置 KeyUsage 和 ExtKeyUsage 扩展。 此选项默认为 true,仅在目标发行者不支持具有这些 X509 KeyUsage/ExtKeyUsage 扩展的 CSR 时才应禁用。 |
revisionHistoryLimit int32 | (可选) 在证书历史记录中维护的证书请求修订的最大数量。每个修订表示由该证书创建的单个 如果设置,revisionHistoryLimit 必须为 |
additionalOutputFormats []证书附加输出格式 | (可选) 定义要写入此证书的目标密钥的私钥和已签名证书链的额外输出格式。 这是一个默认启用的 Beta 功能。它可以通过在控制器和 webhook 组件上设置 |
nameConstraints 名称约束 | (可选) x.509 证书 NameConstraint 扩展,绝对不能在非 CA 证书中使用。更多信息:https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10 这是一个 Alpha 功能,仅在控制器和 webhook 组件上设置 |
证书状态
(出现在: Certificate)
CertificateStatus 定义了 Certificate 的观察到的状态
字段 | 描述 |
---|---|
conditions []CertificateCondition | (可选) 状态条件列表,用于指示证书的状态。已知的条件类型为 |
lastFailureTime Kubernetes meta/v1.Time | (可选) LastFailureTime 仅在针对此 Certificate 的最新颁发失败时设置,并包含失败时间。如果颁发失败,则下次颁发的延迟将使用公式 time.Hour * 2 ^ (failedIssuanceAttempts - 1) 计算。如果最新颁发已成功,则此字段将被取消设置。 |
notBefore Kubernetes meta/v1.Time | (可选) 此资源在 |
notAfter Kubernetes meta/v1.Time | (可选) 此资源在 |
renewalTime Kubernetes meta/v1.Time | (可选) RenewalTime 是证书将要下一次续订的时间。如果未设置,则表示未安排即将到来的续订。 |
revision int | (可选) 已颁发的证书的当前“版本”。 创建 CertificateRequest 资源时,它的 颁发后,此字段将设置为用于颁发证书的 CertificateRequest 资源上的注释的值。 在 CertificateRequest 资源上持久保存该值允许证书控制器通过检查注释中的版本值是否大于此字段来了解请求是否属于旧颁发或属于正在进行的版本的颁发。 |
nextPrivateKeySecretName 字符串 | (可选) 包含用于下次证书迭代的私钥的 Secret 资源的名称。如果 |
failedIssuanceAttempts int | (可选) 到目前为止的连续颁发失败尝试次数。此字段在成功颁发后将被删除(如果已设置),如果未设置并且颁发已失败,则将被设置为 1。如果颁发失败,则下次颁发的延迟将使用公式 time.Hour * 2 ^ (failedIssuanceAttempts - 1) 计算。 |
GenericIssuer
IssuerCondition
(出现在: IssuerStatus)
IssuerCondition 包含 Issuer 的条件信息。
字段 | 描述 |
---|---|
type IssuerConditionType | 条件类型,已知值为 ( |
status 条件状态 | 条件的状态,其中之一( |
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 条件处于就绪状态,能够颁发证书。如果此条件的 |
发行者配置
(出现在: 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 的规范。这包括颁发者所需的任何配置。
字段 | 描述 |
---|---|
发行者配置 发行者配置 | ( |
发行者状态
(出现在: ClusterIssuer, Issuer)
IssuerStatus 包含有关 Issuer 的状态信息
字段 | 描述 |
---|---|
conditions []IssuerCondition | (可选) 状态条件列表,用于指示 CertificateRequest 的状态。已知的条件类型为 |
acme ACMEIssuerStatus | (可选) ACME 特定的状态选项。如果 Issuer 配置为使用 ACME 服务器颁发证书,则应仅设置此字段。 |
JKSKeystore
(出现在: CertificateKeystores)
JKS 配置了在spec.secretName
密钥资源中存储 JKS 密钥库的选项。
字段 | 描述 |
---|---|
create 布尔值 | Create 为 Certificate 启用 JKS 密钥库创建。如果为 true,则将在目标 Secret 资源中创建名为 |
passwordSecretRef SecretKeySelector | PasswordSecretRef 是对 Secret 资源中包含用于加密 JKS 密钥库的密码的密钥的引用。 |
alias 字符串 | (可选) Alias 指定密钥库中密钥的别名,这是 JKS 格式要求的。如果未提供,则将使用默认别名 |
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 密钥库创建。如果为真,则名为 |
passwordSecretRef SecretKeySelector | PasswordSecretRef 是对 Secret 资源中的密钥的引用,该密钥包含用于加密 PKCS12 密钥库的密码。 |
profile PKCS12Profile | (可选) Profile 指定用于创建 PKCS12 密钥库的密钥和证书加密算法以及 HMAC 算法。默认值为 如果提供,允许的值为: |
PKCS12Profile (string
别名)
(出现在: PKCS12Keystore)
PrivateKeyAlgorithm (string
别名)
(出现在: CertificatePrivateKey)
值 | 描述 |
---|---|
"ECDSA" | ECDSA 私钥算法。 |
"Ed25519" | Ed25519 私钥算法。 |
"RSA" | RSA 私钥算法。 |
PrivateKeyEncoding (string
别名)
(出现在: CertificatePrivateKey)
值 | 描述 |
---|---|
"PKCS1" | PKCS1 私钥编码。PKCS1 生成包含标头中的私钥算法和正文中的私钥的 PEM 块。使用此编码的密钥可以通过其 |
"PKCS8" | PKCS8 私钥编码。PKCS8 生成一个带有静态标头的 PEM 块,以及正文中的私钥算法和私钥。使用此编码的密钥可以通过其 |
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 密钥。必须指定 |
VaultAuth
(出现在: VaultIssuer)
VaultAuth 是用于与 Vault 服务器身份验证的配置。优先级顺序为 [tokenSecretRef
, appRole
, clientCertificate
或 kubernetes
]。
字段 | 描述 |
---|---|
令牌密钥引用 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 身份验证时要使用的挂载路径。例如,将值设置为 |
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 后端的 |
命名空间 字符串 | (可选) 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 身份验证时要使用的挂载路径。例如,将值设置为 |
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 服务器连接地址。已弃用:使用 |
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 | ( |
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 | ( 被引用的 Secret 资源的名称。 |
key 字符串 | (可选) Secret 资源的 |
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 服务器连接地址。已弃用:使用 |
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
上生成。