こんにちは
早いもので、今年も残りわずかとなりました。
当方が参画するプロジェクトで、Kubernetes を運用しておりまして、YAML マニフェストのミスに悩まされることは少なくありません。
kubectl apply してからエラーに気づく、あるいは CI/CD で初めて失敗する、といった経験、Kubernetesを利用する方にも多いはずです。
そんなときに役立つのが kubeconform です。
kubeconform とは
kubeconform は、Kubernetes マニフェストが Kubernetes API のスキーマに準拠しているか を検証するための CLI ツールです。
・JSON Schema ベースで高速に検証
・Kubernetes のバージョンを指定可能
・CRD(CustomResourceDefinition)にも対応
・CI/CD に組み込みやすい
といった特徴があります。
kubeconform の利点
・kubeconform を使うことで、次のような問題を 事前に検知 できます。
・フィールド名のタイポ(例:replica → replicas)
・廃止・非推奨フィールドの使用
・Kubernetes バージョン差異による非互換
・CRD のスキーマ違反
つまり、「デプロイ前に壊れている YAML を落とせる」のが最大のメリットです。
簡単な使い方
インストール後、次のように使えます。
kubeconform deployment.yaml
ディレクトリ配下をまとめてチェックすることも可能です。
kubeconform -recursive manifests/
Kubernetes バージョンを指定したい場合:
kubeconform -kubernetes-version 1.29 deployment.yaml
CRD を使っている場合
Argo CD や Prometheus Operator など、CRD を多用する環境では次のように使うのが一般的です。
kubeconform \
-strict \
-summary \
-schema-location default \
-schema-location 'https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/{{.NormalizedKubernetesVersion}}-standalone-strict/{{.ResourceKind}}.json'
CRD 用のスキーマを追加すれば、独自リソースも検証できます。
CI/CD との相性が良い
kubeconform は exit code を返す ため、CI/CD に非常に組み込みやすいです。
・GitHub Actions
・GitLab CI
・Argo CD の pre-sync チェック
・Helm テンプレート出力後の検証
「kubectl apply 前の最終関門」として使われることが多いツールです。
kubeconform と似たツールとの違い
kubectl apply --dry-run
→ 実際の API サーバーが必要
kubeval(旧ツール)
→ 開発がほぼ停止
kubeconform
→ 高速・メンテ継続中・CRD対応が強い
現在は kubeval の後継として kubeconform が事実上の標準になっています。
まとめ
kubeconform は、
・シンプル
・高速
・CI/CD 向け
・Kubernetes 運用と相性が良い
という理由から、Kubernetes マニフェスト管理の第一歩として導入しやすいツールです。
Ingress や CRD、GitOps(Argo CD)を使っている環境ほど効果を発揮するため、
「YAML の安全性をもう一段引き上げたい」と感じている方には特におすすめです。
それでは、また