A simple Wiki web application written in Go, containerized and deployed using modern DevOps tooling including Docker, Kubernetes, GitHub Actions, Helm, and Argo CD.
✅ Go backend using net/http, HTML templates & local file storage
✅ Multi-stage Dockerfile with non-root user
✅ Minikube setup with real K8s cluster
✅ Kubernetes Deployment, Service, Ingress + NGINX Ingress Controller
✅ Domain mapping via hosts file (go-wiki.local) + minikube tunnel
✅ File permission fix using securityContext
✅ Helm Chart to package the app
✅ CI with GitHub Actions, CD via Argo CD (GitOps)
GitHub → GitHub Actions → Docker Build → Push to Repo
↓
Argo CD ← GitOps Pull
↓
Minikube or EC2 Cluster (K8s Deployment, Service, Ingress)
↓
NGINX Ingress Controller → go-wiki.local
- Go 1.18+
- Docker
- Minikube + kubectl
- Helm 3.x
- Argo CD installed on Minikube
git clone https://github.com/krrishmahar/go-wiki-devopsified.git
cd go-wiki-devopsifiedgo run main.godocker build -t gowiki .minikube start
minikube addons enable ingress
minikube tunnelkubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yamlhelm install gowiki ./chartAdd this to /etc/hosts or C:\Windows\System32\drivers\etc\hosts:
127.0.0.1 go-wiki.local
Now visit http://go-wiki.local
- GitHub Actions handles:
- Docker image build
- Helm linting
- Pushing manifests or Helm package
- Argo CD pulls from Git repo and deploys to Minikube automatically
If you learned something from this, consider leaving a ⭐!
Contributions are welcome — feel free to fork and PR!
#HappyShipping 🚢