Podinfo is a tiny web application made with Go that showcases best practices of running microservices in Kubernetes.
Specifications:
Web API:
GET / prints runtime informationGET /version prints podinfo version and git commit hashGET /metrics return HTTP requests duration and Go runtime metricsGET /healthz used by Kubernetes liveness probeGET /readyz used by Kubernetes readiness probePOST /readyz/enable signals the Kubernetes LB that this instance is ready to receive trafficPOST /readyz/disable signals the Kubernetes LB to stop sending requests to this instanceGET /status/{code} returns the status codeGET /panic crashes the process with exit code 255POST /echo forwards the call to the backend service and echos the posted contentGET /env returns the environment variables as a JSON arrayGET /headers returns a JSON with the request HTTP headersGET /delay/{seconds} waits for the specified periodPOST /token issues a JWT token valid for one minute JWT=$(curl -sd 'anon' podinfo:9898/token | jq -r .token)GET /token/validate validates the JWT token curl -H "Authorization: Bearer $JWT" podinfo:9898/token/validateGET /configs returns a JSON with configmaps and/or secrets mounted in the config volumePOST/PUT /cache/{key} saves the posted content to RedisGET /cache/{key} returns the content from Redis if the key existsDELETE /cache/{key} deletes the key from Redis if existsPOST /store writes the posted content to disk at /data/hash and returns the SHA1 hash of the contentGET /store/{hash} returns the content of the file /data/hash if existsGET /ws/echo echos content via websockets podcli ws ws://localhost:9898/ws/echoGET /chunked/{seconds} uses transfer-encoding type chunked to give a partial response and then waits for the specified periodGET /swagger.json returns the API Swagger docs, used for Linkerd service profiling and Gloo routes discoverygRPC API:
/grpc.health.v1.Health/Check health checkingWeb UI:

To access the Swagger UI open <podinfo-host>/swagger/index.html in a browser.
Helm:
helm repo add podinfo https://stefanprodan.github.io/podinfo
helm upgrade --install --wait frontend \
--namespace test \
--set replicaCount=2 \
--set backend=http://backend-podinfo:9898/echo \
podinfo/podinfo
# Test pods have hook-delete-policy: hook-succeeded
helm test frontend
helm upgrade --install --wait backend \
--namespace test \
--set hpa.enabled=true \
podinfo/podinfo
Kustomize:
kubectl apply -k github.com/stefanprodan/podinfo//kustomize
Docker:
docker run -dp 9898:9898 stefanprodan/podinfo
Content type
Image
Digest
Size
25.9 MB
Last updated
about 6 years ago
docker pull hirokimatsumoto/podinfo