This repository offers a simplistic Go app along with resources useful for deploying the app to Kubernetes.
The Go application exposes 2 endpoints:
/health
: Responds with HTTP 200, useful for talking to Kubernetes Readiness Probes./version
: Exposes the version number of the application, which is set as a constant.
#To build Version 1
docker build --build-arg version=1.0 -t canary:1.0 .
#To build Version 2
docker build --build-arg version=2.0 -t canary:2.0 .
minikube addons enable ingress
kubectl --namespace=ingress-test run echoserver --image=gcr.io/google_containers/echoserver:1.4 --port=8080
kubectl --namespace=ingress-test expose deployment echoserver --type=NodePort
minikube --namespace=ingress-test service echoserver
kubectl --namespace=ingress-test apply -f app-production.yml
minikube --namespace=ingress-test service kubeapp-production-service
kubectl --namespace=ingress-test apply -f app-ingress-production.yml
kubectl --namespace=ingress-test apply -f app-canary.yml
minikube --namespace=ingress-test service kubeapp-production-service
kubectl --namespace=ingress-test apply -f app-ingress-canary.yml
minikube ssh
$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 minikube
127.0.0.1 myapp.sgune
127.0.0.1 canary.foo.bar
127.0.0.1 foo.bar
$ curl myapp.sgune/version
Congratulations! Version 1.0 of your application is running on Kubernetes.
$ curl foo.bar
Congratulations! Version 1.0 of your application is running on Kubernetes.
$ curl canary.foo.bar
Congratulations! Version 2.0 of your application is running on Kubernetes.