Skip to content
Rendered Resources

Rendered Resources

This page maps each template in the chart to the object it produces. It is checked against charts/github-sts/templates on every pull request, so a template that exists is listed here.

Render the set yourself for any values file before applying it:

helm template github-sts charts/github-sts --values values.yaml

Always rendered

TemplateKindNotes
deployment.yamlapps/v1 DeploymentThe server. Carries a checksum/config pod annotation, so any change to the rendered configuration rolls the pods rather than leaving them on stale config.
configmap.yamlv1 ConfigMapThe server configuration, mounted read-only at /etc/github-sts/config.yaml and located by the GITHUBSTS_CONFIG_PATH environment variable. Named {fullname}-config.
service.yamlv1 ServiceFronts the pods on service.port, targeting the container’s named port. That name is http, or https with appProtocol: https when tls.enabled is on.
secret.yamlnoneRenders nothing. The file is a placeholder recording that the chart deliberately does not create a Secret: every GitHub App private key comes from an existingSecret you own.

Conditionally rendered

TemplateKindRendered when
serviceaccount.yamlv1 ServiceAccountserviceAccount.create is true. Set serviceAccount.name and turn create off to reuse an existing account.
poddisruptionbudget.yamlpolicy/v1 PodDisruptionBudgetpdb.enabled is true, which is the default. Uses minAvailable, or maxUnavailable when only that is set, and falls back to minAvailable: 1.
hpa.yamlautoscaling/v2 HorizontalPodAutoscalerautoscaling.enabled is true. The Deployment then omits replicas, so replicaCount no longer applies.
ingress.yamlnetworking.k8s.io/v1 Ingressingress.enabled is true.
httproute.yamlgateway.networking.k8s.io/v1 HTTPRoutehttproute.enabled is true. Requires the Gateway API CRDs.
networkpolicy.yamlnetworking.k8s.io/v1 NetworkPolicynetworkPolicy.native.enabled is true.
ciliumnetworkpolicy.yamlcilium.io/v2 CiliumNetworkPolicynetworkPolicy.cilium.enabled is true. Requires the Cilium CRD.
servicemonitor.yamlmonitoring.coreos.com/v1 ServiceMonitorserviceMonitor.enabled is true. Requires the Prometheus Operator CRDs. Scrapes with scheme: https when tls.enabled is on.
podmonitor.yamlmonitoring.coreos.com/v1 PodMonitorpodMonitor.enabled is true. Requires the Prometheus Operator CRDs. Scrapes with scheme: https when tls.enabled is on.

Test hooks

These are helm.sh/hook: test Pods. They are created by helm test, not by helm install, and are deleted on success and before the next run. All three run tests.image and follow tls.enabled, fetching over HTTPS without verifying the certificate. None of them render when tests.enabled is false, or when tls.clientAuth.enabled is on, because a hook Pod has no client certificate to present.

TemplatePodAsserts
tests/test-connection.yaml{fullname}-test-health/health returns HTTP 200 with {"status":"ok"}.
tests/test-readiness.yaml{fullname}-test-ready/ready returns HTTP 200.
tests/test-metrics.yaml{fullname}-test-metrics/metrics serves Prometheus text. Rendered only when metrics.enabled is true.

A NetworkPolicy that denies in-cluster ingress also denies the test Pods. Add their namespace to networkPolicy.native.from or networkPolicy.cilium.fromEndpoints if you want helm test to keep working under a policy.

The pod

The Deployment renders one container with a fixed shape.

MountSourceWhy
/etc/github-stsConfigMap, read-onlyThe server configuration file.
/etc/github-sts/apps/{app}Secret, read-onlyOne mount per github.apps entry, projecting only the configured private key.
tls.mountPathProjected Secret, read-onlyRendered only when tls.enabled is true. Projects the serving certificate and key, plus the client CA bundle under clientAuth, from one or two Secrets into a single mount. Defaults to /etc/github-sts-tls, a directory of its own rather than a path under the configuration mount above.
/tmpemptyDirThe root filesystem is read-only, so scratch space has to be a volume.
Parent of audit.filePathemptyDir, 100 MiBRendered only when audit.fileEnabled is true. Deleted with the pod, so ship the stream off-node if you need it to survive.

The container listens on service.targetPort as the named port http, or https when tls.enabled is on, and serves:

PathUsed by
/sts/exchangeClients exchanging an OIDC token.
/healthThe liveness probe and the test-health hook.
/readyThe readiness probe, the startup probe, and the test-ready hook.
/metricsPrometheus, the monitors, and the test-metrics hook. Rendered only when metrics.enabled is true.

Under tls.clientAuth.enabled the kubelet stops using those paths: the probes become tcpSocket checks on the same port, because they cannot present a client certificate. See TLS and mTLS.

Labels

Every object carries the standard recommended labels — app.kubernetes.io/name, instance, version, managed-by, and helm.sh/chart — plus anything in commonLabels. Selector labels are name and instance only, so adding a commonLabels entry does not change the selector and does not orphan running pods.

Next