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==

一般的な問題

  1. metadata.nameの欠落: すべてのリソースに必須
  2. ラベルの欠落: どのアプリがConfigMapを所有するか識別が困難
  3. Secretデータがbase64エンコードされていない: Secretのdataフィールドはbase64エンコードが必要
  4. data vs stringDataの使用: Secretはプレーンテキスト用のstringDataをサポート

ConfigMap vs Secret

機能 ConfigMap Secret
データエンコーディング プレーンテキスト dataはBase64、stringDataはプレーン
サイズ制限 1 MiB 1 MiB
RBAC 標準 個別に制限可能
保存時暗号化 なし オプション
用途 設定ファイル、環境変数 パスワード、トークン、キー

ベストプラクティス

  • 所有権を識別するために常にラベルを追加
  • 可読性のためにSecretではstringDataを使用
  • 本番では外部シークレットマネージャーの使用を検討
  • 実際の値を含むSecretマニフェストをバージョン管理にコミットしない

ユースケース

適切な構造、エンコーディング、ラベル付けを確認するためにデプロイ前に設定リソースをレビューする。異なる設定を持つ複数の環境を管理するチームに重要。

試してみる — K8s Manifest Validator

フルツールを開く