一般社団法人 全国個人事業主支援協会

COLUMN コラム

こんにちは

早いもので、今年も残りわずかとなりました。

当方が参画するプロジェクトで、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 の安全性をもう一段引き上げたい」と感じている方には特におすすめです。

それでは、また

The following two tabs change content below.

Kenneth Ozeki

インフラ周りを担当するITエンジニアです。 経験はオンプレ5年、クラウド7年ほど python, go などで簡単な運用ツールも作成してます

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア