Member-only story

ベストプラクティスとポリシーのためのKubernetes YAMLのバリデーション(第三章)

gavin.zhou
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)}});}});

--

--

No responses yet