Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 32 additions & 6 deletions docs/scaling.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,9 @@ Rather than running a single installation in your cluster, run one per namespace

### Instance ID

Within a cluster can use instance ID to run N Argo instances within a cluster.
Within a cluster you can use instance ID to run many Argo instances within a cluster. You can run each instance in separate, or the same namespace.

Create one namespace for each Argo, e.g. `argo-i1`, `argo-i2`:.

Edit [`workflow-controller-configmap.yaml`](workflow-controller-configmap.yaml) for each namespace to set an instance ID.
For each instance, edit the [`workflow-controller-configmap.yaml`](workflow-controller-configmap.yaml) to set an `instanceID`.

```yaml
apiVersion: v1
Expand All @@ -123,13 +121,41 @@ data:
instanceID: i1
```

You may need to pass the instance ID to the CLI:
#### CLI Usage

When you are using the CLI, set the `--instanceid` to interact with a specific instance. For example, to submit a Workflow defined in `my-wf.yaml`:

```bash
argo --instanceid i1 submit my-wf.yaml
```

You do not need to have one instance ID per namespace, you could have many or few.
#### Declarative Usage

You can also declare which instance to use in the each of the Custom Resources. For example, on a `Workflow`:

```yaml
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
labels:
workflows.argoproj.io/controller-instanceid: i1
```

It can also be useful, when defining a `WorkflowTemplate` to use `templateDefaults`

```yaml
apiVersion: argoproj.io/v1alpha1
kind: WorkflowTemplate
metadata:
labels:
workflows.argoproj.io/controller-instanceid: i1
name: example
spec:
templateDefaults:
metadata:
labels:
workflows.argoproj.io/controller-instanceid: i1
```

### Maximum Recursion Depth

Expand Down
2 changes: 1 addition & 1 deletion docs/workflow-controller-configmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Config contains the root of the configuration settings for the workflow controll
| `KubeConfig` | [`KubeConfig`](#kubeconfig) | KubeConfig specifies a kube config file for the wait & init containers |
| `ArtifactRepository` | [`wfv1.ArtifactRepository`](fields.md#artifactrepository) | ArtifactRepository contains the default location of an artifact repository for container artifacts |
| `Namespace` | `string` | Namespace is a label selector filter to limit the controller's watch to a specific namespace |
| `InstanceID` | `string` | InstanceID is a label selector to limit the controller's watch to a specific instance. It contains an arbitrary value that is carried forward into its pod labels, under the key workflows.argoproj.io/controller-instanceid, for the purposes of workflow segregation. This enables a controller to only receive workflow and pod events that it is interested about, in order to support multiple controllers in a single cluster, and ultimately allows the controller itself to be bundled as part of a higher level application. If omitted, the controller watches workflows and pods that *are not* labeled with an instance id. |
| `InstanceID` | `string` | InstanceID is a label selector to limit the controller's watch to a specific instance. It contains an arbitrary value that is carried forward into its pod labels, under the key workflows.argoproj.io/controller-instanceid, for the purposes of workflow segregation. This enables a controller to only receive workflow and pod events that it is interested about, in order to support multiple controllers in a single cluster, and ultimately allows the controller itself to be bundled as part of a higher level application. If omitted, the controller watches workflows and pods that *are not* labeled with an instance id. See [Scaling - Instance ID](scaling.md#instance-id) for more details. |
| `MetricsConfig` | [`MetricsConfig`](#metricsconfig) | MetricsConfig specifies configuration for metrics emission. Metrics are enabled and emitted on localhost:9090/metrics by default. |
| `TelemetryConfig` | [`MetricsConfig`](#metricsconfig) | TelemetryConfig specifies configuration for telemetry emission. Telemetry is enabled and emitted in the same endpoint as metrics by default, but can be overridden using this config. |
| `Parallelism` | `int` | Parallelism limits the max total parallel workflows that can execute at the same time |
Expand Down
Loading