All Projects → stefanprodan → Podinfo

stefanprodan / Podinfo

Licence: apache-2.0
Go microservice template for Kubernetes

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Podinfo

Devspace
DevSpace - The Fastest Developer Tool for Kubernetes ⚡ Automate your deployment workflow with DevSpace and develop software directly inside Kubernetes.
Stars: ✭ 2,559 (+98.83%)
Mutual labels:  microservice, helm
Refarch Cloudnative Kubernetes
Reference Implementation for Microservices based on Kubernetes and the IBM Container Service.
Stars: ✭ 115 (-91.06%)
Mutual labels:  microservice, helm
Microdot
Microdot: An open source .NET microservices framework
Stars: ✭ 1,222 (-5.05%)
Mutual labels:  microservice
Reverse Shell
Reverse Shell as a Service
Stars: ✭ 1,281 (-0.47%)
Mutual labels:  microservice
Helm Www
The Helm website for docs, blog and project info.
Stars: ✭ 85 (-93.4%)
Mutual labels:  helm
Butterfly
🔥 蝴蝶--【简单】【稳定】【好用】的 Python web 框架🦋 除 Python 2.7,无其他依赖; 🦋 butterfly 是一个 RPC 风格 web 框架,同时也是微服务框架,自带消息队列通信机制实现分布式
Stars: ✭ 82 (-93.63%)
Mutual labels:  microservice
Kaufmann ex
Kafka backed service library.
Stars: ✭ 86 (-93.32%)
Mutual labels:  microservice
Docker Nginx Image Proxy
on the fly image cropping with gravity, resize and compression microservice
Stars: ✭ 79 (-93.86%)
Mutual labels:  microservice
Springboot Registration Login Theperfectexample
Login & Signup tutorial for every website ,mixes a lot of microservices together with the latest spring framework api in combined with full security
Stars: ✭ 89 (-93.08%)
Mutual labels:  microservice
Loopback4 Example Microservices
Deprecated - please use https://github.com/strongloop/loopback4-example-shopping/tree/master/kubernetes
Stars: ✭ 84 (-93.47%)
Mutual labels:  microservice
Datakernel
Alternative Java platform, built from the ground up - with its own async I/O core and DI. Ultra high-performance, simple and minimalistic - redefines server-side programming, web-development and highload!
Stars: ✭ 87 (-93.24%)
Mutual labels:  microservice
Rabbitevents
Nuwber's events provide a simple observer implementation, allowing you to listen for various events that occur in your current and another application. For example, if you need to react to some event published from another API.
Stars: ✭ 84 (-93.47%)
Mutual labels:  microservice
Monday
⚡️ A dev tool for microservice developers to run local applications and/or forward others from/to Kubernetes SSH or TCP
Stars: ✭ 1,246 (-3.19%)
Mutual labels:  microservice
Lile
Easily generate gRPC services in Go ⚡️
Stars: ✭ 1,271 (-1.24%)
Mutual labels:  microservice
Github
GitHub API as an Open Microservice
Stars: ✭ 81 (-93.71%)
Mutual labels:  microservice
Helm Charts
Kubernetes Helm Charts for the Center for Open Science
Stars: ✭ 88 (-93.16%)
Mutual labels:  helm
Armada
This project has moved to OpenStack.
Stars: ✭ 79 (-93.86%)
Mutual labels:  helm
Solid Email Microservice
Learn the SOLID design principles by building a robust email microservice
Stars: ✭ 84 (-93.47%)
Mutual labels:  microservice
Kube Tools
Kubernetes tools for GitHub Actions CI
Stars: ✭ 86 (-93.32%)
Mutual labels:  helm
Workflow
The open source PaaS for Kubernetes.
Stars: ✭ 1,291 (+0.31%)
Mutual labels:  helm

podinfo

e2e test cve-scan Go Report Card Docker Pulls

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

Specifications:

  • Health checks (readiness and liveness)
  • Graceful shutdown on interrupt signals
  • File watcher for secrets and configmaps
  • Instrumented with Prometheus
  • Tracing with Istio and Jaeger
  • Linkerd service profile
  • Structured logging with zap
  • 12-factor app with viper
  • Fault injection (random errors and latency)
  • Swagger docs
  • Helm and Kustomize installers
  • End-to-End testing with Kubernetes Kind and Helm
  • Kustomize testing with GitHub Actions and Open Policy Agent
  • Multi-arch container image with Docker buildx and Github Actions
  • CVE scanning with trivy

Web API:

  • GET / prints runtime information
  • GET /version prints podinfo version and git commit hash
  • GET /metrics return 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 /status/{code} returns the status code
  • GET /panic crashes the process with exit code 255
  • POST /echo forwards the call to the backend service and echos the posted content
  • GET /env returns the environment variables as a JSON array
  • GET /headers returns a JSON with the request HTTP headers
  • GET /delay/{seconds} waits for the specified period
  • POST /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/validate
  • GET /configs returns a JSON with configmaps and/or secrets mounted in the config volume
  • POST/PUT /cache/{key} saves the posted content to Redis
  • GET /cache/{key} returns the content from Redis if the key exists
  • DELETE /cache/{key} deletes the key from Redis if exists
  • POST /store writes the posted content to disk at /data/hash and returns the SHA1 hash of the content
  • GET /store/{hash} returns the content of the file /data/hash if exists
  • GET /ws/echo echos content via websockets podcli ws ws://localhost:9898/ws/echo
  • GET /chunked/{seconds} uses transfer-encoding type chunked to give a partial response and then waits for the specified period
  • GET /swagger.json returns the API Swagger docs, used for Linkerd service profiling and Gloo routes discovery

gRPC API:

  • /grpc.health.v1.Health/Check health checking

Web UI:

podinfo-ui

To access the Swagger UI open <podinfo-host>/swagger/index.html in a browser.

Guides

Install

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].