Files
podinfo/charts/podinfo

Podinfo

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.

Installing the Chart

The Podinfo charts are published to GitHub Container Registry and signed with Cosign & GitHub Actions OIDC.

To install the chart with the release name podinfo from GHCR:

$ helm upgrade -i podinfo oci://ghcr.io/stefanprodan/charts/podinfo

To verify a chart version with Cosign:

$ cosign verify ghcr.io/stefanprodan/charts/podinfo:<VERSION> \
  --certificate-oidc-issuer=https://token.actions.githubusercontent.com \
  --certificate-identity-regexp=^https://github\\.com/stefanprodan/podinfo/.*$

Alternatively, you can install the chart from GitHub pages:

$ helm repo add stefanprodan https://stefanprodan.github.io/podinfo

$ helm upgrade -i podinfo stefanprodan/podinfo

The command deploys podinfo on the Kubernetes cluster in the default namespace. The configuration section lists the parameters that can be configured during installation.

Uninstalling the Chart

To uninstall the podinfo release:

$ helm uninstall podinfo

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

The following tables lists the configurable parameters of the podinfo chart and their default values.

Parameter Default Description
replicaCount 1 Desired number of pods
logLevel info Log level: debug, info, warn, error
backend None Echo backend URL
backends [] Array of echo backend URLs
cache None Redis address in the format tcp://<host>:<port>
redis.enabled false Create Redis deployment for caching purposes
redis.repository docker.io/redis Redis image repository
redis.tag <VERSION> Redis image tag
redis.imagePullSecrets [] Redis image pull secrets
ui.color #34577c UI color
ui.message None UI greetings message
ui.logo None UI logo
faults.delay false Random HTTP response delays between 0 and 5 seconds
faults.error false 1/3 chances of a random HTTP response error
faults.unhealthy false When set, the healthy state is never reached
faults.unready false When set, the ready state is never reached
faults.testFail false When set, a helm test is included which always fails
faults.testTimeout false When set, a helm test is included which always times out
image.repository ghcr.io/stefanprodan/podinfo Image repository
image.tag <VERSION> Image tag
image.pullPolicy IfNotPresent Image pull policy
image.pullSecrets [] Image pull secrets
service.enabled true Create a Kubernetes Service, should be disabled when using Flagger
service.type ClusterIP Type of the Kubernetes Service
service.metricsPort 9797 Prometheus metrics endpoint port
service.httpPort 9898 Container HTTP port
service.externalPort 9898 ClusterIP HTTP port
service.grpcPort 9999 ClusterIP gPRC port
service.grpcService podinfo gPRC service name
service.nodePort 31198 NodePort for the HTTP endpoint
service.trafficDistribution "" Traffic distribution strategy
service.additionalLabels {} Additional labels to add to the service
service.externalTrafficPolicy None External traffic policy for LoadBalance service
h2c.enabled false Allow upgrading to h2c (non-TLS version of HTTP/2)
extraArgs [] Additional command line arguments to pass to podinfo container
extraEnvs [] Extra environment variables for the podinfo container
config.path "" config file path
config.name "" config file name
hpa.enabled false Enables the Kubernetes HPA
hpa.maxReplicas 10 Maximum amount of pods
hpa.cpu None Target CPU usage per pod
hpa.memory None Target memory usage per pod
hpa.requests None Target HTTP requests per second per pod
serviceAccount.enabled false Whether a service account should be created
serviceAccount.name None The name of the service account to use, if not set a name is generated using the fullname template
serviceAccount.imagePullSecrets [] List of image pull secrets if pulling from private registries
securityContext {} The security context to be set on the podinfo container
podSecurityContext {} The security context to be set on the pod
podAnnotations {} Pod annotations
serviceMonitor.enabled false Whether a Prometheus Operator service monitor should be created
serviceMonitor.interval 15s Prometheus scraping interval
serviceMonitor.additionalLabels {} Add additional labels to the service monitor
ingress.enabled false Enables Ingress
ingress.className "" Use ingressClassName
ingress.additionalLabels {} Add additional labels to the ingress
ingress.annotations {} Ingress annotations
ingress.hosts [] Ingress accepted hosts
ingress.tls [] Ingress TLS configuration
httpRoute.enabled false Enables Gateway API HTTPRoute
httpRoute.additionalLabels {} Add additional labels to the HTTPRoute
httpRoute.annotations {} HTTPRoute annotations
httpRoute.parentRefs [] Gateways that this route is attached to
httpRoute.hostnames ["podinfo.local"] Hostnames matching HTTP header
httpRoute.rules [] List of rules and filters applied
hooks.<hookType>.job.enabled false Create a Helm hook job for testing (hookType: see values.yaml for available hooks)
hooks.<hookType>.job.hookDeletePolicy hook-succeeded,hook-failed Helm hook delete policy
hooks.<hookType>.job.ttlSecondsAfterFinished None Job TTL after finished
hooks.<hookType>.job.sleepSeconds None Sleep duration before job exits
hooks.<hookType>.job.exitCode 0 Job exit code
resources.requests.cpu 1m Pod CPU request
resources.requests.memory 16Mi Pod memory request
resources.limits.cpu None Pod CPU limit
resources.limits.memory None Pod memory limit
nodeSelector {} Node labels for pod assignment
tolerations [] List of node taints to tolerate
affinity None Node/pod affinities
priorityClassName "" Pod priority class name

Specify each parameter using the --set key=value[,key=value] argument:

$ helm upgrade -i podinfo oci://ghcr.io/stefanprodan/charts/podinfo \
  --set=serviceMonitor.enabled=true,serviceMonitor.interval=5s

To add custom annotations you need to escape the annotation key string:

$ helm upgrade -i podinfo oci://ghcr.io/stefanprodan/charts/podinfo \
--set podAnnotations."toolkit\.fluxcd\.io\/tenant"=dev-team

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart:

$ helm upgrade -i my-release oci://ghcr.io/stefanprodan/charts/podinfo -f values.yaml