ConfigMapとSecretマニフェストの検証
Kubernetes ConfigMapとSecretマニフェストの必須フィールドを検証します。データエンコーディング、命名規則、一般的なミスについて学びます。
Configuration
詳細な説明
ConfigMapとSecretの検証
ConfigMapとSecretはそれぞれ設定データと機密値を格納します。ワークロードリソースよりも構造的にシンプルですが、独自の検証上の懸念事項があります。
ConfigMapの例
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
labels:
app: myapp
data:
DATABASE_HOST: postgres-primary
DATABASE_PORT: "5432"
LOG_LEVEL: info
Secretの例
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
labels:
app: myapp
type: Opaque
data:
DATABASE_PASSWORD: cGFzc3dvcmQxMjM=
API_KEY: c2VjcmV0LWtleS12YWx1ZQ==
一般的な問題
- metadata.nameの欠落: すべてのリソースに必須
- ラベルの欠落: どのアプリがConfigMapを所有するか識別が困難
- Secretデータがbase64エンコードされていない: Secretの
dataフィールドはbase64エンコードが必要 datavsstringDataの使用: Secretはプレーンテキスト用のstringDataをサポート
ConfigMap vs Secret
| 機能 | ConfigMap | Secret |
|---|---|---|
| データエンコーディング | プレーンテキスト | dataはBase64、stringDataはプレーン |
| サイズ制限 | 1 MiB | 1 MiB |
| RBAC | 標準 | 個別に制限可能 |
| 保存時暗号化 | なし | オプション |
| 用途 | 設定ファイル、環境変数 | パスワード、トークン、キー |
ベストプラクティス
- 所有権を識別するために常にラベルを追加
- 可読性のためにSecretでは
stringDataを使用 - 本番では外部シークレットマネージャーの使用を検討
- 実際の値を含むSecretマニフェストをバージョン管理にコミットしない
ユースケース
適切な構造、エンコーディング、ラベル付けを確認するためにデプロイ前に設定リソースをレビューする。異なる設定を持つ複数の環境を管理するチームに重要。