Skip to content

Latest commit

 

History

History
84 lines (70 loc) · 3.45 KB

debugging-remote-environment.md

File metadata and controls

84 lines (70 loc) · 3.45 KB

Debugging a Remote ArgoCD Environment

In this guide, we will describe how to debug a remote ArgoCD environment with Telepresence.

Telepresence allows you to connect & debug a service deployed in a remote environment and to "cherry-pick" one service to run locally, staying connected to the remote cluster. This will:

  • Reduce resource footprint on the local machine
  • Decrease the feedback loop time
  • Result in more confidence about the delivered code.

To read more about it, refer to the official documentation at telepresence.io or Medium.

Install ArgoCD

First of all, install ArgoCD on your cluster

kubectl create ns argocd
curl -sSfL https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml | kubectl apply -n argocd -f -

Connect

Connect to one of the services, for example, to debug the main ArgoCD server run:

telepresence helm install # Installs telepresence into your cluster
telepresence connect # Starts the connection to your cluster
telepresence intercept argocd-server --port 8083:8083 --port 8080:8080 --env-file .envrc.remote --namespace argocd # Starts the interception
  • --port forwards traffic of remote ports 8080 and 8083 to the same ports locally
  • --env-file writes all the environment variables of the remote pod into a local file, the variables are also set on the subprocess of the --run command
  • --namespace specifies that the argocd-server is located in the argocd namespace

List current status of Telepresence using:

telepresence status

Stop the intercept using:

telepresence leave argocd-server-argocd

And uninstall telepresence from your cluster:

telepresence helm uninstall

See this quickstart for more information on how to intercept services using Telepresence.

Connect (telepresence v1)

Use the following command instead:

telepresence --swap-deployment argocd-server --namespace argocd --env-file .envrc.remote --expose 8080:8080 --expose 8083:8083 --run bash
  • --swap-deployment changes the argocd-server deployment
  • --expose forwards traffic of remote ports 8080 and 8083 to the same ports locally
  • --env-file writes all the environment variables of the remote pod into a local file, the variables are also set on the subprocess of the --run command
  • --run defines which command to run once a connection is established, use bash, zsh or others

Debug

Once a connection is established, use your favorite tools to start the server locally.

Terminal

  • Compile make server
  • Run ./dist/argocd-server

VSCode

In VSCode use the integrated terminal to run the Telepresence command to connect. Then, to run argocd-server service use the following configuration. Update the configuration file to point to kubeconfig file: KUBECONFIG= (required)

        {
            "name": "Launch",
            "type": "go",
            "request": "launch",
            "mode": "auto",
            "program": "${workspaceFolder}/cmd/main.go",
            "envFile": [
                "${workspaceFolder}/.envrc.remote",
            ],
            "env": {
                "ARGOCD_BINARY_NAME": "argocd-server",
                "CGO_ENABLED": "0",
                "KUBECONFIG": "/path/to/kube/config"
            }
        }