基本構造の実装
-
type
フィールドが実装されており、先頭大文字のCamelCaseで記述されている -
status
フィールドが実装されており、"True"/"False"/"Unknown"のいずれかの値のみを使用している -
lastTransitionTime
フィールドが実装されており、ISO8601タイムスタンプを使用している -
reason
フィールドが実装されており、UpperCamelCaseで簡潔に記述されている -
message
フィールドが実装されており、人間が理解できる詳細な説明が含まれている
Conditionタイプの設計
- 複数の独立したConditionで状態を表現している
- 各Conditionが異なる側面(準備完了、処理中、エラーなど)を表現している
- 並行する状態を矛盾なく表現できる設計になっている
-
リソースの全体的な可用性を示す
Ready
(または類似の)Conditionが実装されている - 既存ツールとの互換性のため、標準的な命名規則に従っている
状態定義
- True: 条件が現在成立している状態が明確に定義されている
- False: 明確に「成立していない」と判断できる状態が定義されている
- Unknown: コントローラーが判断不能または未評価の状態が定義されている
-
状態が
False
の場合、reason
とmessage
で詳細情報を提供している
ドキュメンテーション
- Conditionタイプと説明の一覧表が作成されている
- 各Conditionの取りうる状態とその説明が文書化されている
- 状態遷移図が提供されている
ドキュメンテーションの例:
Conditionタイプと説明の一覧表の例
Conditionタイプ | 説明 |
---|---|
Ready | アプリケーション全体の準備状態 |
DatabaseReady | データベース接続とマイグレーションの状態 |
ApplicationReady | アプリケーションコンテナとサービスの状態 |
各Conditionの取りうる状態とその説明の例
Status | Reason | 説明 | 運用者のアクション |
---|---|---|---|
True | DatabaseConnected | データベースに接続され、マイグレーションが完了している | 対応不要 |
False | ConnectionFailed | データベースへの接続が確立できない | データベースの認証情報とネットワーク接続を確認 |
False | MigrationFailed | データベースマイグレーションが失敗した | マイグレーションログとデータベースの状態を確認 |
False | CredentialsMissing | データベースの認証情報が正しく設定されていない | Secretの設定を確認 |
Unknown | ConnectionTimeout | データベース接続確認がタイムアウトした | データベースの可用性とネットワーク状態を確認 |
状態遷移図の例
世代管理
-
.status.observedGeneration
を実装している -
リコンシリエーション時に
metadata.generation
の値で更新している
監視対応
- kube-state-metricsで扱える形式でConditionを実装している
- Prometheusメトリクスとして収集可能な形式になっている
- イベント(Events)と組み合わせた監視が可能な設計になっている