问题描述
正在开发一个使用 Argo Workflows 的 ETL 流水线,并且为了处理与环境相关的配置,正在使用 Kustomize。用户遇到了在 Argo CronWorkflow 上使用 Kustomize 进行图像转换的问题。
以下是用户提供的 Argo CronWorkflow 配置示例:
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: cronworkflow
spec:
concurrencyPolicy: Forbid
failedJobsHistoryLimit: 3
successfulJobsHistoryLimit: 3
startingDeadlineSeconds: 300
workflowSpec:
entrypoint: start
templates:
- name: start
container:
name: my-start-task
image: app-image
command:
- /bin/sh
- -xec
- |
./entrypoint.sh
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: aws-creds
key: access-key
用户提到使用 patchesStrategicMerge
时,Kustomize 似乎无法正常工作,因为它只能处理标准的 Kubernetes 种类。对于第三方种类,它将简单地覆盖整个树结构而不是尝试合并。用户不得不在定义 Argo CronWorkflow
的 YAML 文件上使用 patchesJson6902
。然而,现在 images
转换器似乎不再起作用。用户想知道是否有什么方便的方法来修复 patchesStrategicMerge
的行为,以及是否有关于 Argo Workflows 的 Kustomize “类型定义” 可在何处找到。
解决方案
请注意以下操作可能涉及版本差异,请在执行前备份。
方案
Kustomize 提供了一种 “提示” 图像标签位置的方式。可以通过创建一个名为 kustomconfig.yaml
的文件来实现这一点,然后将以下内容添加到你的 kustomization.yaml
中。
- 创建一个名为
kustomconfig.yaml
的文件,内容如下:
images:
- path: spec/templates[]/container/image
kind: WorkflowTemplate
- path: spec/templates[]/script/image
kind: WorkflowTemplate
- 在你的
kustomization.yaml
中添加以下内容:
configurations:
- kustomconfig.yaml
这样,你就完成了设置。images
转换器将会捕获这些字段。
这种方法会使得 Kustomize 能够正确处理 Argo CronWorkflow 的图像转换。
结论
使用 Kustomize 对 Argo CronWorkflow 进行图像转换的问题可以通过创建 kustomconfig.yaml
文件并在 kustomization.yaml
中指定配置来解决。这样,Kustomize 就能够正确地处理 Argo CronWorkflow 中的图像转换。如果 Argo 团队能够提供更多关于 Kustomize 转换器配置的支持,将有助于简化用户在处理 Argo Workflows 时的配置工作。