Skip to content

Go multi-arch microservice template for Kubernetes

License

Notifications You must be signed in to change notification settings

hawq-cn/k8s-podinfo

 
 

Repository files navigation

k8s-podinfo

Podinfo is a tiny web application made with Go that showcases best practices of running microservices in Kubernetes.

Specifications:

  • Release automation (Make/TravisCI/CircleCI/Quay.io/Google Cloud Container Builder/Skaffold/Weave Flux)
  • Multi-platform Docker image (amd64/arm/arm64/ppc64le/s390x)
  • Health checks (readiness and liveness)
  • Graceful shutdown on interrupt signals
  • Prometheus instrumentation (RED metrics)
  • Dependency management with golang/dep
  • Structured logging with zerolog
  • Error handling with pkg/errors
  • Helm chart

Web API:

  • GET / prints runtime information, environment variables, labels and annotations
  • GET /version prints podinfo version and git commit hash
  • GET /metrics http requests duration and Go runtime metrics
  • GET /healthz used by Kubernetes liveness probe
  • GET /readyz used by Kubernetes readiness probe
  • POST /readyz/enable signals the Kubernetes LB that this instance is ready to receive traffic
  • POST /readyz/disable signals the Kubernetes LB to stop sending requests to this instance
  • GET /error returns code 500 and logs the error
  • GET /panic crashes the process with exit code 255
  • POST /echo echos the posted content, logs the SHA1 hash of the content
  • GET /echoheaders prints the request HTTP headers
  • POST /job long running job, json body: {"wait":2}
  • POST /write writes the posted content to disk at /data/hash and returns the SHA1 hash of the content
  • POST /read receives a SHA1 hash and returns the content of the file /data/hash if exists
  • POST /backend forwards the call to the backend service on http://backend-podinfo:9898/echo

Guides

About

Go multi-arch microservice template for Kubernetes

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 63.3%
  • Smarty 23.3%
  • Makefile 13.4%