202 lines
9.1 KiB
Plaintext
202 lines
9.1 KiB
Plaintext
# Argo Workflows Chart
|
|
|
|
This is a **community maintained** chart. It is used to set up argo and its needed dependencies through one command. This is used in conjunction with [helm](https://github.com/kubernetes/helm).
|
|
|
|
If you want your deployment of this helm chart to most closely match the [argo CLI](https://github.com/argoproj/argo-workflows), you should deploy it in the `kube-system` namespace.
|
|
|
|
## Pre-Requisites
|
|
|
|
### Custom resource definitions
|
|
|
|
Some users would prefer to install the CRDs _outside_ of the chart. You can disable the CRD installation of this chart by using `--set crds.install=false` when installing the chart.
|
|
|
|
Helm cannot upgrade custom resource definitions in the `<chart>/crds` folder [by design](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#some-caveats-and-explanations). Starting with 3.4.0 (chart version 0.19.0), the CRDs have been moved to `<chart>/templates` to address this design decision.
|
|
|
|
If you are using Argo Workflows chart version prior to 3.4.0 (chart version 0.19.0) or have elected to manage the Argo Workflows CRDs outside of the chart, please use `kubectl` to upgrade CRDs manually from [templates/crds](templates/crds/) folder or via the manifests from the upstream project repo:
|
|
|
|
```bash
|
|
kubectl apply -k "https://github.com/argoproj/argo-workflows/manifests/base/crds/full?ref=<appVersion>"
|
|
|
|
# Eg. version v3.3.9
|
|
kubectl apply -k "https://github.com/argoproj/argo-workflows/manifests/base/crds/full?ref=v3.3.9"
|
|
```
|
|
|
|
### ServiceAccount for Workflow Spec
|
|
In order for each Workflow run, you create ServiceAccount via `values.yaml` like below.
|
|
|
|
```yaml
|
|
workflow:
|
|
serviceAccount:
|
|
create: true
|
|
name: "argo-workflow"
|
|
rbac:
|
|
create: true
|
|
controller:
|
|
workflowNamespaces:
|
|
- default
|
|
- foo
|
|
- bar
|
|
```
|
|
|
|
Set ServiceAccount on Workflow.
|
|
|
|
```yaml
|
|
apiVersion: argoproj.io/v1alpha1
|
|
kind: Workflow
|
|
metadata:
|
|
generateName: hello-world-
|
|
spec:
|
|
entrypoint: whalesay
|
|
serviceAccountName: argo-workflow # Set ServiceAccount
|
|
templates:
|
|
- name: whalesay
|
|
container:
|
|
image: docker/whalesay
|
|
command: [ cowsay ]
|
|
args: [ "hello world" ]
|
|
```
|
|
|
|
## Installing the Chart
|
|
|
|
To install the chart with the release name `my-release`:
|
|
|
|
```console
|
|
$ helm repo add argo https://argoproj.github.io/argo-helm
|
|
"argo" has been added to your repositories
|
|
|
|
$ helm install my-release argo/argo-workflows
|
|
NAME: my-release
|
|
...
|
|
```
|
|
|
|
## Changelog
|
|
|
|
For full list of changes, please check ArtifactHub [changelog].
|
|
|
|
## Usage Notes
|
|
|
|
### Workflow controller
|
|
|
|
This chart defaults to setting the `controller.instanceID.enabled` to `false` now, which means the deployed controller will act upon any workflow deployed to the cluster. If you would like to limit the behavior and deploy multiple workflow controllers, please use the `controller.instanceID.enabled` attribute along with one of its configuration options to set the `instanceID` of the workflow controller to be properly scoped for your needs.
|
|
|
|
### Workflow server authentication
|
|
|
|
By default, the chart requires some kind of authentication mechanism. This adopts the [default behaviour from the Argo project](https://github.com/argoproj/argo-workflows/pull/5211) itself. However, for local development purposes, or cases where your gateway authentication is covered by some other means, you can set the authentication mode for the Argo server by setting the `server.extraArgs: [--auth-mode=server]`. There are a few additional comments in the values.yaml file itself, including commented-out settings to disable authentication on the server UI itself using the same `--auth-mode=server` setting.
|
|
|
|
## Values
|
|
|
|
The `values.yaml` contains items used to tweak a deployment of this chart.
|
|
Fields to note:
|
|
|
|
- `controller.instanceID.enabled`: If set to true, the Argo Controller will **ONLY** monitor Workflow submissions with a `--instanceid` attribute
|
|
- `controller.instanceID.useReleaseName`: If set to true then chart set controller instance id to release name
|
|
- `controller.instanceID.explicitID`: Allows customization of an instance id for the workflow controller to monitor
|
|
- `singleNamespace`: When true, restricts the workflow controller to operate
|
|
in just the single namespace (that one of the Helm release).
|
|
- `controller.workflowNamespaces`: This is a list of namespaces where the
|
|
workflow controller will manage workflows. Only valid when `singleNamespace`
|
|
is false.
|
|
|
|
### General parameters
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
{{- range .Values }}
|
|
{{- if not (or (hasPrefix "workflow" .Key) (hasPrefix "controller" .Key) (hasPrefix "executor" .Key) (hasPrefix "server" .Key) (hasPrefix "artifactRepository" .Key) (hasPrefix "customArtifact" .Key) (hasPrefix "use" .Key) (hasPrefix "mainContainer" .Key) ) }}
|
|
| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
### Workflow
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
{{- range .Values }}
|
|
{{- if hasPrefix "workflow" .Key }}
|
|
| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
### Workflow Controller
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
{{- range .Values }}
|
|
{{- if hasPrefix "controller" .Key }}
|
|
| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
### Workflow Main Container
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
{{- range .Values }}
|
|
{{- if hasPrefix "mainContainer" .Key }}
|
|
| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
### Workflow Executor
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
{{- range .Values }}
|
|
{{- if hasPrefix "executor" .Key }}
|
|
| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
### Workflow Server
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
{{- range .Values }}
|
|
{{- if hasPrefix "server" .Key }}
|
|
| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
### Artifact Repository
|
|
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
{{- range .Values }}
|
|
{{- if or (hasPrefix "artifactRepository" .Key) (hasPrefix "use" .Key) (hasPrefix "customArtifact" .Key) }}
|
|
| {{ .Key }} | {{ .Type }} | {{ if .Default }}{{ .Default }}{{ else }}{{ .AutoDefault }}{{ end }} | {{ if .Description }}{{ .Description }}{{ else }}{{ .AutoDescription }}{{ end }} |
|
|
{{- end }}
|
|
{{- end }}
|
|
|
|
## Breaking changes from the deprecated `argo` chart
|
|
|
|
1. the `installCRD` value has been removed. CRDs are now only installed from the conventional crds/ directory
|
|
1. the CRDs were updated to `apiextensions.k8s.io/v1`
|
|
1. the container image registry/project/tag format was changed to be more in line with the more common
|
|
|
|
```yaml
|
|
image:
|
|
registry: quay.io
|
|
repository: argoproj/argocli
|
|
tag: v3.0.1
|
|
```
|
|
|
|
this also makes it easier for automatic update tooling (eg. renovate bot) to detect and update images.
|
|
|
|
1. switched to quay.io as the default registry for all images
|
|
1. removed any included usage of Minio
|
|
1. aligned the configuration of serviceAccounts with the argo-cd chart, ie: what used to be `server.createServiceAccount` is now `server.serviceAccount.create`
|
|
1. moved the field previously known as `telemetryServicePort` inside the `telemetryConfig` as `telemetryConfig.servicePort` - same for `metricsConfig`
|
|
|
|
[affinity]: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
|
|
[BackendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig#backendconfigspec_v1beta1_cloudgooglecom
|
|
[FrontendConfigSpec]: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#configuring_ingress_features_through_frontendconfig_parameters
|
|
[links]: https://argoproj.github.io/argo-workflows/links/
|
|
[columns]: https://github.com/argoproj/argo-workflows/pull/10693
|
|
[Node selector]: https://kubernetes.io/docs/user-guide/node-selection/
|
|
[Pod Disruption Budget]: https://kubernetes.io/docs/tasks/run-application/configure-pdb/
|
|
[probe]: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
|
|
[Tolerations]: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
|
[TopologySpreadConstraints]: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
|
|
[values.yaml]: values.yaml
|
|
[changelog]: https://artifacthub.io/packages/helm/argo/argo-workflows?modal=changelog
|