k8sのcronjobなどのyamlでexpected alphabetic or numeric character, but found ' 'が発生する時
結論から言うと、cronの指定はダブルクォートで囲んで、文字列だと明記しましょう。
NG
spec:
schedule: */5 * * * *
OK
spec:
schedule: "*/5 * * * *"
ただ、これはOKなので紛らわしい
spec:
schedule: 0 * * * *
何が起きているか
*から始まる値はエイリアスとみなされるので、
* * * * *
は
" * * * *"
という名前のエイリアスだとみなされます。しかしエイリアスは空白文字を許さないので、表題の"expected alphabetic or numeric character, but found ' '"となってしまいます。
どうして気づかなかったか
yamlを直接書いてればIDEがエラー吐いてくれるので気づくんですが、
spec:
schedule: ${SCHEDULE}
という感じでこのcron行は外部から注入できるようにしてデプロイしてたので気づきませんでした。
gitlabでも同様なバグが有ったらしい https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/2284
エイリアスに使えない文字について
実は実装依存のよう。libyamlでは.や/も使えるようだけど(https://github.com/yaml/libyaml/pull/170/files) pyyamlでは使えない。
Author And Source
この問題について(k8sのcronjobなどのyamlでexpected alphabetic or numeric character, but found ' 'が発生する時), 我々は、より多くの情報をここで見つけました https://qiita.com/Hi-king/items/67b11d5bcc0b50cc7130著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .