Posted at

copperでラベルとネームスペースvalidation

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
}