kubernetes 在Argo工作流程中使用“资源”模板/步骤和“获取”操作提取资源并传递到下游步骤?

h7wcgrx3  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(84)

我正在探索一种在Argo工作流程中读取K8S资源的简单方法。当前的文档主要关注于带条件的创建/补丁(https://argoproj.github.io/argo/examples/#kubernetes-resources),而我很好奇是否可以执行“action:获取”资源状态的额外部分(或完整资源),并将其作为工件或结果输出传递给下游。有什么想法吗?

sg24os4d

sg24os4d1#

更新:

现在支持action: get:https://github.com/argoproj/argo-workflows/blob/246d4f44013b545e963106a9c43e9cee397c55f7/examples/k8s-wait-wf.yaml#L46

原始答案:

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可以访问您想要获取的资源。

相关问题