Reputation: 87
I'm trying to set the container image for a template from environment variables. I've tried this:
- name: sftp-to-gcp-bucket
script:
image: "gcr.io/{{$CONTAINER}}/imagename:{{$VERSION}}"
...
...
env:
- name: CONTAINER
valueFrom:
secretKeyRef:
name: enviroment-vars
key: contenedor
- name: VERSION
valueFrom:
secretKeyRef:
name: enviroment-vars
key: version
And I have the k8s secrets set correctly:
Name: enviroment-vars
Namespace: argo
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
container: 17 bytes
version: 5 bytes
But the env variables doesn't seem to get injected into the image field... Do I have to make another template to parse the secrets and from that output inject them into the image?
Upvotes: 0
Views: 2372
Reputation: 8392
The environment variables only have meaning in the container created by Argo Workflows. They are not accessible in the Workflow itself.
There are a number of ways to load Kubernetes resources and use them as variables in a Workflow.
In this case, I'd recommend loading parameters from a ConfigMap.
apiVersion: argoproj.io/v1alpha1
kind: Workflow
spec:
templates:
- name: sftp-to-gcp-bucket
inputs:
parameters:
- name: container
valueFrom:
configMapKeyRef:
name: enviroment-vars
key: contenedor
- name: version
valueFrom:
configMapKeyRef:
name: enviroment-vars
key: version
script:
image: "gcr.io/{{inputs.parameters.container}}/imagename:{{inputs.parameters.version}}"
Upvotes: 1