DEV Community

Isaac kumi
Isaac kumi

Posted on • Edited on

11

Deploying ArgoCD on Minikube with Terraform and Helm: A Step-by-Step Guide


Prerequisites

Before diving into deploying ArgoCD on Minikube, make sure you have the following prerequisites installed on your system:

  • Docker
  • Minikube
  • Terraform
  • Helm
  • kubectl

For this guide, we're using a two-node cluster on Minikube, although one node should suffice.

Start Minikube with two nodes using this command:



minikube start --nodes 2 -p argocd-helm


Enter fullscreen mode Exit fullscreen mode

Verify your Minikube setup with:



kubectl get nodes


Enter fullscreen mode Exit fullscreen mode

Next, set up your project directory:



mkdir -p terraform/values
cd terraform && touch provider.tf main.tf
cd terraform/values && touch argocd.yaml


Enter fullscreen mode Exit fullscreen mode

Now, let's configure Terraform to deploy ArgoCD using Helm.

terraform/provider.tf



provider "helm" {
  kubernetes {
    config_path = "~/.kube/config"
  }
}


Enter fullscreen mode Exit fullscreen mode

terraform/main.tf



resource "helm_release" "argocd" {
  name = "argocd"

  repository       = "https://argoproj.github.io/argo-helm"
  chart            = "argo-cd"
  namespace        = "argocd"
  create_namespace = true
  version          = "3.35.4"

  values = [file("values/argocd.yaml")]
}


Enter fullscreen mode Exit fullscreen mode

In terraform/values/argocd.yaml, you can override some default ArgoCD Helm chart values:



global:
  image:
    tag: "v2.6.6"

server:
  extraArgs:
  - --insecure


Enter fullscreen mode Exit fullscreen mode

After setting up your Terraform configuration, execute the following commands in your terminal:



terraform init
terraform apply --auto-approve


Enter fullscreen mode Exit fullscreen mode

terraform init

Verify the ArgoCD deployment with:



kubectl get pods -n argocd


Enter fullscreen mode Exit fullscreen mode

kubectl get pods -n argocd
To access the ArgoCD web UI, you'll need to port forward to the argocd-server service:



kubectl port-forward svc/argocd-server -n argocd 8080:80


Enter fullscreen mode Exit fullscreen mode

kubectl port-forward
Now, open your browser and navigate to localhost:8080. You should see the ArgoCD login page.

The default username is admin. Retrieve the password from the secret using:



kubectl get secrets argocd-initial-admin-secret -o yaml -n argocd


Enter fullscreen mode Exit fullscreen mode

kubectl get secrets
Copy the password and decode it with the base64 utility:



echo "copied_password_here" | base64 -d


Enter fullscreen mode Exit fullscreen mode

echo
Now, paste the decoded password without the % sign at the end into the password field on the login page.

Voila! You've successfully deployed ArgoCD on Minikube.


Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more