# Values reference

> Every value in the hello-kubernetes Helm chart, with its type, default and what it does.

Helm checks these against the chart’s `values.schema.json` on every install and upgrade, so a misspelled key or a wrong type stops the install. To see them from the chart itself, run `helm show values oci://ghcr.io/paulbouwer/charts/hello-kubernetes`. For the values most people change, the [config builder](https://paulbouwer.github.io/hello-kubernetes/docs/configure/builder.md) writes the command or the file for you.

| Value | Type | Default | Description |
| - | - | - | - |
| `message` | string | `""` | A message to show instead of **Hello world!**. It must be a string: quote it in a values file, or use `--set-string`. |
| `pathPrefix` | string | `""` | Serve the app under a path prefix, such as `/app/hello`, behind an Ingress, an HTTPRoute or your own proxy. Leading and trailing slashes are optional. |
| `rewritePath` | bool | `true` | `false` (recommended): the proxy passes the prefix on, and the app serves under it. `true`: the proxy strips the prefix, and the app serves at `/`. See [path prefixes and rewriting](https://paulbouwer.github.io/hello-kubernetes/docs/deploy/ingress.md#path-prefixes-and-rewriting). |
| `ingress.enabled` | bool | `false` | Create a `networking.k8s.io/v1` Ingress for `pathPrefix`. |
| `ingress.className` | string | `""` | The Ingress class, such as `nginx` or `traefik`. Empty uses the cluster’s default class. |
| `ingress.annotations` | object | `{}` | Annotations for the Ingress, such as your controller’s rewrite annotation when `rewritePath` is `true`. |
| `ingress.host` | string | `""` | The host name for the Ingress rule. Empty matches all hosts, but the NGINX Ingress Controller needs a host. |
| `ingress.tls` | list | `[]` | The Ingress TLS settings, as in the Ingress `spec.tls` field. |
| `httpRoute.enabled` | bool | `false` | Create a Gateway API `HTTPRoute` for `pathPrefix`. With `rewritePath` `true`, it strips the prefix with the standard `URLRewrite` filter. |
| `httpRoute.parentRefs` | list | `[]` | The Gateways to attach to. Required when `httpRoute.enabled` is `true`. |
| `httpRoute.hostnames` | list | `[]` | The host names for the route. Empty matches the Gateway’s host names. |
| `service.type` | string | `LoadBalancer` | `ClusterIP`, `NodePort` or `LoadBalancer`. Use `ClusterIP` behind an Ingress or a Gateway. |
| `service.port` | int | `80` | The port the Service exposes. |
| `deployment.replicaCount` | int | `2` | The number of pods. |
| `deployment.container.image.repository` | string | `paulbouwer/hello-kubernetes` | The image, such as `ghcr.io/paulbouwer/hello-kubernetes`. |
| `deployment.container.image.tag` | string or number | `""` | The image tag, such as `1`, `1.11` or `1.11.0`. Empty uses the chart’s `appVersion`. In a values file, quote it: YAML reads `1.10` as the number 1.1. |
| `deployment.container.image.pullPolicy` | string | `IfNotPresent` | `Always`, `IfNotPresent` or `Never`. |
| `deployment.container.port` | int | `8080` | The port the app listens on. The probes and the Service follow it. |
| `deployment.container.securityContext` | object | no privilege escalation, all capabilities dropped, read-only root filesystem | The container security context. With `deployment.podSecurityContext`, it meets the restricted Pod Security Standard. |
| `deployment.podSecurityContext` | object | `runAsNonRoot`, user and group `1000`, `RuntimeDefault` seccomp | The pod security context. |
| `deployment.nodeSelector` | object | `kubernetes.io/os: linux` | The node selector. The image runs on `amd64` and `arm64` nodes. |
| `deployment.resources` | object | `{}` | The container resource requests and limits. |
| `deployment.tolerations` | list | `[]` | The pod tolerations. |
| `deployment.affinity` | object | `{}` | The pod affinity. |
| `ingress.configured`, `ingress.pathPrefix`, `ingress.rewritePath` | | | Deprecated. They still work in 1.x, and the install notes list them. Use `pathPrefix` and `rewritePath`. They are removed in 2.0. |
