kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

Kubeval で kustomization.yaml を対象外にする

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.com

GitHub Actions 対応

しかし GitHub Actions で Kubeval を使おうとするとまた違う問題に遭遇する.公開されている Actions--ignored-filename-patterns オプションをサポートしていない.プルリクエストは出ているけど,1年以上放置されているように見える.よって使えなかった😇

github.com

となると,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"'

まとめ

Kubevalkustomization.yaml を対象外にできるようになった!引き続き issue は確認しよう👀