Member-only story
ベストプラクティスとポリシーのためのKubernetes YAMLのバリデーション(第四章)
この記事では、KubernetesのYAMLファイルを検証し、ベストプラクティスとコンプライアンスをスコア化するための6つの静的ツールを比較しています。
長い記事なので4回に分けてお送りします。今回は第4回目の最終章です。
今回はPolarisについてです。また簡単に今までのツールの特徴を表にまとめています。
Polaris
この記事で最後に紹介するツールは、polaris (https://github.com/FairwindsOps/polaris)です。
Polarisはクラスタ内にインストールするか、Kubernetesのマニフェストを静的に分析するためのコマンドラインツールとして使用することができます。
コマンドラインツールとして実行する場合、セキュリティやベストプラクティスなどの領域をカバーするいくつかのビルドインチェックが含まれています 。その点はkube-scoreと同様です。
また、config-lint、copper、conftestのようなカスタムチェックを記述することもできます。
言い換えれば、polarisは、ビルトインチェックとカスタムチェックの2つのカテゴリのいいところを組み合わせたものです。
polarisのコマンドラインツールは、プロジェクトサイトの説明書通りにインストールすることができます。
本稿執筆時点での最新リリースは1.0.3です。
インストール後、polarisをbase-valid.yamlマニフェストに対して、次のように行います。
$polaris audit --audit-path base-valid.yaml
上記のコマンドは、実行されたチェックと各テストの結果の詳細を示すJSON形式の文字列を出力します。
出力は以下のような構造になります。
output.json
{"PolarisOutputVersion": "1.0","AuditTime": "0001-01-01T00:00:00Z","SourceType": "Path","SourceName": "test-data/base-valid.yaml","DisplayName": "test-data/base-valid.yaml","ClusterInfo": {"Version": "unknown","Nodes": 0,"Pods": 2,"Namespaces": 0,"Controllers": 2},"Results": [/* long list */]}
kube-scoreと同様に、Polarisは、マニフェストが推奨されているベストプラクティスを満たしていないケースをいくつか特定します。
・ポッドのヘルスチェックがなされていない
・コンテナイメージにタグが指定されていない。
・コンテナが root で実行されている。
・CPU とメモリの要求と制限が設定されていない。
各チェックは、警告または危険の深刻度レベルで分類されています。
現在のビルドインチェックの詳細については、こちらのドキュメントを参照してください。
詳細な結果に興味がない場合は、 — format score フラグを指定すると、1~100の範囲の数字を表示します。
$polaris audit --audit-path test-data/base-valid.yaml --format score