Argo Workflows:从环境变量设置容器镜像

Argo Workflows: Set container image from enviroment variables

我正在尝试通过环境变量为模板设置容器映像。 我试过这个:

- 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

并且我正确设置了 k8s 机密:

Name:         enviroment-vars
Namespace:    argo
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
container:                  17 bytes
version:                    5 bytes

但是 env 变量似乎没有被注入到图像字段中......我是否必须制作另一个模板来解析秘密并从该输出中将它们注入到图像中?

环境变量只有在Argo Workflows创建的容器中才有意义。它们在工作流本身中不可访问。

有多种方法可以加载 Kubernetes 资源并将它们用作工作流中的变量。

在这种情况下,我建议加载 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}}"