Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Traefik | 43,295 | 18 | 10 hours ago | 160 | September 16, 2022 | 622 | mit | Go | ||
The Cloud Native Application Proxy | ||||||||||
Kong | 34,974 | 7 hours ago | 237 | apache-2.0 | Lua | |||||
🦍 The Cloud-Native API Gateway | ||||||||||
Istio | 33,089 | 7 hours ago | 639 | April 25, 2021 | 624 | apache-2.0 | Go | |||
Connect, secure, control, and observe services. | ||||||||||
Nacos | 26,585 | 118 | 56 | 16 hours ago | 53 | August 08, 2022 | 225 | apache-2.0 | Java | |
an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. | ||||||||||
Dapr | 21,302 | 38 | 8 hours ago | 411 | August 11, 2022 | 379 | apache-2.0 | Go | ||
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge. | ||||||||||
Generator Jhipster | 20,620 | 4,666 | 186 | 7 hours ago | 267 | September 02, 2022 | 289 | apache-2.0 | TypeScript | |
JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures. | ||||||||||
Jina | 18,496 | 2 | 11 hours ago | 2,019 | July 06, 2022 | 23 | apache-2.0 | Python | ||
🔮 Build multimodal AI services via cloud native technologies | ||||||||||
Microservices Demo | 14,238 | 8 hours ago | 43 | August 04, 2022 | 37 | apache-2.0 | Python | |||
Sample cloud-first application with 10 microservices showcasing Kubernetes, Istio, and gRPC. | ||||||||||
Awesome Kubernetes | 13,893 | 20 days ago | 9 | other | Shell | |||||
A curated list for awesome kubernetes sources :ship::tada: | ||||||||||
Jib | 12,818 | 10 | 8 hours ago | 21 | August 30, 2022 | 172 | apache-2.0 | Java | ||
🏗 Build container images for your Java applications. |
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 Flagger for end-to-end testing and workshops.
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/validate
GET /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/echo
GET /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.
To install Podinfo on Kubernetes the minimum required version is Kubernetes v1.23.
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
kubectl apply -k github.com/stefanprodan/podinfo//kustomize
docker run -dp 9898:9898 stefanprodan/podinfo
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 rollback to 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 example for multi-env deployments with Flux, Kustomize and Helm.