我正在探索一种在 Argo 工作流程中读取 K8S 资源的简单方法。当前文档主要关注带条件的创建/修补( https://argoproj.github.io/argo/examples/#kubernetes-resources ),而我很好奇是否可以执行“action: get”、资源状态的额外部分(或完整资源)并将其传递给下游工件或结果输出。有什么想法吗?
最佳答案
更新:
现在支持原始答案:
action: get
不是 Argo 提供的功能。
但是,可以轻松地在 Pod 中使用 kubectl
,然后将 JSON 输出发送到输出参数。这使用 BASH 脚本将 JSON 发送到 result
输出参数,但显式输出参数或输出工件也是可行的选项。
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: kubectl-bash-
spec:
entrypoint: kubectl-example
templates:
- name: kubectl-example
steps:
- - name: generate
template: get-workflows
- - name: print
template: print-message
arguments:
parameters:
- name: message
value: "{{steps.generate.outputs.result}}"
- name: get-workflows
script:
image: bitnami/kubectl:latest
command: [bash]
source: |
some_workflow=$(kubectl get workflows -n argo | sed -n 2p | awk '{print $1;}')
kubectl get workflow "$some_workflow" -n argo -ojson
- name: print-message
inputs:
parameters:
- name: message
container:
image: alpine:latest
command: [sh, -c]
args: ["echo result was: '{{inputs.parameters.message}}'"]
请记住,kubectl
将使用工作流的 ServiceAccount 的权限运行。请务必submit the Workflow using a ServiceAccount它可以访问您想要获取的资源。
关于kubernetes - 使用 "resource"模板/步骤和 "get"操作提取 Argo 工作流程中的资源并传递到下游步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64969070/