GitHub - stefanprodan/podinfo: Go microservice template for Kubernetes (original) (raw)

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. Podinfo is used by CNCF projects like Flux and Flaggerfor end-to-end testing and workshops.

Specifications:

Web API:

gRPC API:

Web UI:

podinfo-ui

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

Guides

Install

To install Podinfo on Kubernetes the minimum required version is Kubernetes v1.23.

Timoni

Install with Timoni:

timoni -n default apply podinfo oci://ghcr.io/stefanprodan/modules/podinfo

Helm

Install from github.io:

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

helm test frontend --namespace test

helm upgrade --install --wait backend
--namespace test
--set redis.enabled=true
podinfo/podinfo

Install from ghcr.io:

helm upgrade --install --wait podinfo --namespace default
oci://ghcr.io/stefanprodan/charts/podinfo

Kustomize

kubectl apply -k github.com/stefanprodan/podinfo//kustomize

Docker

docker run -dp 9898:9898 stefanprodan/podinfo

Continuous Delivery

In order to install podinfo on a Kubernetes cluster and keep it up to date with the latest release in an automated manner, you can use Flux.

Install the Flux CLI on MacOS and Linux using Homebrew:

brew install fluxcd/tap/flux

Install the Flux controllers needed for Helm operations:

flux install
--namespace=flux-system
--network-policy=false
--components=source-controller,helm-controller

Add podinfo's Helm repository to your cluster and configure Flux to check for new chart releases every ten minutes:

flux create source helm podinfo
--namespace=default
--url=https://stefanprodan.github.io/podinfo
--interval=10m

Create a podinfo-values.yaml file locally:

cat > podinfo-values.yaml <<EOL replicaCount: 2 resources: limits: memory: 256Mi requests: cpu: 100m memory: 64Mi EOL

Create a Helm release for deploying podinfo in the default namespace:

flux create helmrelease podinfo
--namespace=default
--source=HelmRepository/podinfo
--release-name=podinfo
--chart=podinfo
--chart-version=">5.0.0"
--values=podinfo-values.yaml

Based on the above definition, Flux will upgrade the release automatically when a new version of podinfo is released. If the upgrade fails, Flux can rollbackto the previous working version.

You can check what version is currently deployed with:

flux get helmreleases -n default

To delete podinfo's Helm repository and release from your cluster run:

flux -n default delete source helm podinfo flux -n default delete helmrelease podinfo

If you wish to manage the lifecycle of your applications in a GitOps manner, check out this workflow examplefor multi-env deployments with Flux, Kustomize and Helm.