Install with ArgoCD

This tutorial installs Robusta with ArgoCD.

Prerequisites

  • A Kubernetes cluster with ArgoCD

  • A generated_values.yaml file. Follow the Generate a Config tutorial to generate this.

Have questions?

Ask on Slack or open a GitHub issue

Preparing Robusta's config

Prepare your generated_values.yaml file for ArgoCD:

  • If it's not already present, add clusterName: <YOUR-CLUSTER-NAME>

  • If installing on a test cluster like KIND, add isSmallCluster: true

Example generated_values.yaml:

clusterName: my_cluster_name # <- This is the line to be added
globalConfig:
  signing_key: xxxxxx
  account_id: xxxxxx
sinksConfig:
- robusta_sink:
    name: robusta_ui_sink
    token: xxxxxx
enablePrometheusStack: true
enablePlatformPlaybooks: true
runner:
  sendAdditionalTelemetry: true

Secrets handling

Read this guide about Managing Secrets.

Configure ArgoCD in the UI

Create a NEW APP in ArgoCD and fill in the following settings.

General settings

  • Application name: Your choice (e.g "robusta")

  • Project name: Your choice (e.g "default")

  • Sync Policy: Your choice (we recommend starting with Manual)

Source settings

Destination settings

  • To install robusta in the same cluster as ArgoCD, use the default https://kubernetes.default.svc option

  • Namespace: Your choice ("default" or "robusta" is recommended)

Here is a screenshot of all settings so far:

Directory settings

Change the "Directory" category to "Helm" by clicking the dropdown box.

Then paste the contents of generated_values.yaml into the values option.

Warning

Make sure you fill in values, not values files

Finish installing

Click the create button. Then choose all and press the sync button.

Finally, run robusta logs from your cli and make sure there is no error.

Sync fails

On some Robusta versions, the sync might fail with CustomResourceDefinition.apiextensions.k8s.io “prometheuses.monitoring.coreos.com” is invalid: metadata.annotations: Too long: must have at most 262144 bytes.

To solve it, use the workaround proposed here.

Configure ArgoCD Declaratively

First generate a Helm values file for Robusta, as described above. Put it in a Git repository and push it.

Then create an Argo Application which references that values file:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: robusta
  namespace: argocd
  finalizers:
    - resources-finalizer.argocd.argoproj.io
spec:
  destination:
    server: https://kubernetes.default.svc
    namespace: robusta
  project: default
  sources:
    - chart: robusta
      repoURL: https://robusta-charts.storage.googleapis.com
      targetRevision: <ROBUSTA VERSION - e.g. "0.10.31">
      helm:
        valueFiles:
          # this refers to the repository defined below containing your value files
          # see https://argo-cd.readthedocs.io/en/latest/user-guide/multiple_sources/#helm-value-files-from-external-git-repository
          - $values/values/robusta.yaml

    - repoURL: "git@github.com:my-user/example-repo.git"
      targetRevision: HEAD
      ref: values