What the chart creates
Withingress.host: tembo.example.com:
- The internal Services carry their DNS name in an
external-dns.kubernetes.io/hostnameannotation. - The Postgres and Redis Services exist only with the bundled data stores and
compute.mode: controller. - Previews are on by default from chart 0.6.0, with Tembo releases later than 0.2.892. To turn them off, set
sandbar.enabled: false.
What you set up
1. An Ingress controller
It turns both Ingresses into load balancers, so users and webhooks can reach Tembo. Setingress.className and any ingress.annotations your controller needs. The previews’ Ingress gets the same ones.
On AWS or GKE, turn on ingress.aws or ingress.gcp instead of writing annotations. Both take the same settings, and the chart turns them into that cloud’s configuration:
2. DNS
Every name in the table must resolve to its load balancer: browsers find Tembo by name, and agent hosts find Sandbar, Postgres and Redis by name.- With external-dns: it reads the Ingresses’ hosts and the Services’ annotations and creates the records.
- Without it: create the records yourself once the load balancers exist (
kubectl -n tembo get ingress,svc).
3. TLS certificates
Tembo is served over HTTPS, so you need two certificates:tembo.example.com*.previews.tembo.example.com. A*.example.comcertificate doesn’t cover it.
- Name the app’s Secret in
ingress.tls.secretName. The previews’ Secret is alwaystembo-previews-tls. On GKE, only previews need one. - Add a
cert-manager.io/cluster-issuerannotation toingress.annotations. - Wildcards need a ClusterIssuer that uses DNS-01.
Examples
ingress.aws and ingress.gcp need a chart released after 0.6.0. Before it, GKE used ingress.gke.enabled.
EKS
We use the AWS Load Balancer Controller (EKS Auto Mode), external-dns and ACM.- Load balancers:
ingress.awsmakes each Ingress an internet-facing ALB with an HTTPS redirect, and sets its health checks. On EKS Auto Mode, internal load balancers need theeks.amazonaws.com/nlbclass. The module’s Helm values set it for Postgres and Redis, and Sandbar uses the same one. - Certificates: request ACM certificates for
tembo.example.comand*.previews.tembo.example.comin the cluster’s region. The ALB finds them by name, or list their ARNs iningress.aws.certificates. It can’t use Kubernetes Secrets, so cert-manager doesn’t apply here.
GKE
We use GKE’s built-in Ingress, external-dns and cert-manager, with a Let’s Encrypt ClusterIssuer that solves DNS-01 in Cloud DNS.- Load balancers:
ingress.gcpsets up both Ingresses for GKE, with health checks and the HTTPS redirect. To serve on a reserved IP, add akubernetes.io/ingress.global-static-ip-nameannotation. - Certificates: GKE gives
tembo.example.coma Google-managed certificate. Those can’t be wildcards, so cert-manager issues*.previews.tembo.example.comintotembo-previews-tls. Use your ClusterIssuer’s name in the annotation.