I have the file example-workflow-cowsay.yml
:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: hello-world-
spec:
entrypoint: whalesay
templates:
- name: whalesay
container:
image: docker/whalesay
command: [cowsay]
args: ["hello world"]
resources:
limits:
memory: 32Mi
cpu: 100m
I can submit this successfully like this: argo submit -n workflows apps/workflows/example-workflow-cowsay.yml
.
Can I get the same thing done using kubectl
directly? I tried the below but it fails:
$ k apply -n workflows -f apps/workflows/example-workflow-cowsay.yml
error: from hello-world-: cannot use generate name with apply
Yes, it's right there in the docs.
kubectl -n workflows create -f apps/workflows/example-workflow-cowsay.yml
did the job.
To elaborate a bit: This makes sense, as what I was trying to "apply" was a single run of a workflow (think an object instance rather than a class). If I'd tried to apply a CronWorkflow, then kubectl apply
would have worked. The error message that I got:
error: from hello-world-: cannot use generate name with apply
Told me about it, but I didn't understand it at the time. This is invalid:
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
generateName: some-name
...
But this is valid:
apiVersion: argoproj.io/v1alpha1
kind: CronWorkflow
metadata:
name: some-name
...