新訊:在TwitterMastodon取得專案更新

API 參考

cert-manager API 文件,包括各種自訂資源定義

套件

acme.cert-manager.io/v1

套件 v1 是 API 的 v1 版本。

資源類型

挑戰

Challenge 是一種類型,代表與 ACME 伺服器的挑戰請求

欄位描述
apiVersion

字串

acme.cert-manager.io/v1
種類

字串

挑戰
metadata
Kubernetes meta/v1.ObjectMeta

請參閱 Kubernetes API 文件,了解 metadata 欄位的欄位。

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 挑戰的值,格式如下:<私密金鑰 JWK 指紋>.<來自 acme 伺服器的挑戰金鑰>。對於 DNS01 挑戰,這是 <私密金鑰 JWK 指紋>.<來自 acme 伺服器的挑戰金鑰> 文字的 base64 編碼 SHA256 總和,必須設定為 TXT 記錄內容。

solver
ACMEChallengeSolver

包含應使用來解決此挑戰資源的網域解決組態。

issuerRef
ObjectReference

參考正確設定的 ACME 類型簽發者,該簽發者應用於建立此挑戰。如果簽發者不存在,則會重試處理。如果簽發者不是「ACME」簽發者,則會傳回錯誤,且挑戰將標示為失敗。

status
ChallengeStatus
(選用)

訂單

Order 是一種代表與 ACME 伺服器的 Order 的類型

欄位描述
apiVersion

字串

acme.cert-manager.io/v1
種類

字串

訂單
metadata
Kubernetes meta/v1.ObjectMeta

請參閱 Kubernetes API 文件,了解 metadata 欄位的欄位。

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 是請求憑證的「Not After」日期的持續時間。這是在訂單建立時依照 ACME 規範設定。

status
OrderStatus
(選用)

ACMEAuthorization

(顯示於: OrderStatus)

ACMEAuthorization 包含從 ACME 伺服器傳回的授權資料,必須完成此授權才能驗證 ACME Order 資源上的 DNS 名稱。

欄位描述
url
字串

URL 是必須完成的授權的 URL

identifier
字串
(選用)

Identifier 是在此授權中要驗證的 DNS 名稱

wildcard
布林值
(選用)

如果此授權用於萬用字元 DNS 名稱,則 Wildcard 將為 true。如果此值為 true,則 identifier 將為 DNS 名稱的非萬用字元版本。例如,如果正在驗證 ‘*.example.com’ 的 DNS 名稱,則此欄位將為 ‘true’,而 ‘identifier’ 欄位將為 ‘example.com’。

initialState
State
(選用)

InitialState 是第一次從 ACME 伺服器擷取時 ACME 授權的初始狀態。如果授權已經是「valid」,則 Order 控制器不會為該授權建立 Challenge 資源。當使用啟用「authz 重複使用」(例如 Let’s Encrypt 的生產端點) 的 ACME 伺服器時,會發生這種情況。如果未設定且設定了 ‘identifier’,則會假設狀態為擱置中,並會建立 Challenge。

challenges
[]ACMEChallenge
(選用)

Challenges 指定 ACME 伺服器提供的挑戰類型。在驗證 DNS 名稱時,會選取其中一種挑戰類型,並會建立適當的 Challenge 資源來執行 ACME 挑戰程序。

ACMEChallenge

(顯示於: ACMEAuthorization)

Challenge 指定 ACME 伺服器為 Order 提供的挑戰。可以建立適當的 Challenge 資源來執行 ACME 挑戰程序。

欄位描述
url
字串

URL 是此挑戰的 URL。它可用於從 ACME 伺服器擷取有關挑戰的其他中繼資料。

token
字串

Token 是必須為此挑戰呈現的權杖。這用於計算也必須呈現的「key」。

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 設定當在 DNS 區域中找到 CNAME 記錄時,DNS01 提供者應如何處理 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 挑戰的組態。通常,這是透過建立某種描述的「路由」來完成,這些路由設定輸入控制器以將流量導向「解題器 Pod」,這些 Pod 負責回應 ACME 伺服器的 HTTP 請求。僅可指定 Ingress / Gateway 其中之一。

欄位描述
ingress
ACMEChallengeSolverHTTP01Ingress
(選用)

基於輸入的 HTTP01 挑戰解題器將透過建立或修改 Ingress 資源來解決挑戰,以便將針對 ‘/.well-known/acme-challenge/XYZ’ 的請求路由至 cert-manager 為每個要完成的挑戰佈建的「挑戰解題器」Pod。

gatewayHTTPRoute
ACMEChallengeSolverHTTP01GatewayHTTPRoute
(選用)

