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 は確認しよう👀