Kubernetesのマニフェストのテストツールを調べてみた - Qiitaで紹介されているCopperを利用してみた。
コメントラインをドキュメント通りやってもシンタックスエラーがでたり、上記ページでも書かれているがすこし実装が怪しい。簡単なvalidationに用いるくらいならとりあえず便利かも。以下のユースケースでのexampleを考えてみた。
- リソース管理のために、ラベルづけを強制したい
- ただし以下の例ではyamlのトップレベルのlabel確認しかできていないためDeploymentのpodのlabelが確認できていない、、、。良い方法ないものか。
- 一旦、ないよりかはましという感じで使ってみるかなあ
- namespace指定を強制したい
- 全種類のリソースを確認するので、ネームスペースで分離されないリソースは例外として外す必要がある
- とりあえず以下の例ではClusterRoleBindingだけ外しておいた
rule.cop
rule existLabel ensure {
fetch("$.metadata.labels['app']").count == 1
}
rule existNamespace ensure {
fetch("$.metadata['namespace']").count == 1
or
fetch("$[?(@['kind'] == 'ClusterRoleBinding')]").count == 1
}