Hello I am trying to passing a env values to a job in order to do this I use the following kubernetes template:
apiVersion: batch/v1
kind: Job
metadata:
name: socksdownloader
spec:
template:
spec:
containers:
- name: socksdownloader
image: socksdownloader:0.0.1
# env:
# - name: REDIS_HOST
# value: redis
# - name: REDIS_PORT
# value: 6379
# - name: REDIS_DB
# value: 0
# - name: REDIS_KEY
# value: "SOCK:"
command: ["python", "src/main.py"]
restartPolicy: Never
backoffLimit: 4
If I uncoment the env entries of the yml I got the following error:
The request is invalid: patch: Invalid value:
"map[metadata:map[annotations:map[kubectl.kubernetes.io/last-applied-configuration:{"apiVersion":"batch/v1","kind":"Job","metadata":{"annotations":{},"name":"socksdownloader","namespace":"default"},"spec":{"backoffLimit":4,"template":{"spec":{"containers":[{"command":["python","src/main.py"],"env":[{"name":"REDIS_HOST","value":"redis"},{"name":"REDIS_PORT","value":6379},{"name":"REDIS_DB","value":0},{"name":"REDIS_KEY","value":"SOCK:"}],"image":"socksdownloader:0.0.1","name":"socksdownloader"}],"restartPolicy":"Never"}}}}n]] spec:map[template:map[spec:map[]]]]": cannot convert int64 to string
The question is how can I pass that values to a Job in order to that can get connection to redis.
Thanks
2
Answers
For the port it needs to be
value: "6379"
and similar for the DB. YAML automatically guesses if something looks like a number but environment variables must be strings. Hence "cannot convert int64 to string".Kubernetes’
envvar
specification requires environment variable values to be coerced as strings, so integers need to be passed through quote.Use quotes with the integer values: