Kubernetes マニフェスト リンター
Lint Kubernetes YAML マニフェストは、クラスター強化のベスト プラクティスに反して、ブラウザー上で完全にオフラインで実行されます。
結果
Kubernetes マニフェストは通常、プル リクエストで目視でレビューされます。これは、同じ少数の強化ミスが運用環境に反映され続けることを意味します。メモリ制限のないデプロイメントは、最終的に OOM が強制終了され、ノードが持ち込まれます。誰も runAsNonRoot を設定していないため、喜んで root として実行されるコンテナー。または、ロールアウトの下でサイレントに変更される `:latest` のようなイメージ タグに固定されたポッドです。このリンターは、実行中のクラスター、kubectl コンテキスト、または資格情報をまったく必要とせずに、マニフェストを貼り付けた瞬間にそのクラスの問題を捕捉します。
内部には、Kubernetes マニフェストが実際に使用する YAML の現実的なサブセット用に特別に書かれた小さな手動の YAML パーサーが含まれています: 「---」で区切られたドキュメント、インデントベースのネスト、「key:value」とネストされたブロックマッピング、マップのリストを含む「-」シーケンス項目、引用符付きおよび引用符なしのスカラー、コメント、および複数行のConfigMapなどの「|`/`>`ブロックスカラー」値または注釈。外部の YAML ライブラリは関係しません。パーサーとルール エンジンは両方ともツールにバンドルされており、完全にブラウザーで実行されます。
ルール テーブルは、よく知られているクラスター強化ガイダンス (CIS Kubernetes ベンチマーク、kube スコア、およびポッド セキュリティ標準の「制限付き」プロファイル) に基づいてモデル化されており、各コンテナーのリソース要求/制限の欠落、ルートまたは特権モードで実行できるコンテナー、長時間実行ワークロード (Deployments、StatefulSet、DaemonSets) での liveness および readiness プローブの欠落、ホストを公開する hostPath ボリューム マウントをチェックします。ファイルシステム、ホストネットワークの使用状況、および再現不可能な `:latest` またはタグなしのコンテナー イメージ。検出結果はドキュメントおよびコンテナごとにグループ化され、それぞれに明確なエラー/警告の重大度が示されているため、実際に何が危険であり、単なるベストプラクティスのナッジであるかを区別できます。
これは、Helm テンプレートのレンダリングまたは「kusTOMize build」出力から直接貼り付けられた単一のマニフェストまたはマルチドキュメント ファイル全体で動作し、Pod、Deployment、StatefulSet、DaemonSet、Job、ReplicaSet、および CronJob リソースを理解します。すべてがローカルで実行されるため、内部サービス名、実際のリソースのサイジング、またはサードパーティ API に送信したくないその他の情報を含むマニフェストを安全に貼り付けることができます。これは、コミット前の簡単な健全性チェック、コード レビューの支援、または実際に「強化された」とはどのようなものかを単に学ぶのに役立ちます。