showReadiness
A simple golang application to explore liveness and readiness checks in Kubernetes.
Explanation
The showreadiness
program will respond to requests on port 80 locally, port
6080 externally, with text indicating it is handling traffic. With that
response, there is a header called responding-pod
which contains the name of
the pod (its hostname).
Calling /makeNotReady
will disable traffic processing for whichever host
handled the request. Using this endpoint, we can stop traffic to each pod, and
then restore it using the /makeReady
endpoint directly (via accessing the pod
over localhost
).
To build
In the cloned directory, run the following:
Linux/OSX
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -installsuffix netgo -ldflags '-w -s' .
Windows
$env:CGO_ENABLED=0; $env:GOOS="linux"; $env:GOARCH="amd64";
go build -a -tags netgo -installsuffix netgo -ldflags "-s"
Don't forget to unset the variables when you're done!
Remove-Item env:CGO_ENABLED; Remove-Item env:GOOS; Remove-Item env:GOARCH;
Using only Docker (no Go compiler)
Assuming docker is installed, run the folowing in the checked-out directory:
docker run --rm -v $PWD:/go/src/github.com/tydavis/showreadiness \
-w /go/src/github.com/tydavis/showreadiness golang:alpine /bin/sh \
-c "CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -tags netgo -installsuffix netgo -ldflags '-w -s' . "