Assumptions:
Linux host env is arbitary App is intended to be deployed with argocd
Purpose:
To demonstrate a simple Ruby Rails hello world implimentation with helm argocd and nginx-ingress.
Prerequisites:
Install Docker: https://docs.docker.com/engine/install/ubuntu/ Install Minikube: https://minikube.sigs.k8s.io/docs/start/ Install Ruby: https://www.ruby-lang.org/en/documentation/installation/ Install Helm: https://helm.sh/docs/intro/install/
-
Build a simple Rails apps https://guides.rubyonrails.org/getting_started.html
-
Set docker env for minikube and build docker container eval $(minikube docker-env) docker build -t ruby-hello-world .
-
Start minikube cluster (see pre-req for details) Minikube Start
-
Get minikube ip minikube ip
-
Create helm chart and configure parameters https://helm.sh/docs/helm/helm_create/ *be sure to update ingres.host.hosts in values.yaml with correct nip.io hostname based off step 4 host: 192-168-49-2.nip.io
-
Upddate application.rb for your app to allow the .nip.io subdomain (section 3.5) https://guides.rubyonrails.org/configuring.html
-
Deploy nginx-ingress ingress-nginx
-
Create app namespace kubectl create namespace ruby-hello-world
-
Deploy argocd: kubectl create namespace argocd kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
-
Obtain argocd admin password kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
-
Access argocd ui kubectl port-forward svc/argocd-server -n argocd 8081:80
-
Deploy the app with argocd https://argo-cd.readthedocs.io/en/stable/getting_started/
-
Connect to ui with nip.io dns name from step 6 in a browser