Reputation: 5282
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
Upvotes: 4
Views: 6290
Reputation: 9600
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:
- name: REDIS_PORT
value: "6379"
- name: REDIS_DB
value: "0"
Upvotes: 7
Reputation: 54247
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".
Upvotes: 2