Member-only story
ベストプラクティスとポリシーのためのKubernetes YAMLのバリデーション(第三章)
9 min readDec 28, 2020
この記事では、KubernetesのYAMLファイルを検証し、ベストプラクティスとコンプライアンスをスコア化するための6つの静的ツールを比較しています。
長い記事なので4回に分けてお送りします。今回は第3回目です。
今回はCopperとConftestについてです。
Copper
Copper V2 はカスタムチェックを使ってマニフェストをバリデーションするフレームワークです。config-lint のような感じです。
しかし、Copper はチェックを設定するために YAML を使用しません。
その代わりに、テストは JavaScript で書かれており、Copper は Kubernetes オブジェクトの読み込みやエラーの報告をアシストするいくつかの基本的なヘルパーを持つライブラリを提供しています。
Copperをインストールするには公式ドキュメントに従ってください。
この記事を書いている時点での最新リリースは2.0.1です。
config-lintと同様に、Copperにはビルドインのチェック機能はありません。
デプロイメントがmy-company.comのような信頼できるリポジトリからのみコンテナイメージをプルできるようにチェックを書いてみましょう。
check_image_repo.jsというファイルを新規に作成し、以下の内容を記述します。
check_image_repo.js
$$.forEach(function($){if ($.kind === 'Deployment') {$.spec.template.spec.containers.forEach(function(container) {var image = new DockerImage(container.image);if (image.registry.lastIndexOf('my-company.com/') != 0) {errors.add_error('no_company_repo',"Image " + $.metadata.name + " is not from my-company.com repo", 1)}});}});