Reputation: 513
I'm trying to create a small cronjob in k8s that simply executes a HTTP Post using curl in a busybox container. The formatting is wrong though and i cannot figure out what i have to change.
I've tried googling the error message i'm getting as well as change the formatting of the curl command in various ways without any success.
apiVersion: batch/v1beta1
kind: CronJob
#namespace: test
metadata:
name: test-cron
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: test-cron
image: busybox
args:
- /bin/sh
- -c
- curl "https://test-es01.test.svc.clu01.test.local:9200/logs_write/_rollover" -H 'Content-Type: application/json' -d '{"conditions: {"max_size": "5gb"}}'
restartPolicy: OnFailure
I then try to run the file:
kubectl -n test apply -f test-cron.yaml
and get the following error:
error: error parsing test-cron.yaml: error converting YAML to JSON: yaml: line 20: mapping values are not allowed in this context
Does anyone know what the issue is with the formatting?
Thanks
Upvotes: 4
Views: 5596
Reputation: 5612
thats because your curl
command contains semicolon so yaml thinks you are trying to define an object. to fix the error:
"
with backlslash: \"
"
therefore-
- curl "https://test-es01.test.svc.clu01.test.local:9200/logs_write/_rollover" -H 'Content-Type: application/json' -d '{"conditions: {"max_size": "5gb"}}'
should be escaped to
- "curl \"https://test-es01.test.svc.clu01.test.local:9200/logs_write/_rollover\" -H 'Content-Type: application/json' -d '{\"conditions: {\"max_size\": \"5gb\"}}'\n"
http://www.yamllint.com/ is a great place to track down such bugs.
Upvotes: 7