by shigemk2

当面は技術的なことしか書かない

CertificateStatus フィールド一覧

フィールド Optional 説明
conditions []CertificateCondition Yes 証明書の状態を示す condition のリスト。既知の type は ReadyIssuing
lastFailureTime meta/v1.Time Yes 直近の発行が失敗した場合にのみセットされ、失敗時刻を保持する。次回発行までの遅延は time.Hour * 2 ^ (failedIssuanceAttempts - 1) で計算される。発行が成功するとこのフィールドはクリアされる
notBefore meta/v1.Time Yes spec.secretName で指定された Secret に格納されている証明書の有効開始日時
notAfter meta/v1.Time Yes spec.secretName で指定された Secret に格納されている証明書の有効期限
renewalTime meta/v1.Time Yes 次回の証明書更新予定時刻。未設定の場合は更新がスケジュールされていない
revision int Yes 現在発行されている証明書のリビジョン番号。CertificateRequest 作成時にはこの値 +1 が cert-manager.io/certificate-revision アノテーションとしてセットされる。発行完了時に CertificateRequest のアノテーション値がこのフィールドに反映される。これにより、リクエストが現在の発行サイクルのものか過去のものかを判別できる
nextPrivateKeySecretName string Yes 次回の証明書発行に使用される秘密鍵を格納する Secret 名。keymanager コントローラーが Issuing condition を True にセットした際に自動設定され、Issuing が未設定または False になると自動クリアされる
failedIssuanceAttempts int Yes 連続して失敗した発行試行の回数。発行成功時にクリアされ、未設定の状態で発行が失敗すると 1 にセットされる。次回発行までの遅延は time.Hour * 2 ^ (failedIssuanceAttempts - 1) で計算される(指数バックオフ)

発行失敗時のバックオフ計算例

failedIssuanceAttempts 次回リトライまでの待ち時間
1 1 時間
2 2 時間
3 4 時間
4 8 時間
5 16 時間

JSONPath での参照例

.status.conditions[?(@.type=="Ready")].status   → Ready の True/False
.status.notAfter                                 → 有効期限
.status.notBefore                                → 有効開始日時
.status.renewalTime                              → 次回更新予定時刻
.status.lastFailureTime                          → 直近の失敗時刻
.status.revision                                 → リビジョン番号
.status.failedIssuanceAttempts                   → 連続失敗回数
.status.nextPrivateKeySecretName                 → 次回用秘密鍵 Secret 名

cert-manager.io