Skip to content

samgabrail/env0-argocd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

In this demo we will learn the basics of ArgoCD

Install the School App

# Setup MongoDB DB in K8s
kubectl create ns schoolapp
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install schoolapp-mongodb --namespace schoolapp \
 --set auth.enabled=true \
 --set auth.rootUser=schoolapp \
 --set auth.rootPassword=mongoRootPass \
  bitnami/mongodb

# Add project repo to helm
helm repo add schoolapp https://gitlab.com/api/v4/projects/34240616/packages/helm/stable

# Install the Frontend
helm install frontend -n schoolapp schoolapp/schoolapp-frontend
# Install the API
helm install api -n schoolapp schoolapp/schoolapp-api
# Port forward the frontend
kubectl -n schoolapp port-forward service/frontend 8001:8080
# Port forward the api
kubectl -n schoolapp port-forward service/api 5000:5000

Test the School App

From a browser, go to http://127.0.0.1:8001

ArgoCD Setup

Now let's get ArgoCD ready for our school app.

Install ArgoCD

Install the ArgoCD Server

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

Wait until all the pods are running

watch kubectl get po

Access ArgoCD

Expose the ArgoCD API Server

kubectl port-forward svc/argocd-server -n argocd 8002:443

Get the admin password

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo

For this demo, I won't change the password, but you should go ahead and change the password and remove the K8s secret.

Login using the UI

You can log in to the UI by opening a browser window and going to https://127.0.0.1:8002

username: admin
password: <THE_PASSWORD_YOU_GOT_ABOVE>

School App Example with ArgoCD and Hardcoded Secrets

Now let's see how to use a GitOps approach with ArgoCD to run our school app.

Delete the Current School App

kubectl delete ns schoolapp

Create the School App Application in ArgoCD

kubectl apply -f argocdSchoolApp.yaml

Test the School App with ArgoCD

# Port forward the frontend
kubectl port-forward service/frontend 8001:8080 -n schoolapp
# Port forward the api
kubectl port-forward service/api 5000:5000 -n schoolapp

Try creating and deleting a course and check the logs of the api pod.

kubectl logs -n schoolapp -f $(kubectl get pods --template '{{range .items}}{{.metadata.name}}{{end}}' --selector=app=api) -c api

Making a Change in Git

Now let's see how Argo CD can detect drift between the live state and the target state. Let's make a simple change in our Git repo for the called schoolapp-subchart/values.yaml. Change the mongodb.auth.enabled value from true to false.

mongodb:
  auth:
    enabled: false
    rootUser: 'schoolapp'
    rootPassword: 'mongoRootPass'

Then commit and push your changes.

About

Basics of ArgoCD

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages