Kubeval で Kubernetes マニフェストを検査する場合に kustomize を使っていると,以下のように kustomization.yaml でエラーになってしまう.kustomization.yaml には kind フィールドがなく,Kubeval の対象外にしたい!
$ kubeval --version Version: 0.16.1 Commit: f5dba6b486fa18b9179b91e15eb6f2b0f7a5a69e Date: 2021-03-30T15:17:06Z $ kubeval --directories . ERR - base/kustomization.yaml: Missing 'kind' key ERR - overlays/dev/kustomization.yaml: Missing 'kind' key
kustomization.yaml を対象外にする
Kubeval には指定したファイルを対象外にする --ignored-filename-patterns オプションがあり,以下のように指定できる.解決!
$ kubeval --directories . --ignored-filename-patterns 'kustomization.yaml'
なお kustomization.yaml に関連する issue も出ている.他にも類似したオプションとして --ignore-missing-schemas や --skip-kinds もあるけど使えないため,やはり --ignored-filename-patterns オプションを使うのが現状は良さそう👌
GitHub Actions 対応
しかし GitHub Actions で Kubeval を使おうとするとまた違う問題に遭遇する.公開されている Actions が --ignored-filename-patterns オプションをサポートしていない.プルリクエストは出ているけど,1年以上放置されているように見える.よって使えなかった😇
となると,Kubeval Docker イメージを直接指定して使うことになる.公開されている garethr/kubeval Docker イメージ(GitHub リポジトリは garethr/kubeval から instrumenta/kubeval にリダイレクトされる)を使って,以下のように workflow.yml を設定すれば,期待した通りに使えるようになった.解決!
name: Workflow on: push jobs: kubeval: name: kubeval runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: kubeval uses: docker://garethr/kubeval with: args: '--directories . --ignored-filename-patterns "kustomization.yaml|workflow.yml"'
まとめ
Kubeval で kustomization.yaml を対象外にできるようになった!引き続き issue は確認しよう👀