Tlaloc-ES
Tlaloc-ES

Reputation: 5282

How to use env values to Job?

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

Answers (2)

Krishna Chaurasia
Krishna Chaurasia

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

coderanger
coderanger

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

Related Questions