0

大きなデータを Argo の webhook に POST できるようにしたいと考えています。私のセンサー定義では、リクエストからデータを取得し、それをワークフローの「未加工」アーティファクトに入れます。データは base64 でエンコードされているため、Sprig テンプレートを使用してエンコードされたデータをデコードします。

残念ながら、大量のデータを使用すると、Kubernetes は生成されたワークフロー定義の処理を拒否します。

生データの例

この例は、少量のデータに有効です。

apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
  name: webhook
spec:
  template:
    serviceAccountName: argo-events-sa
  dependencies:
    - name: input-dep
      eventSourceName: webhook-datapost
      eventName: datapost
  triggers:
    - template:
        name: webhook-datapost-trigger
        k8s:
          group: argoproj.io
          version: v1alpha1
          resource: workflows
          operation: create
          source:
            resource:
              apiVersion: argoproj.io/v1alpha1
              kind: Workflow
              metadata:
                generateName: webhook-datapost-
              spec:
                entrypoint: basefile
                imagePullSecrets:
                  - name: regcred
                arguments:
                  artifacts:
                  - name: filecontents
                    raw:
                      data: ""
                templates:
                - name: basefile
                  serviceAccountName: argo-events-sa
                  inputs:
                    artifacts:
                    - name: filecontents
                      path: /input.file
                  container:
                    image: alpine:latest
                    command: ["ls"]
                    args: ["/input.file"]
          parameters:
            - src:
                dependencyName: input-dep
                dataTemplate: "{{ .Input.body.basedata | b64dec }}"
              dest: spec.arguments.artifacts.0.raw.data

大きなデータセットでのエラー

小さなデータセットで上記の例をトリガーすると、これは期待どおりに機能します。しかし、大規模なデータセットを使用すると、エラーが発生します。

Pod "webhook-datapost-7rwsm" is invalid: metadata.annotations: Too long: must have at most 262144 bytes

これは生データ全体をワークフロー テンプレートにコピーしたためだと理解しています。その後、この大きなテンプレートは Kubernetes によって拒否されます。

ペイロード全体をワークフロー テンプレートにコピーせずに、Webhook POST リクエストからアーティファクトにデータをコピーする方法を探しています。Argoに可能性はありますか?

4

0 に答える 0