ArgocdΒΆ

By enabling this toolset, HolmesGPT will be able to fetch the status, deployment history, and configuration of ArgoCD applications.

ConfigurationΒΆ

This toolset requires an ARGOCD_AUTH_TOKEN environment variable. Generate such auth token by following these steps. You can consult the available environment variables on argocd's official documentation for the CLI.

In addition to the auth token, you will need to tell argocd how to connect to the server. This can be done two ways:

  1. Using port forwarding. This is the recommended approach if your argocd is inside your Kubernetes cluster.

  2. Setting the env var SERVER_URL. This is the recommended approach if your argocd is reachable through a public DNS

1. Port forwardingΒΆ

This is the recommended approach if your argocd is inside your Kubernetes cluster.

HolmesGPT needs permission to establish a port-forward to ArgoCD. The configuration below includes that authorization.

holmes:
    customClusterRoleRules:
        - apiGroups: [""]
          resources: ["pods/portforward"]
          verbs: ["create"]
    additionalEnvVars:
        - name: ARGOCD_AUTH_TOKEN
          value: <your argocd auth token>
        - name: ARGOCD_OPTS
          value: "--port-forward --port-forward-namespace <your_argocd_namespace> --grpc-web"
    toolsets:
        argocd/core:
            enabled: true

Note

Change the namespace --port-forward-namespace <your_argocd_namespace> to the namespace in which your argocd service is deployed.

The option --grpc-web in ARGOCD_OPTS prevents some connection errors from leaking into the tool responses and provides a cleaner output for HolmesGPT.

Update your Helm values (generated_values.yaml) with the above configuration and run a Helm upgrade:

helm upgrade robusta robusta/robusta --values=generated_values.yaml --set clusterName=<YOUR_CLUSTER_NAME>

2. Server URLΒΆ

This is the recommended approach if your argocd is reachable through a public DNS.

holmes:
    additionalEnvVars:
        - name: ARGOCD_AUTH_TOKEN
          value: <your argocd auth token>
        - name: ARGOCD_SERVER
          value: argocd.example.com
    toolsets:
        argocd/core:
            enabled: true

Update your Helm values (generated_values.yaml) with the above configuration and run a Helm upgrade:

helm upgrade robusta robusta/robusta --values=generated_values.yaml --set clusterName=<YOUR_CLUSTER_NAME>

First create the ARGOCD_AUTH_TOKEN environment variable:

export ARGOCD_AUTH_TOKEN="<your argocd auth token>"
export ARGOCD_SERVER="argocd.example.com"

Then add the following to ~/.holmes/config.yaml, creating the file if it doesn't exist:

toolsets:
    argocd/core:
        enabled: true

To test, run:

holmes ask "Which argocd applications are failing and why?"

CapabilitiesΒΆ

The table below describes the specific capabilities provided by this toolset. HolmesGPT can decide to invoke any of these capabilities when answering questions or investigating issues.

Tool Name

Description

argocd_app_get

Retrieve information about an existing application, such as its status and configuration

argocd_app_diff

Display the differences between the current state of an application and the desired state specified in its Git repository

argocd_app_list

List the applications in Argocd

argocd_app_history

List the deployment history of an application in ArgoCD

argocd_repo_list

List all the Git repositories that ArgoCD is currently managing

argocd_proj_list

List all available projects

argocd_proj_get

Retrieves information about an existing project, such as its applications and policies

argocd_cluster_list

List all known clusters