Gateway API 是一個 sig-network 社區 API,可在 Kubernetes 中建模服務網路 (https://gateway-api.sigs.k8s.io/)。Gateway 解題器將在與挑戰相同的命名空間中建立具有指定標籤的 HTTPRoutes。此解題器為實驗性質,欄位/行為可能會在未來變更。

ACMEChallengeSolverHTTP01GatewayHTTPRoute

(顯示於: ACMEChallengeSolverHTTP01)

ACMEChallengeSolverHTTP01GatewayHTTPRoute 解題器將為路由至 ACME 挑戰解題器 Pod 的 Gateway 類別建立 HTTPRoute 物件。

欄位描述
serviceType
Kubernetes core/v1.ServiceType
(選用)

Kubernetes 解題器服務的選用服務類型。支援的值為 NodePort 或 ClusterIP。如果未設定,則預設為 NodePort。

labels
map[string]string
(選用)

在解決 HTTP-01 挑戰時,將套用至 cert-manager 所建立之 HTTPRoute 的自訂標籤。

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

在解決 HTTP-01 挑戰時,cert-manager 會建立 HTTPRoute。cert-manager 需要知道在建立 HTTPRoute 時應使用哪些 parentRefs。通常,parentRef 參考 Gateway。請參閱:https://gateway-api.sigs.k8s.io/api-types/httproute/#attaching-to-gateways

podTemplate
ACMEChallengeSolverHTTP01IngressPodTemplate
(選用)

用於設定用於 HTTP01 挑戰之 ACME 挑戰解題器 Pod 的選用 Pod 範本。

ACMEChallengeSolverHTTP01Ingress

(顯示於: ACMEChallengeSolverHTTP01)

欄位描述
serviceType
Kubernetes core/v1.ServiceType
(選用)

Kubernetes 解題器服務的選用服務類型。支援的值為 NodePort 或 ClusterIP。如果未設定,則預設為 NodePort。

ingressClassName
字串
(選用)

此欄位設定用於解決 ACME 挑戰的 Ingress 資源上的 ingressClassName 欄位,以使用此挑戰解決器。這是設定 Ingress 類別的建議方式。只能指定 classnameingressClassName 其中一個。

class
字串
(選用)

此欄位在建立 Ingress 資源以解決使用此挑戰解決器的 ACME 挑戰時,會設定註解 kubernetes.io/ingress.class。只能指定 classnameingressClassName 其中一個。

name
字串
(選用)

為了解決 HTTP01 挑戰,應將 ACME 挑戰解決路由插入其中的 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—- 進行 OR 運算

如果未設定,Kubelet 將不會修改任何磁碟區的所有權和許可權。請注意,當 spec.os.name 為 windows 時,無法設定此欄位。

sysctls
[]Kubernetes core/v1.Sysctl
(選用)

Sysctls 保留用於 Pod 的命名空間 sysctl 清單。具有不受支援的 sysctl(由容器執行階段)的 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.dev.org.tw/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.dev.org.tw/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。

Value描述

"DNS-01"

ACMEChallengeTypeDNS01 表示挑戰類型為 dns-01。更多資訊:https://letsencrypt.dev.org.tw/docs/challenge-types/#dns-01-challenge

"HTTP-01"

ACMEChallengeTypeHTTP01 表示挑戰類型為 http-01。更多資訊:https://letsencrypt.dev.org.tw/docs/challenge-types/#http-01-challenge

ACMEExternalAccountBinding

(出現於: ACMEIssuer)

ACMEExternalAccountBinding 是對 ACME 伺服器 CA 外部帳戶的參考。

欄位描述
keyID
字串

keyID 是與外部帳戶綁定的 CA 金鑰 ID。

keySecretRef
SecretKeySelector

keySecretRef 是一個 Secret Key Selector,參考 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
(選用)

PEM CA 的 Base64 編碼組合,可用於驗證 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.dev.org.tw/docs/configuration/acme/

disableAccountKeyGeneration
布林值
(選用)

啟用或停用產生新的 ACME 帳戶金鑰。如果為 true,Issuer 資源將不會請求新帳戶,但會預期透過現有的 secret 提供帳戶金鑰。如果為 false,cert-manager 系統將為 Issuer 產生新的 ACME 帳戶金鑰。預設值為 false。

enableDurationFeature
布林值
(選用)

啟用在憑證上請求符合憑證期限的 Not After 日期。並非所有 ACME 伺服器(如 Let’s Encrypt)都支援此功能。如果 ACME 伺服器不支援此功能時設定為 true,則會在 Order 上產生錯誤。預設值為 false。

ACMEIssuerDNS01ProviderAcmeDNS

顯示於: ACMEChallengeSolverDNS01

ACMEIssuerDNS01ProviderAcmeDNS 是一個結構,包含 ACME-DNS 伺服器的配置

欄位描述
host
字串
accountSecretRef
SecretKeySelector

ACMEIssuerDNS01ProviderAkamai

顯示於: ACMEChallengeSolverDNS01

ACMEIssuerDNS01ProviderAkamai 是一個結構,包含 Akamai DNS 的 DNS 配置—區域記錄管理 API

欄位描述
serviceConsumerDomain
字串
clientTokenSecretRef
SecretKeySelector
clientSecretSecretRef
SecretKeySelector
accessTokenSecretRef
SecretKeySelector

ACMEIssuerDNS01ProviderAzureDNS

顯示於: ACMEChallengeSolverDNS01

ACMEIssuerDNS01ProviderAzureDNS 是一個結構,包含 Azure DNS 的配置

欄位描述
clientID
字串
(選用)

驗證:Azure 服務主體:用於向 Azure DNS 驗證的 Azure 服務主體的 ClientID。如果設定,則也必須設定 ClientSecret 和 TenantID。

clientSecretSecretRef
SecretKeySelector
(選用)

驗證:Azure 服務主體:對包含與服務主體相關聯的密碼的 Secret 的參考。如果設定,則也必須設定 ClientID 和 TenantID。

subscriptionID
字串

Azure 訂閱的 ID

tenantID
字串
(選用)

驗證:Azure 服務主體:用於向 Azure DNS 驗證的 Azure 服務主體的 TenantID。如果設定,則也必須設定 ClientID 和 ClientSecret。

resourceGroupName
字串

DNS 區域所在的資源群組

hostedZoneName
字串
(選用)

應使用的 DNS 區域的名稱

environment
AzureDNSEnvironment
(選用)

Azure 環境的名稱 (預設值為 AzurePublicCloud)

managedIdentity
AzureManagedIdentity
(選用)

驗證:Azure 工作負載身分識別或 Azure 受管理服務身分識別:用於啟用 Azure 工作負載身分識別或 Azure 受管理服務身分識別的設定。如果設定,則不得設定 ClientID、ClientSecret 和 TenantID。

ACMEIssuerDNS01ProviderCloudDNS

顯示於: ACMEChallengeSolverDNS01

ACMEIssuerDNS01ProviderCloudDNS 是一個結構,包含 Google Cloud DNS 的 DNS 配置

欄位描述
serviceAccountSecretRef
SecretKeySelector
(選用)
project
字串
hostedZoneName
字串
(選用)

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 配置

欄位描述
tokenSecretRef
SecretKeySelector

ACMEIssuerDNS01ProviderRFC2136

顯示於: ACMEChallengeSolverDNS01

ACMEIssuerDNS01ProviderRFC2136 是一個結構,包含 RFC2136 DNS 的配置

欄位描述
nameserver
字串

支援 RFC2136 的授權 DNS 伺服器的 IP 位址或主機名稱,格式為 host:port。如果主機是 IPv6 位址,則必須以方括號括住(例如 [2001:db8::1]);port 是選填的。此欄位為必填。

tsigSecretSecretRef
SecretKeySelector
(選用)

包含 TSIG 值的 Secret 的名稱。如果已定義 tsigKeyName,則此欄位為必填。

tsigKeyName
字串
(選用)

在 DNS 中配置的 TSIG 金鑰名稱。如果已定義 tsigSecretSecretRef,則此欄位為必填。

tsigAlgorithm
字串
(選用)

在支援 RFC2136 的 DNS 中配置的 TSIG 演算法。僅當定義了 tsigSecretSecretReftsigKeyName 時才使用。支援的值(不區分大小寫)為:HMACMD5 (預設值)、HMACSHA1HMACSHA256HMACSHA512

ACMEIssuerDNS01ProviderRoute53

顯示於: ACMEChallengeSolverDNS01

ACMEIssuerDNS01ProviderRoute53 是一個結構,包含 AWS 的 Route 53 配置

欄位描述
auth
Route53Auth
(選用)

Auth 配置 cert-manager 的驗證方式。

accessKeyID
字串
(選用)

AccessKeyID 用於驗證。當設定 SecretAccessKeyID 時無法設定。如果既未設定 Access Key 也未設定 Key ID,我們會回退為使用環境變數、共用憑證檔案或 AWS 執行個體中繼資料,請參閱:https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials

accessKeyIDSecretRef
SecretKeySelector
(選用)

SecretAccessKey 用於驗證。如果設定,則從 Kubernetes Secret 中的金鑰提取 AWS access key ID。當設定 AccessKeyID 時無法設定。如果既未設定 Access Key 也未設定 Key ID,我們會回退為使用環境變數、共用憑證檔案或 AWS 執行個體中繼資料,請參閱:https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials

secretAccessKeySecretRef
SecretKeySelector
(選用)

SecretAccessKey 用於驗證。如果既未設定 Access Key 也未設定 Key ID,我們會回退為使用環境變數、共用憑證檔案或 AWS 執行個體中繼資料,請參閱:https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials

role
字串
(選用)

Role 是 Route53 提供者將使用明確憑證 AccessKeyID/SecretAccessKey 或從環境變數、共用憑證檔案或 AWS 執行個體中繼資料推斷的憑證假設的角色 ARN

hostedZoneID
字串
(選用)

如果設定,則提供者將僅管理 Route53 中的此區域,並且不會使用 route53:ListHostedZonesByName api 呼叫執行查閱。

region
字串
(選用)

覆寫 AWS 區域。

Route53 是一項全球服務,沒有區域端點,但此處(或透過環境變數)指定的區域會作為提示,以協助計算連線到 Route53 時正確的 AWS 憑證範圍和分割區。請參閱:- Amazon Route 53 端點和配額- 全球服務

如果您省略此區域欄位,cert-manager 將使用來自 AWS_REGION 和 AWS_DEFAULT_REGION 環境變數的區域(如果它們設定在 cert-manager 控制器 Pod 中)。

如果您使用服務帳戶的 IAM 角色 (IRSA),則不需要 region 欄位。相反地,Amazon EKS Pod 身分識別 Webhook 會將 AWS_REGION 環境變數新增至 cert-manager 控制器 Pod。在這種情況下,將忽略此 region 欄位值。

如果您使用EKS Pod 身分識別,則不需要 region 欄位。相反地,Amazon EKS Pod 身分識別代理程式 會將 AWS_REGION 環境變數新增至 cert-manager 控制器 Pod。在這種情況下,將忽略此 region 欄位值。

ACMEIssuerDNS01ProviderWebhook

顯示於: ACMEChallengeSolverDNS01

ACMEIssuerDNS01ProviderWebhook 指定 webhook DNS01 提供者的配置,包括要將 ChallengePayload 資源 POST 到何處。

欄位描述
groupName
字串

當將 ChallengePayload 資源 POST 到 webhook apiserver 時應使用的 API 群組名稱。這應與 webhook 提供者實作中指定的 GroupName 相同。

solverName
字串

要使用的解算器的名稱,如 webhook 提供者實作中所定義。這通常會是提供者的名稱,例如 'cloudflare'。

config
Kubernetes apiextensions/v1.JSON
(選用)

在處理挑戰時應傳遞給 webhook apiserver 的其他配置。這可以包含任意 JSON 資料。不應在此 stanza 中指定密碼值。如果需要密碼值(例如,DNS 服務的憑證),則應使用 SecretKeySelector 來參考 Secret 資源。如需此欄位結構的詳細資訊,請參閱 webhook 提供者實作的文件。

ACMEIssuerStatus

顯示於: IssuerStatus

欄位描述
uri
字串
(選用)

URI 是唯一的帳戶識別碼,也可用於從 CA 檢索帳戶詳細資料

lastRegisteredEmail
字串
(選用)

LastRegisteredEmail 是與最新註冊的 ACME 帳戶相關聯的電子郵件,以便追蹤對與 Issuer 相關聯的已註冊帳戶所做的變更

lastPrivateKeyHash
字串
(選用)

LastPrivateKeyHash 是與最新註冊的 ACME 帳戶相關聯的私鑰的雜湊,以便追蹤對與 Issuer 相關聯的已註冊帳戶所做的變更

AzureDNSEnvironment(string 別名)

顯示於: ACMEIssuerDNS01ProviderAzureDNS

Value描述

"AzureChinaCloud"

"AzureGermanCloud"

"AzurePublicCloud"

"AzureUSGovernmentCloud"

AzureManagedIdentity

顯示於: ACMEIssuerDNS01ProviderAzureDNS

AzureManagedIdentity 包含 Azure 工作負載身分識別或 Azure 受管理服務身分識別的配置。如果設定了 AZURE_FEDERATED_TOKEN_FILE 環境變數,則將使用 Azure 工作負載身分識別。否則,我們會回退為使用 Azure 受管理服務身分識別。

欄位描述
clientID
字串
(選用)

受管理身分識別的客戶端 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
(選用)

此求解器將用於解析的 DNS 名稱清單。如果指定且找到匹配項,則 dnsNames 選擇器將優先於 dnsZones 選擇器。如果多個求解器匹配相同的 dnsNames 值,則會選擇 matchLabels 中具有最多匹配標籤的求解器。如果兩者都沒有更多匹配項,則會選擇列表中較早定義的求解器。

dnsZones
[]string
(選用)

此求解器將用於解析的 DNS 區域清單。此處指定的最特定 DNS 區域匹配將優先於其他 DNS 區域匹配,因此對於網域 www.sys.example.com,指定 sys.example.com 的求解器將被選中,而不是指定 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 挑戰的值,格式如下:<私密金鑰 JWK 指紋>.<來自 acme 伺服器的挑戰金鑰>。對於 DNS01 挑戰,這是 <私密金鑰 JWK 指紋>.<來自 acme 伺服器的挑戰金鑰> 文字的 base64 編碼 SHA256 總和,必須設定為 TXT 記錄內容。

solver
ACMEChallengeSolver

包含應使用來解決此挑戰資源的網域解決組態。

issuerRef
ObjectReference

參考正確設定的 ACME 類型簽發者,該簽發者應用於建立此挑戰。如果簽發者不存在,則會重試處理。如果簽發者不是「ACME」簽發者,則會傳回錯誤,且挑戰將標示為失敗。

ChallengeStatus

出現於: Challenge

欄位描述
processing
布林值
(選用)

用於表示是否應處理此挑戰。此欄位只會由「排程」元件設定為 true。只有在挑戰達到最終狀態或逾時後,才會由「challenges」控制器設定為 false。如果此欄位設定為 false,則挑戰控制器將不會採取任何進一步的動作。

presented
布林值
(選用)

如果此挑戰的挑戰值目前已「呈現」,則 presented 將設定為 true。這並不表示自我檢查通過。僅表示已針對適當的挑戰機制「提交」這些值(即,已呈現 DNS01 TXT 記錄,或已設定 HTTP01 設定)。

reason
字串
(選用)

包含有關挑戰目前狀態的人類可讀資訊。

state
State
(選用)

包含挑戰的目前「狀態」。如果未設定,則挑戰的狀態未知。

HMACKeyAlgorithm (string 別名)

出現於: ACMEExternalAccountBinding

HMACKeyAlgorithm 是用於 HMAC 加密的金鑰演算法名稱

Value描述

"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 是請求憑證的「Not After」日期的持續時間。這是在訂單建立時依照 ACME 規範設定。

OrderStatus

出現於: Order

欄位描述
url
字串
(選用)

Order 的 URL。當首次建立資源時,此欄位最初將為空。Order 控制器會在首次處理 Order 時填入此欄位。此欄位在首次設定後將不可變。

finalizeURL
字串
(選用)

Order 的 FinalizeURL。一旦訂單完成,此網址用於取得此訂單的憑證。

authorizations
[]ACMEAuthorization
(選用)

Authorizations 包含從 ACME 伺服器傳回的資料,說明為了驗證 Order 上指定的 DNS 名稱必須完成哪些授權。

certificate
[]byte
(選用)

Certificate 是此 Order 的 PEM 編碼憑證副本。此欄位會在訂單成功在 ACME 伺服器上完成並轉換為「有效」狀態後填入。

state
State
(選用)

State 包含此 Order 資源的目前狀態。「success」和「expired」狀態為「最終」狀態

reason
字串
(選用)

Reason 選擇性地提供更多關於訂單目前狀態的原因資訊。

failureTime
Kubernetes meta/v1.Time
(選用)

FailureTime 儲存此訂單失敗的時間。這用於影響垃圾收集和退避。

Route53Auth

出現於: ACMEIssuerDNS01ProviderRoute53

Route53Auth 是用於驗證 Route53 的組態。

欄位描述
kubernetes
Route53KubernetesAuth

Kubernetes 使用 AssumeRoleWithWebIdentity,透過傳遞綁定的 ServiceAccount 權杖來驗證 Route53。

Route53KubernetesAuth

出現於: Route53Auth

Route53KubernetesAuth 是使用綁定的 Kubernetes ServiceAccount 權杖對 Route53 進行驗證的組態。

欄位描述
serviceAccountRef
ServiceAccountRef

對將用於請求綁定權杖(也稱為「投影權杖」)的服務帳戶的參考。若要使用此欄位,您必須設定 RBAC 規則,讓 cert-manager 請求權杖。

ServiceAccountRef

出現於: Route53KubernetesAuth

ServiceAccountRef 是 cert-manager 用於請求權杖的服務帳戶。權杖的到期時間也由 cert-manager 設定為 10 分鐘。

欄位描述
name
字串

用於請求權杖的 ServiceAccount 名稱。

audiences
[]string
(選用)

TokenAudiences 是要包含在傳遞給 AWS 的權杖中的選用受眾清單。預設權杖由發行者的命名空間和名稱組成,始終會包含在內。如果未設定,則受眾預設為 sts.amazonaws.com

State (string 別名)

出現於: ACMEAuthorizationChallengeStatusOrderStatus

State 代表 ACME 資源(例如 Order)的狀態。此處的可能選項對應於 ACME 規格中的相應值。這些值的完整詳細資訊可以在此處找到:https://tools.ietf.org/html/draft-ietf-acme-acme-15#section-7.1.6 使用此類型的用戶端也必須優雅地處理未知的值,因為此列舉的內容可能會隨著時間的推移而增加。

Value描述

"errored"

Errored 表示 ACME 資源因某種原因而錯誤。這是一個包羅萬象的狀態,用於標記內部 cert-manager 錯誤,例如驗證失敗。這是一個最終狀態。

"expired"

Expired 表示 ACME 資源已過期。如果 Order 標記為「Expired」,則其驗證之一可能已過期或 Order 本身已過期。這是一個最終狀態。

"invalid"

Invalid 表示 ACME 資源因某種原因而無效。如果 Order 標記為「invalid」,則其驗證之一必須因某種原因而無效。這是一個最終狀態。

"pending"

Pending 表示 ACME 資源仍在擱置中,尚未準備就緒。如果 Order 標記為「Pending」,則該 Order 的驗證仍在進行中。這是一個暫時狀態。

"processing"

Processing 表示 ACME 資源正在由伺服器處理。如果 Order 標記為「Processing」,則該 Order 的驗證目前正在處理中。這是一個暫時狀態。

"ready"

Ready 表示 ACME 資源處於就緒狀態。如果訂單處於「ready」狀態,則其所有挑戰都已成功完成,並且訂單已準備好完成。一旦完成,它將轉換為有效狀態。這是一個暫時狀態。

""

Unknown 不是 ACME 規格的一部分的真實狀態。它用於表示無法辨識的值。

"valid"

Valid 表示 ACME 資源處於有效狀態。如果訂單為「valid」,則已在 ACME 伺服器上完成,並且可以使用儲存在 Order 狀態子資源中的憑證 URL 從 ACME 伺服器檢索憑證。這是一個最終狀態。


cainjector.config.cert-manager.io/v1alpha1

套件 v1alpha1 是 cainjector 組態 API 的 v1alpha1 版本。

資源類型

    CAInjectorConfiguration

    欄位描述
    kubeConfig
    字串

    kubeConfig 是用於連線到 Kubernetes apiserver 的 kubeconfig 檔案。如果未指定,cainjector 將嘗試載入叢集內組態。

    namespace
    字串

    如果設定,這會將 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 上提供服務。

    logging
    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

    featureGates
    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
    布林值

    Certificates 決定 cainjector 的控制迴路是否會將 cert-manager Certificate 資源視為 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 版本。

    資源類型

    憑證

    應該建立 Certificate 資源,以確保在 spec.secretName 中命名的 Kubernetes Secret 資源中儲存最新的簽署 X.509 憑證。

    儲存的憑證會在到期之前續約(如 spec.renewBefore 所設定)。

    欄位描述
    apiVersion

    字串

    cert-manager.io/v1
    種類

    字串

    憑證
    metadata
    Kubernetes meta/v1.ObjectMeta

    (選用)

    標準物件的中繼資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    請參閱 Kubernetes API 文件,了解 metadata 欄位的欄位。

    spec
    CertificateSpec
    (選用)

    Certificate 資源所需狀態的規格。https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status



    subject
    X509Subject
    (選用)

    要求的 X509 憑證主體屬性集合。更多資訊: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
    字串
    (選用)

    請求的 X509 憑證主體屬性通用名稱。更多資訊: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://go.dev.org.tw/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://go.dev.org.tw/pkg/time/#ParseDuration。如果已設定 renewBeforePercentage 欄位,則無法設定此欄位。

    renewBeforePercentage
    int32
    (選用)

    renewBeforePercentage 類似於 renewBefore,但它是一個相對百分比,而不是絕對持續時間。例如,如果憑證的有效時間為 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 的逃生出口,允許任何類型。我們目前將支援限制為類似字串的其他名稱,請參閱 RFC 5280 第 37 頁。任何 UTF8 字串值其他名稱都可以透過設定金鑰 oid: x.x.x.x 和 UTF8Value: somevalue 來傳遞 otherName。最常見的情況是使用 oid: 1.3.6.1.4.1.311.20.2.3 設定的 UPN。您應該確保傳遞的任何 OID 對於 UTF8String 類型都是有效的,因為我們不會明確驗證此類型。

    emailAddresses
    []string
    (選用)

    請求的電子郵件主體別名。

    secretName
    字串

    將由此憑證資源自動建立和管理的 Secret 資源名稱。它將使用私鑰和憑證填充,並由指定的簽發者簽署。Secret 資源與憑證資源位於相同的命名空間中。

    secretTemplate
    CertificateSecretTemplate
    (選用)

    定義要複製到憑證 Secret 的註解和標籤。當新增或移除時,Secret 上的標籤和註解將會隨著它們在 SecretTemplate 上的出現而改變。SecretTemplate 註解會與 cert-manager 在憑證 Secret 上設定的基本註解集一起新增,且無法覆寫該基本註解集。

    keystores
    CertificateKeystores
    (選用)

    要儲存在憑證 Secret 中的其他金鑰儲存輸出格式。

    issuerRef
    ObjectReference

    引用負責簽發憑證的簽發者。如果簽發者是命名空間範圍的,則它必須與憑證位於相同的命名空間中。如果簽發者是叢集範圍的,則可以從任何命名空間使用它。

    參考的 name 欄位必須始終指定。

    isCA
    布林值
    (選用)

    請求的基本約束 isCA 值。isCA 值用於在建立的 CertificateRequest 資源上設定 isCA 欄位。請注意,簽發者可能會選擇忽略請求的 isCA 值,就像任何其他請求的屬性一樣。

    如果為 true,這會自動將 cert sign 用法新增到請求的 usages 清單中。

    usages
    []KeyUsage
    (選用)

    請求的金鑰用法和擴展金鑰用法。這些用法用於在建立的 CertificateRequest 資源上設定 usages 欄位。如果 encodeUsagesInRequest 未設定或設定為 true,則這些用法也會編碼到包含 CSR blob 的 request 欄位中。

    如果未設定,則預設為 digital signaturekey encipherment

    privateKey
    CertificatePrivateKey
    (選用)

    私鑰選項。這些選項包括金鑰演算法和大小、使用的編碼以及輪換策略。

    encodeUsagesInRequest
    布林值
    (選用)

    是否應在編碼的 CSR 中設定 KeyUsage 和 ExtKeyUsage 擴展。

    此選項預設為 true,只有在目標簽發者不支援具有這些 X509 KeyUsage/ExtKeyUsage 擴展的 CSR 時才應停用。

    revisionHistoryLimit
    int32
    (選用)

    憑證歷史中維護的 CertificateRequest 修訂版本最大數量。每個修訂版本都代表此憑證建立的單一 CertificateRequest,無論是建立、更新還是變更規格時。如果修訂版本的數量超過此數量,則會依最舊優先順序移除修訂版本。

    如果設定,revisionHistoryLimit 必須是 1 或更大的值。如果未設定 (nil),則不會進行垃圾收集。預設值為 nil

    additionalOutputFormats
    []CertificateAdditionalOutputFormat
    (選用)

    定義要寫入此憑證目標 Secret 的私鑰和簽署憑證鏈的其他輸出格式。

    這是一個預設啟用的 Beta 功能。可以使用在控制器和 webhook 元件上設定的 --feature-gates=AdditionalCertificateOutputFormats=false 選項來停用。

    nameConstraints
    NameConstraints
    (選用)

    x.509 憑證 NameConstraint 擴展,不得在非 CA 憑證中使用。更多資訊:https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10

    這是一個 Alpha 功能,僅當在控制器和 webhook 元件上設定 --feature-gates=NameConstraints=true 選項時才會啟用。

    status
    CertificateStatus
    (選用)

    憑證的狀態。這是自動設定和管理的。唯讀。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

    憑證請求

    CertificateRequest 用於向設定的簽發者之一請求簽署的憑證。

    CertificateRequest 的 spec 內的所有欄位在建立後都是不可變的。CertificateRequest 將會成功或失敗,如其 Ready 狀態條件和其 status.failureTime 欄位所示。

    CertificateRequest 是一個一次性資源,表示對憑證的單一時間點請求,且無法重複使用。

    欄位描述
    apiVersion

    字串

    cert-manager.io/v1
    種類

    字串

    憑證請求
    metadata
    Kubernetes meta/v1.ObjectMeta

    (選用)

    標準物件的中繼資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

    請參閱 Kubernetes API 文件,了解 metadata 欄位的欄位。

    spec
    CertificateRequestSpec
    (選用)

    CertificateRequest 資源所需狀態的規格。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 屬性必須與此 CertificateRequest 的 isCA 值相符。如果 CSR 具有 KeyUsage 擴展,則其金鑰用法必須與此 CertificateRequest 的 usages 欄位中的金鑰用法相符。如果 CSR 具有 ExtKeyUsage 擴展,則其擴展金鑰用法必須與此 CertificateRequest 的 usages 欄位中的擴展金鑰用法相符。

    isCA
    布林值
    (選用)

    請求的基本約束 isCA 值。請注意,簽發者可能會選擇忽略請求的 isCA 值,就像任何其他請求的屬性一樣。

    注意:如果 Request 欄位中的 CSR 具有 BasicConstraints 擴展,則它必須具有與此處指定的相同 isCA 值。

    如果為 true,這會自動將 cert sign 用法新增到請求的 usages 清單中。

    usages
    []KeyUsage
    (選用)

    請求的金鑰用法和擴展金鑰用法。

    注意:如果 Request 欄位中的 CSR 使用 KeyUsage 或 ExtKeyUsage 擴展,則這些擴展必須具有與此處指定相同的值,且沒有任何其他值。

    如果未設定,則預設為 digital signaturekey encipherment

    username
    字串
    (選用)

    Username 包含建立 CertificateRequest 的使用者名稱。由 cert-manager webhook 在建立時填充且不可變。

    uid
    字串
    (選用)

    UID 包含建立 CertificateRequest 的使用者的 uid。由 cert-manager webhook 在建立時填充且不可變。

    groups
    []string
    (選用)

    Groups 包含建立 CertificateRequest 的使用者的群組成員資格。由 cert-manager webhook 在建立時填充且不可變。

    extra
    map[string][]string
    (選用)

    Extra 包含建立 CertificateRequest 的使用者的額外屬性。由 cert-manager webhook 在建立時填入,且為不可變的。

    status
    CertificateRequestStatus
    (選用)

    CertificateRequest 的狀態。此為自動設定和管理的。唯讀。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

    ClusterIssuer

    ClusterIssuer 代表一個憑證發行授權單位,可以在 issuerRef 欄位中被引用。它類似於 Issuer,但它是叢集範圍的,因此可以被存在於任何命名空間中的資源引用,而不僅限於與參照者相同的命名空間。

    欄位描述
    apiVersion

    字串

    cert-manager.io/v1
    種類

    字串

    ClusterIssuer
    metadata
    Kubernetes meta/v1.ObjectMeta

    請參閱 Kubernetes API 文件,了解 metadata 欄位的欄位。

    spec
    IssuerSpec

    ClusterIssuer 資源的期望狀態。



    IssuerConfig
    IssuerConfig

    IssuerConfig 的成員嵌入到此類型中。)

    status
    IssuerStatus
    (選用)

    ClusterIssuer 的狀態。此為自動設定和管理的。

    簽發者

    Issuer 代表一個憑證發行授權單位,可以在 issuerRef 欄位中被引用。它的範圍限定於單一命名空間,因此只能被同一命名空間內的資源引用。

    欄位描述
    apiVersion

    字串

    cert-manager.io/v1
    種類

    字串

    簽發者
    metadata
    Kubernetes meta/v1.ObjectMeta

    請參閱 Kubernetes API 文件,了解 metadata 欄位的欄位。

    spec
    IssuerSpec

    Issuer 資源的期望狀態。



    IssuerConfig
    IssuerConfig

    IssuerConfig 的成員嵌入到此類型中。)

    status
    IssuerStatus
    (選用)

    Issuer 的狀態。此為自動設定和管理的。

    CAIssuer

    (出現於: IssuerConfig)

    欄位描述
    secretName
    字串

    SecretName 是用於簽署由此 Issuer 發行的憑證的 secret 名稱。

    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 列表。詳情請參閱 https://www.rfc-editor.org/rfc/rfc5280#section-4.2.2.1。例如,這樣的 URL 可能是 “http://ca.domain.com/ca.crt”。

    CertificateAdditionalOutputFormat

    出現於:CertificateSpec

    CertificateAdditionalOutputFormat 定義了 Certificate 資源的額外輸出格式。這些格式包含簽署的憑證鏈和配對的私鑰的補充資料格式。

    欄位描述
    type
    CertificateOutputFormatType

    Type 是應寫入 Certificate 目標 Secret 的格式類型名稱。

    CertificateCondition

    出現於:CertificateStatus

    CertificateCondition 包含 Certificate 的條件資訊。

    欄位描述
    type
    CertificateConditionType

    條件的類型,已知值為(ReadyIssuing)。

    status
    ConditionStatus

    條件的狀態,為 (True, False, Unknown) 其中之一。

    lastTransitionTime
    Kubernetes meta/v1.Time
    (選用)

    LastTransitionTime 是此條件最後狀態變更的時間戳記。

    reason
    字串
    (選用)

    Reason 是此條件上次轉換的簡短機器可讀說明。

    message
    字串
    (選用)

    Message 是對上次轉換詳細資訊的人類可讀描述,補充 Reason。

    observedGeneration
    int64
    (選用)

    如果設定,這表示設定條件時所依據的 .metadata.generation。例如,如果 .metadata.generation 目前為 12,但 .status.condition[x].observedGeneration 為 9,則該條件與 Certificate 的目前狀態不一致。

    CertificateConditionType (string 別名)

    出現於:CertificateCondition

    CertificateConditionType 代表 Certificate 條件值。

    Value描述

    "Issuing"

    當需要發行憑證時,會將條件新增至 Certificate 資源。如果符合以下條件,此條件將會自動新增並設定為 true:* 目標 Secret 中不存在金鑰對資料 * 無法解碼 Secret 中儲存的資料 * 私鑰和憑證沒有相符的公鑰 * 如果目前修訂版本的 CertificateRequest 存在,且 Secret 中儲存的憑證資料與 CertificateRequest 上的 status.certificate 不符。* 如果目前修訂版本不存在 CertificateRequest 資源,則會將 Certificate 資源上的選項與 Secret 中的 X.509 資料進行比較,這與早期版本中的做法類似。如果存在不符之處,則會觸發發行。外部 API 消費者也可以新增此條件,以便因任何其他原因手動觸發重新發行。

    在完成發行後,「發行中」控制器會移除此條件。

    "Ready"

    CertificateConditionReady 表示憑證已可使用。其定義如下:- 目標 secret 存在 - 目標 secret 包含未過期的憑證 - 目標 secret 包含適用於該憑證的私鑰 - commonName 和 dnsNames 屬性與 Certificate 上指定的屬性相符

    CertificateKeystores

    出現於:CertificateSpec

    CertificateKeystores 設定要在 Certificate 的輸出 Secret 中建立的其他金鑰儲存輸出格式。

    欄位描述
    jks
    JKSKeystore
    (選用)

    JKS 設定在 spec.secretName Secret 資源中儲存 JKS 金鑰儲存的選項。

    pkcs12
    PKCS12Keystore
    (選用)

    PKCS12 設定在 spec.secretName Secret 資源中儲存 PKCS12 金鑰儲存的選項。

    CertificateOutputFormatType (string 別名)

    出現於:CertificateAdditionalOutputFormat

    CertificateOutputFormatType 指定應將哪些額外輸出格式寫入 Certificate 的目標 Secret。允許的值為 DERCombinedPEM。當 Type 設定為 DER 時,將會把包含私鑰二進位格式的額外項目 key.der 寫入 Secret。當 Type 設定為 CombinedPEM 時,將會把包含 PEM 格式的私鑰和已簽署憑證鏈(tls.key + tls.crt 串連)的額外項目 tls-combined.pem 寫入 Secret。

    Value描述

    "CombinedPEM"

    CertificateOutputFormatCombinedPEM 將 Certificate 的已簽署憑證鏈和私鑰以 PEM 格式寫入 tls-combined.pem 目標 Secret Data 金鑰。此金鑰中的值將包含私鑰 PEM 文件,後接至少一個換行字元,然後是已簽署憑證 PEM 文件鏈 (<private key> + \n + <signed certificate chain>)。

    "DER"

    CertificateOutputFormatDER 將 Certificate 的私鑰以 DER 二進位格式寫入 key.der 目標 Secret Data 金鑰。

    CertificatePrivateKey

    出現於:CertificateSpec

    CertificatePrivateKey 包含 Certificate 控制器使用的私鑰設定選項。這些選項包括金鑰演算法和大小、使用的編碼以及輪換策略。

    欄位描述
    rotationPolicy
    PrivateKeyRotationPolicy
    (選用)

    RotationPolicy 控制在處理重新發行時應如何重新產生私鑰。

    如果設定為 Never,則只有在目標 spec.secretName 中尚不存在私鑰時才會產生私鑰。如果確實存在私鑰,但其演算法或大小不正確,則會發出警告,以等待使用者介入。如果設定為 Always,則每當發生重新發行時,都會產生符合指定要求的私鑰。為了向後相容,預設值為 Never

    encoding
    PrivateKeyEncoding
    (選用)

    此憑證私鑰要編碼成的私鑰密碼學標準 (PKCS) 編碼。

    如果提供,允許的值為 PKCS1PKCS8,分別代表 PKCS#1 和 PKCS#8。如果未指定,則預設為 PKCS1

    algorithm
    PrivateKeyAlgorithm
    (選用)

    Algorithm 是此憑證對應私鑰的私鑰演算法。

    如果提供,允許的值為 RSAECDSAEd25519。如果指定 algorithm 但未提供 size,則 RSA 金鑰演算法會使用 2048 的金鑰大小,而 ECDSA 金鑰演算法會使用 256 的金鑰大小。使用 Ed25519 金鑰演算法時會忽略金鑰大小。

    size
    int
    (選用)

    Size 是此憑證對應私鑰的金鑰位元大小。

    如果 algorithm 設定為 RSA,則有效值為 204840968192,如果未指定,則預設為 2048。如果 algorithm 設定為 ECDSA,則有效值為 256384521,如果未指定,則預設為 256。如果 algorithm 設定為 Ed25519,則會忽略 Size。不允許其他值。

    CertificateRequestCondition

    出現於:CertificateRequestStatus

    CertificateRequestCondition 包含 CertificateRequest 的條件資訊。

    欄位描述
    type
    CertificateRequestConditionType

    條件的類型,已知值為(ReadyInvalidRequestApprovedDenied)。

    status
    ConditionStatus

    條件的狀態,為 (True, False, Unknown) 其中之一。

    lastTransitionTime
    Kubernetes meta/v1.Time
    (選用)

    LastTransitionTime 是此條件最後狀態變更的時間戳記。

    reason
    字串
    (選用)

    Reason 是此條件上次轉換的簡短機器可讀說明。

    message
    字串
    (選用)

    Message 是對上次轉換詳細資訊的人類可讀描述,補充 Reason。

    CertificateRequestConditionType (string 別名)

    出現於:CertificateRequestCondition

    CertificateRequestConditionType 代表 Certificate 條件值。

    Value描述

    "Approved"

    CertificateRequestConditionApproved 表示憑證請求已核准並準備好簽署。條件的狀態絕不能為 False,且設定後無法修改。不能與 Denied 一起設定。

    "Denied"

    CertificateRequestConditionDenied 表示憑證請求已遭拒絕,且絕不能簽署。條件的狀態絕不能為 False,且設定後無法修改。不能與 Approved 一起設定。

    "InvalidRequest"

    CertificateRequestConditionInvalidRequest 表示憑證簽署者拒絕簽署請求,原因至少有一個輸入參數無效。有關請求為何遭拒絕的更多資訊,可以在 reasonmessage 欄位中找到。

    "Ready"

    CertificateRequestConditionReady 表示憑證已可使用。其定義如下:- 目標憑證存在於 CertificateRequest.Status 中

    CertificateRequestSpec

    出現於:CertificateRequest

    CertificateRequestSpec 定義了 CertificateRequest 的期望狀態

    注意:務必注意,發行者可以選擇忽略或變更任何要求的屬性。發行者如何將憑證請求對應到已簽署的憑證完全是發行者本身的責任。例如,在邊緣情況下,反轉 isCA 值的發行者可以自由地這麼做。

    欄位描述
    duration
    Kubernetes meta/v1.Duration
    (選用)

    請求的憑證「持續時間」(即生命週期)。請注意,簽發者可能會選擇忽略請求的持續時間,就像任何其他請求的屬性一樣。

    issuerRef
    ObjectReference

    引用負責簽發憑證的簽發者。如果簽發者是命名空間範圍的,則它必須與憑證位於相同的命名空間中。如果簽發者是叢集範圍的,則可以從任何命名空間使用它。

    參考的 name 欄位必須始終指定。

    request
    []byte

    要提交給簽發者簽署的 PEM 編碼 X.509 憑證簽署請求。

    如果 CSR 具有 BasicConstraints 擴展,則其 isCA 屬性必須與此 CertificateRequest 的 isCA 值相符。如果 CSR 具有 KeyUsage 擴展,則其金鑰用法必須與此 CertificateRequest 的 usages 欄位中的金鑰用法相符。如果 CSR 具有 ExtKeyUsage 擴展,則其擴展金鑰用法必須與此 CertificateRequest 的 usages 欄位中的擴展金鑰用法相符。

    isCA
    布林值
    (選用)

    請求的基本約束 isCA 值。請注意,簽發者可能會選擇忽略請求的 isCA 值,就像任何其他請求的屬性一樣。

    注意:如果 Request 欄位中的 CSR 具有 BasicConstraints 擴展,則它必須具有與此處指定的相同 isCA 值。

    如果為 true,這會自動將 cert sign 用法新增到請求的 usages 清單中。

    usages
    []KeyUsage
    (選用)

    請求的金鑰用法和擴展金鑰用法。

    注意:如果 Request 欄位中的 CSR 使用 KeyUsage 或 ExtKeyUsage 擴展,則這些擴展必須具有與此處指定相同的值,且沒有任何其他值。

    如果未設定,則預設為 digital signaturekey encipherment

    username
    字串
    (選用)

    Username 包含建立 CertificateRequest 的使用者名稱。由 cert-manager webhook 在建立時填充且不可變。

    uid
    字串
    (選用)

    UID 包含建立 CertificateRequest 的使用者的 uid。由 cert-manager webhook 在建立時填充且不可變。

    groups
    []string
    (選用)

    Groups 包含建立 CertificateRequest 的使用者的群組成員資格。由 cert-manager webhook 在建立時填充且不可變。

    extra
    map[string][]string
    (選用)

    Extra 包含建立 CertificateRequest 的使用者的額外屬性。由 cert-manager webhook 在建立時填入,且為不可變的。

    CertificateRequestStatus

    出現於:CertificateRequest

    CertificateRequestStatus 定義了 CertificateRequest 的觀察狀態和產生的已簽署憑證。

    欄位描述
    conditions
    []CertificateRequestCondition
    (選用)

    用於指示 CertificateRequest 狀態的狀態條件列表。已知條件類型為 ReadyInvalidRequestApprovedDenied

    certificate
    []byte
    (選用)

    由憑證簽署請求產生的 PEM 編碼 X.509 憑證。如果未設定,則表示 CertificateRequest 要不是尚未完成,就是已失敗。關於失敗的更多資訊,請檢查 conditions 欄位。

    ca
    []byte
    (選用)

    簽署者的 PEM 編碼 X.509 憑證,也稱為 CA(憑證授權單位)。不同的簽發者會盡力設定此值。如果未設定,則假定 CA 為未知或不可用。

    failureTime
    Kubernetes meta/v1.Time
    (選用)

    FailureTime 儲存此 CertificateRequest 失敗的時間。此時間用於影響垃圾收集和退避。

    CertificateSecretTemplate

    出現於:CertificateSpec

    CertificateSecretTemplate 定義要複製到 CertificateSpec.secretName 中指定的 Kubernetes Secret 資源的預設標籤和註釋。

    欄位描述
    annotations
    map[string]string
    (選用)

    Annotations 是一個鍵值對應表,會複製到目標 Kubernetes Secret。

    labels
    map[string]string
    (選用)

    Labels 是一個鍵值對應表,會複製到目標 Kubernetes Secret。

    CertificateSpec

    出現於: Certificate

    CertificateSpec 定義 Certificate 的期望狀態。

    注意:規格包含許多「請求的」憑證屬性,請務必注意簽發者可以選擇忽略或變更任何這些請求的屬性。簽發者如何將憑證請求對應到已簽署的憑證完全由簽發者自行負責。例如,在極端情況下,反轉 isCA 值的簽發者可以自由地這樣做。

    有效的 Certificate 至少需要一個 CommonName、LiteralSubject、DNSName 或 URI 才能有效。

    欄位描述
    subject
    X509Subject
    (選用)

    要求的 X509 憑證主體屬性集合。更多資訊: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
    字串
    (選用)

    請求的 X509 憑證主體屬性通用名稱。更多資訊: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://go.dev.org.tw/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://go.dev.org.tw/pkg/time/#ParseDuration。如果已設定 renewBeforePercentage 欄位,則無法設定此欄位。

    renewBeforePercentage
    int32
    (選用)

    renewBeforePercentage 類似於 renewBefore,但它是一個相對百分比,而不是絕對持續時間。例如,如果憑證的有效時間為 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 的逃生出口,允許任何類型。我們目前將支援限制為類似字串的其他名稱,請參閱 RFC 5280 第 37 頁。任何 UTF8 字串值其他名稱都可以透過設定金鑰 oid: x.x.x.x 和 UTF8Value: somevalue 來傳遞 otherName。最常見的情況是使用 oid: 1.3.6.1.4.1.311.20.2.3 設定的 UPN。您應該確保傳遞的任何 OID 對於 UTF8String 類型都是有效的,因為我們不會明確驗證此類型。

    emailAddresses
    []string
    (選用)

    請求的電子郵件主體別名。

    secretName
    字串

    將由此憑證資源自動建立和管理的 Secret 資源名稱。它將使用私鑰和憑證填充,並由指定的簽發者簽署。Secret 資源與憑證資源位於相同的命名空間中。

    secretTemplate
    CertificateSecretTemplate
    (選用)

    定義要複製到憑證 Secret 的註解和標籤。當新增或移除時,Secret 上的標籤和註解將會隨著它們在 SecretTemplate 上的出現而改變。SecretTemplate 註解會與 cert-manager 在憑證 Secret 上設定的基本註解集一起新增,且無法覆寫該基本註解集。

    keystores
    CertificateKeystores
    (選用)

    要儲存在憑證 Secret 中的其他金鑰儲存輸出格式。

    issuerRef
    ObjectReference

    引用負責簽發憑證的簽發者。如果簽發者是命名空間範圍的,則它必須與憑證位於相同的命名空間中。如果簽發者是叢集範圍的,則可以從任何命名空間使用它。

    參考的 name 欄位必須始終指定。

    isCA
    布林值
    (選用)

    請求的基本約束 isCA 值。isCA 值用於在建立的 CertificateRequest 資源上設定 isCA 欄位。請注意,簽發者可能會選擇忽略請求的 isCA 值,就像任何其他請求的屬性一樣。

    如果為 true,這會自動將 cert sign 用法新增到請求的 usages 清單中。

    usages
    []KeyUsage
    (選用)

    請求的金鑰用法和擴展金鑰用法。這些用法用於在建立的 CertificateRequest 資源上設定 usages 欄位。如果 encodeUsagesInRequest 未設定或設定為 true,則這些用法也會編碼到包含 CSR blob 的 request 欄位中。

    如果未設定,則預設為 digital signaturekey encipherment

    privateKey
    CertificatePrivateKey
    (選用)

    私鑰選項。這些選項包括金鑰演算法和大小、使用的編碼以及輪換策略。

    encodeUsagesInRequest
    布林值
    (選用)

    是否應在編碼的 CSR 中設定 KeyUsage 和 ExtKeyUsage 擴展。

    此選項預設為 true,只有在目標簽發者不支援具有這些 X509 KeyUsage/ExtKeyUsage 擴展的 CSR 時才應停用。

    revisionHistoryLimit
    int32
    (選用)

    憑證歷史中維護的 CertificateRequest 修訂版本最大數量。每個修訂版本都代表此憑證建立的單一 CertificateRequest,無論是建立、更新還是變更規格時。如果修訂版本的數量超過此數量,則會依最舊優先順序移除修訂版本。

    如果設定,revisionHistoryLimit 必須是 1 或更大的值。如果未設定 (nil),則不會進行垃圾收集。預設值為 nil

    additionalOutputFormats
    []CertificateAdditionalOutputFormat
    (選用)

    定義要寫入此憑證目標 Secret 的私鑰和簽署憑證鏈的其他輸出格式。

    這是一個預設啟用的 Beta 功能。可以使用在控制器和 webhook 元件上設定的 --feature-gates=AdditionalCertificateOutputFormats=false 選項來停用。

    nameConstraints
    NameConstraints
    (選用)

    x.509 憑證 NameConstraint 擴展,不得在非 CA 憑證中使用。更多資訊:https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.10

    這是一個 Alpha 功能,僅當在控制器和 webhook 元件上設定 --feature-gates=NameConstraints=true 選項時才會啟用。

    CertificateStatus

    出現於: 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 中指定的 Secret 中儲存的憑證有效的起始時間。

    notAfter
    Kubernetes meta/v1.Time
    (選用)

    此資源在 spec.secretName 中指定的 Secret 中儲存的憑證的到期時間。

    renewalTime
    Kubernetes meta/v1.Time
    (選用)

    RenewalTime 是下次將續訂憑證的時間。如果未設定,則不會排程任何即將進行的續訂。

    revision
    int
    (選用)

    已簽發憑證的目前「修訂版本」。

    當建立 CertificateRequest 資源時,它的 cert-manager.io/certificate-revision 將會設定為大於此欄位目前值的值加一。

    簽發後,此欄位將設定為用於簽發憑證的 CertificateRequest 資源上的註釋值。

    將值保留在 CertificateRequest 資源上,可以讓憑證控制器藉由檢查註釋中的修訂值是否大於此欄位,來知道請求是舊簽發的一部分還是正在進行的修訂簽發的一部分。

    nextPrivateKeySecretName
    字串
    (選用)

    包含將用於下一次憑證迭代的私鑰的 Secret 資源名稱。如果 Issuing 條件設定為 True,金鑰管理器控制器將會自動設定此欄位。當 Issuing 條件未設定或為 False 時,它將自動取消設定此欄位。

    failedIssuanceAttempts
    int
    (選用)

    到目前為止,連續失敗的簽發嘗試次數。此欄位會在簽發成功時移除(如果已設定),並且如果未設定且簽發失敗,則會設定為 1。如果簽發失敗,則到下一次簽發的延遲將使用公式 time.Hour * 2 ^ (failedIssuanceAttempts - 1) 計算。

    GenericIssuer

    IssuerCondition

    顯示於: IssuerStatus

    IssuerCondition 包含 Issuer 的條件資訊。

    欄位描述
    type
    IssuerConditionType

    條件類型,已知的值為 (Ready)。

    status
    ConditionStatus

    條件的狀態,為 (True, False, Unknown) 其中之一。

    lastTransitionTime
    Kubernetes meta/v1.Time
    (選用)

    LastTransitionTime 是此條件最後狀態變更的時間戳記。

    reason
    字串
    (選用)

    Reason 是此條件上次轉換的簡短機器可讀說明。

    message
    字串
    (選用)

    Message 是對上次轉換詳細資訊的人類可讀描述,補充 Reason。

    observedGeneration
    int64
    (選用)

    如果已設定,則表示設定條件所依據的 .metadata.generation。例如,如果 .metadata.generation 目前為 12,但 .status.condition[x].observedGeneration 為 9,則條件與 Issuer 的目前狀態不符。

    IssuerConditionType (string 別名)

    出現於: IssuerCondition

    IssuerConditionType 代表 Issuer 條件值。

    Value描述

    "Ready"

    IssuerConditionReady 代表給定的 Issuer 條件處於就緒狀態並且能夠簽發憑證的事實。如果此條件的 statusFalse,則 CertificateRequest 控制器應防止嘗試簽署憑證。

    IssuerConfig

    出現於: 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 原則區域來簽署憑證。

    IssuerSpec

    出現於: ClusterIssuer, Issuer

    IssuerSpec 是 Issuer 的規格。這包含簽發者所需的任何組態。

    欄位描述
    IssuerConfig
    IssuerConfig

    IssuerConfig 的成員嵌入到此類型中。)

    IssuerStatus

    出現於: ClusterIssuer, Issuer

    IssuerStatus 包含關於 Issuer 的狀態資訊

    欄位描述
    conditions
    []IssuerCondition
    (選用)

    狀態條件列表,用於指示 CertificateRequest 的狀態。已知的條件類型為 Ready

    acme
    ACMEIssuerStatus
    (選用)

    ACME 特定狀態選項。僅當 Issuer 組態為使用 ACME 伺服器簽發憑證時,才應設定此欄位。

    JKSKeystore

    出現於: CertificateKeystores

    JKS 設定在 spec.secretName Secret 資源中儲存 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」

    Value描述

    "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

    出現於:CertificateSpec

    NameConstraints 是一種表示 x509 NameConstraints 的類型

    欄位描述
    critical
    布林值
    (選用)

    如果為 true,則名稱限制會標記為關鍵。

    permitted
    NameConstraintItem
    (選用)

    Permitted 包含名稱必須所在的限制。

    excluded
    NameConstraintItem
    (選用)

    Excluded 包含必須不允許的限制。無論允許的欄位中出現什麼資訊,任何符合排除欄位中限制的名稱均為無效

    OtherName

    出現於:CertificateSpec

    欄位描述
    oid
    字串

    OID 是 otherName SAN 的物件識別碼。物件識別碼必須表示為點狀字串,例如「1.2.840.113556.1.4.221」。

    utf8Value
    字串

    utf8Value 是 otherName SAN 的字串值。utf8Value 接受任何有效的 UTF8 字串設定為 otherName SAN 的值。

    PKCS12Keystore

    出現於: CertificateKeystores

    PKCS12 設定在 spec.secretName Secret 資源中儲存 PKCS12 金鑰儲存的選項。

    欄位描述
    create
    布林值

    Create 啟用 Certificate 的 PKCS12 金鑰儲存區建立。如果為 true,則會在目標 Secret 資源中建立名為 keystore.p12 的檔案,並使用儲存在 passwordSecretRef 中的密碼進行加密。金鑰儲存區檔案將會立即更新。如果簽發者提供了 CA 憑證,則也會在目標 Secret 資源中建立名為 truststore.p12 的檔案,並使用儲存在 passwordSecretRef 中的密碼進行加密,其中包含簽發憑證授權單位

    passwordSecretRef
    SecretKeySelector

    PasswordSecretRef 是對 Secret 資源中包含用於加密 PKCS12 金鑰儲存區之密碼的金鑰的參考。

    profile
    PKCS12Profile
    (選用)

    Profile 指定金鑰和憑證加密演算法以及用於建立 PKCS12 金鑰儲存區的 HMAC 演算法。預設值為 LegacyRC2 以實現向後相容性。

    如果提供,則允許的值為:LegacyRC2:已淘汰。預設情況下,OpenSSL 3 或 Java 20 不支援。LegacyDES:安全性較低的演算法。使用此選項可獲得最大相容性。Modern2023:安全演算法。如果您必須始終使用安全演算法(例如,因為公司政策),請使用此選項。請注意,演算法的安全性在現實中並不是很重要,因為未加密的憑證和私鑰也儲存在 Secret 中。

    PKCS12Profile (string 別名)

    出現於: PKCS12Keystore

    Value描述

    "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

    Value描述

    "ECDSA"

    ECDSA 私鑰演算法。

    "Ed25519"

    Ed25519 私鑰演算法。

    "RSA"

    RSA 私鑰演算法。

    PrivateKeyEncoding (string 別名)

    出現於: CertificatePrivateKey

    Value描述

    "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 產生,對於簽發者會採用 vault://namespace-name/issuer-name 格式,對於 ClusterIssuer 會採用 vault://issuer-name 格式。權杖的到期時間也由 cert-manager 設定為 10 分鐘。

    欄位描述
    name
    字串

    用於請求權杖的 ServiceAccount 名稱。

    audiences
    []string
    (選用)

    TokenAudiences 是要包含在傳遞給 Vault 的權杖中的額外對象的可選清單。一律會包含由簽發者的命名空間和名稱組成的預設權杖。

    VaultAppRole

    (出現於: VaultAuth)

    VaultAppRole 使用 App Role 驗證機制,透過儲存在 Kubernetes Secret 資源中的角色和密碼向 Vault 進行驗證。

    欄位描述
    path
    字串

    App Role 驗證後端在 Vault 中掛載的路徑,例如:「approle」

    roleId
    字串

    在 Vault 中設定驗證後端時,於 App Role 驗證後端中設定的 RoleID。

    secretRef
    SecretKeySelector

    對 Secret 中一個金鑰的參考,其中包含用於向 Vault 進行驗證的 App Role 密碼。必須指定 key 欄位,並表示要將 Secret 資源中的哪個項目作為應用程式角色密碼。

    VaultAuth

    (出現於: VaultIssuer)

    VaultAuth 是用於向 Vault 伺服器進行驗證的組態。優先順序順序為 [tokenSecretRefappRoleclientCertificatekubernetes]。

    欄位描述
    tokenSecretRef
    SecretKeySelector
    (選用)

    TokenSecretRef 會透過呈現權杖向 Vault 進行驗證。

    appRole
    VaultAppRole
    (選用)

    AppRole 使用 App Role 驗證機制,透過儲存在 Kubernetes Secret 資源中的角色和密碼向 Vault 進行驗證。

    clientCertificate
    VaultClientCertificateAuth
    (選用)

    ClientCertificate 會在請求的 TLS 交握期間呈現用戶端憑證來向 Vault 進行驗證。僅在使用 HTTPS 通訊協定時有效。

    kubernetes
    VaultKubernetesAuth
    (選用)

    Kubernetes 會透過將儲存在具名 Secret 資源中的 ServiceAccount 權杖傳遞至 Vault 伺服器來向 Vault 進行驗證。

    VaultClientCertificateAuth

    (出現於: VaultAuth)

    VaultKubernetesAuth 用於使用儲存在 Secret 中的用戶端憑證向 Vault 進行驗證。

    欄位描述
    mountPath
    字串
    (選用)

    此處的 Vault 掛載路徑是在向 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 後端來簽署憑證。

    欄位描述
    auth
    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」。

    namespace
    字串
    (選用)

    Vault 命名空間的名稱。命名空間是 Vault Enterprise 中的一組功能,可讓 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
    (選用)

    參考一個 Secret,其中包含在透過 HTTPS 時驗證 Vault 呈現的憑證鏈時要使用的 PEM 編碼 CA 套件。與 CABundle 互斥。如果未定義 CABundle 和 CABundleSecretRef,則會使用 cert-manager 控制器容器中的憑證套件來驗證 TLS 連線。如果未指定 Secret 的金鑰,cert-manager 將預設為「ca.crt」。

    clientCertSecretRef
    SecretKeySelector
    (選用)

    參考一個 Secret,其中包含當 Vault 伺服器需要 mTLS 時要使用的 PEM 編碼用戶端憑證。

    clientKeySecretRef
    SecretKeySelector
    (選用)

    參考一個 Secret,其中包含當 Vault 伺服器需要 mTLS 時要使用的 PEM 編碼用戶端私鑰。

    VaultKubernetesAuth

    (出現於: VaultAuth)

    使用儲存在 Secret 中的 Kubernetes ServiceAccount 權杖向 Vault 進行驗證。

    欄位描述
    mountPath
    字串
    (選用)

    此處的 Vault 掛載路徑是在向 Vault 進行驗證時要使用的掛載路徑。例如,將值設定為 /v1/auth/foo,將會使用 /v1/auth/foo/login 路徑向 Vault 進行驗證。如果未指定,則會使用預設值「/v1/auth/kubernetes」。

    secretRef
    SecretKeySelector
    (選用)

    必要 Secret 欄位,其中包含用於向 Vault 進行驗證的 Kubernetes ServiceAccount JWT。不支援使用「環境認證」。

    serviceAccountRef
    ServiceAccountRef
    (選用)

    參考將用於請求繫結權杖(也稱為「投射權杖」)的服務帳戶。與使用「secretRef」相比,使用此欄位表示您不依賴靜態繫結的權杖。若要使用此欄位,您必須設定 RBAC 規則,以允許 cert-manager 請求權杖。

    role
    字串

    一個必要欄位,其中包含要假設的 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 Cloud 組態設定。只能指定 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」金鑰以進行存取權杖驗證,或包含兩個金鑰「username」和「password」以進行 API 金鑰驗證。

    caBundle
    []byte
    (選用)

    PEM CA 的 Base64 編碼套件,用於驗證 TPP 伺服器呈現的憑證鏈。僅在使用 HTTPS 時使用;在 HTTP 時忽略。如果未定義,則會使用 cert-manager 控制器容器中的憑證套件來驗證鏈。

    caBundleSecretRef
    SecretKeySelector
    (選用)

    參考包含 PEM CA 的 Base64 編碼套件的 Secret,該套件將用於驗證 TPP 伺服器在使用 HTTPS 時呈現的憑證鏈。僅在使用 HTTPS 時使用;在 HTTP 時忽略。與 CABundle 互斥。如果未定義 CABundle 和 CABundleSecretRef,則會使用 cert-manager 控制器容器中的憑證套件來驗證 TLS 連線。

    X509Subject

    出現於:CertificateSpec

    X509Subject 完整的 X509 名稱規格

    欄位描述
    organizations
    []string
    (選用)

    要在憑證上使用的組織。

    countries
    []string
    (選用)

    要在憑證上使用的國家/地區。

    organizationalUnits
    []string
    (選用)

    要在憑證上使用的組織單位。

    localities
    []string
    (選用)

    要在憑證上使用的城市。

    provinces
    []string
    (選用)

    要在憑證上使用的州/省。

    streetAddresses
    []string
    (選用)

    要在憑證上使用的街道地址。

    postalCodes
    []string
    (選用)

    要在憑證上使用的郵遞區號。

    serialNumber
    字串
    (選用)

    要在憑證上使用的序號。


    controller.config.cert-manager.io/v1alpha1

    套件 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 中提供。這應該是有效的持續時間字串,例如 180 秒或 1 小時

      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 API 伺服器的 kubeconfig 檔案。如果未指定,控制器將會嘗試載入叢集內組態。

      apiServerHost
      字串

      apiServerHost 用於覆寫 API 伺服器連線位址。已棄用:請改用 kubeConfig

      kubernetesAPIQPS
      float32

      指示 Kubernetes apiserver 的最大每秒查詢請求數。TODO:不建議使用浮點數。或許我們應該使用 resource.Quantity? https://kubernetes.dev.org.tw/docs/reference/kubernetes-api/common-definitions/quantity/

      kubernetesAPIBurst
      int32

      傳送至 Kubernetes apiserver 的最大每秒突發查詢請求數

      namespace
      字串

      如果設定此項,則 cert-manager 的作用範圍將限制在單一命名空間,且 ClusterIssuer 將被停用。如果未指定,將會監看所有命名空間

      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 中啟用 Gateway API 整合。還必須啟用 ExperimentalGatewayAPISupport 功能閘道(自 1.15 起為預設)。

      copiedAnnotationPrefixes
      []string

      透過傳遞註解鍵前綴的清單,指定應/不應從 Certificate 複製到 CertificateRequest 和 Order 的註解,以及從 CertificateSigningRequest 複製到 Order 的註解。以破折號 (-) 開頭的前綴指定不應複製的註解。範例:'*-kubectl.kubernetes.io/' - 除了鍵以 'kubectl.kubernetes.io/' 為前綴的註解之外,將會複製所有註解。

      numberOfConcurrentWorkers
      int32

      每個控制器的並行工作者數量。

      maxConcurrentChallenges
      int32

      可以同時排程為「處理中」的最大挑戰數量。

      metricsListenAddress
      字串

      度量端點應監聽的主機和連接埠。

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

      度量端點的 TLS 設定

      healthzListenAddress
      字串

      healthz 伺服器應監聽的主機和連接埠位址,以「:」分隔。

      enablePprof
      布林值

      啟用控制器的分析功能。

      pprofAddress
      字串

      Go 效能分析器應接聽的主機和連接埠,例如 localhost:6060。確保效能分析器未暴露在公用位址上。效能分析器將在 /debug/pprof 上提供服務。

      logging
      k8s.io/component-base/logs/api/v1.LoggingConfiguration

      logging 設定控制器的記錄行為。https://pkg.go.dev/k8s.io/component-base@v0.27.3/logs/api/v1#LoggingConfiguration

      featureGates
      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

      租用過期後,在此逾時期間內的 Leader 選舉 healthz 檢查仍會回傳正常。


      meta.cert-manager.io/v1

      套件 v1 包含 cert-manager API 的中繼類型

      資源類型

        ConditionStatus (string 別名)

        出現在: CertificateConditionCertificateRequestConditionIssuerCondition

        ConditionStatus 代表條件的狀態。

        Value描述

        "False"

        ConditionFalse 代表給定條件為 false 的事實

        "True"

        ConditionTrue 代表給定條件為 true 的事實

        "Unknown"

        ConditionUnknown 代表給定條件為 unknown 的事實

        LocalObjectReference

        出現在: VenafiTPPSecretKeySelector

        參照與被參照者位於相同命名空間中的物件。如果被參照者是叢集範圍的資源(例如 ClusterIssuer),則參照會改為參照已設定的「叢集資源命名空間」中具有給定名稱的資源,該資源設定為控制器元件上的旗標(預設為 cert-manager 執行所在的命名空間)。

        欄位描述
        name
        字串

        被參照資源的名稱。更多資訊:https://kubernetes.dev.org.tw/docs/concepts/overview/working-with-objects/names/#names

        ObjectReference

        出現在: ChallengeSpecOrderSpecCertificateRequestSpecCertificateSpec

        ObjectReference 參照具有給定名稱、種類和群組的物件。

        欄位描述
        name
        字串

        被參照資源的名稱。

        種類
        字串
        (選用)

        被參照資源的種類。

        group
        字串
        (選用)

        被參照資源的群組。

        SecretKeySelector

        出現在: ACMEExternalAccountBindingACMEIssuerACMEIssuerDNS01ProviderAcmeDNSACMEIssuerDNS01ProviderAkamaiACMEIssuerDNS01ProviderAzureDNSACMEIssuerDNS01ProviderCloudDNSACMEIssuerDNS01ProviderCloudflareACMEIssuerDNS01ProviderDigitalOceanACMEIssuerDNS01ProviderRFC2136ACMEIssuerDNS01ProviderRoute53JKSKeystorePKCS12KeystoreVaultAppRoleVaultAuthVaultIssuerVaultKubernetesAuthVenafiCloudVenafiTPP

        參照 Secret 資源中特定「金鑰」。在某些情況下,key 是必填欄位。

        欄位描述
        LocalObjectReference
        LocalObjectReference

        LocalObjectReference 的成員會內嵌到此類型中。)

        被參照的 Secret 資源名稱。

        key
        字串
        (選用)

        要使用的 Secret 資源 data 欄位中項目的金鑰。此欄位的某些實例可能會預設,在其他實例中可能需要。


        webhook.config.cert-manager.io/v1alpha1

        套件 v1alpha1 是 webhook config 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'。

          logging
          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

          featureGates
          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 設定。


          使用 git commit 67c897d 上的 gen-crd-api-reference-docs 產生。