0

ワークフロー:

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: my-workflow-
spec:
  entrypoint: main
  arguments:
    parameters:
      - name: configmap
        value: my-configmap
      - name: secret
        value: my-secret
  templates:
    - name: main
      steps:
        - - name: main
            templateRef:
              name: my-template
              template: main
            arguments:
              parameters:
                - name: configmap
                  value: "{{workflow.parameters.configmap}}"
                - name: secret
                  value: "{{workflow.parameters.secret}}"

テンプレート:

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: my-template
spec:
  entrypoint: main
  templates:
    - name: main
      inputs:
        parameters:
          - name: configmap
        parameters:
          - name: secret
      container:
        image: my-image:1.2.3
        envFrom:
          - configMapRef:
            name: "{{inputs.parameters.configmap}}"
          - secretRef:
            name: "{{inputs.parameters.secret}}"

Argo UI を使用してデプロイすると、ポッドの開始時に Kubernetes から次のエラーが表示されます。

spec.containers[1].envFrom: Invalid value: \"\": must specify one of: `configMapRef` or `secretRef`

の使用envFromは、Argo のドキュメント ( https://argoproj.github.io/argo-workflows/fields/ ) でサポートされ、文書化されています。Kubernetes がここで不平を言っているのはなぜですか?

4

1 に答える 1

2

コメントで述べたように、マニフェストにはいくつかの問題があります。それらは有効な YAML ですが、その YAML は有効な Argo カスタム リソースに逆シリアル化されません。

  1. ワークフローでは、 でparametersキーを複製しましたspec.templates[0].inputs
  2. WorkflowTemplate では、名前configMapRefsecretRef名前をキーと同じレベルに配置しました。configMapRefsecretRefはオブジェクトであるため、nameキーはそれぞれの下にネストする必要があります。

これらは修正されたマニフェストです。

apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
  name: my-template
spec:
  entrypoint: main
  templates:
    - name: main
      inputs:
        parameters:
          - name: configmap
          - name: secret
      container:
        image: my-image:1.2.3
        envFrom:
          - configMapRef:
              name: "{{inputs.parameters.configmap}}"
          - secretRef:
              name: "{{inputs.parameters.secret}}"

---

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: my-workflow-
spec:
  entrypoint: main
  arguments:
    parameters:
      - name: configmap
        value: my-configmap
      - name: secret
        value: my-secret
  templates:
    - name: main
      steps:
        - - name: main
            templateRef:
              name: my-template
              template: main
            arguments:
              parameters:
                - name: configmap
                  value: "{{workflow.parameters.configmap}}"
                - name: secret
                  value: "{{workflow.parameters.secret}}"

Argo Workflows は、これらの問題を発見/回避するのに役立つIDE ベースの検証をサポートしています。

于 2021-05-13T19:02:35.007 に答える