Temporal Server
| Channel | Revision | Published | Runs on |
|---|---|---|---|
| latest/stable | 43 | 28 Jan 2025 | |
| latest/edge | 52 | 08 Aug 2025 | |
| 1.23/edge | 59 | 08 Oct 2025 |
juju deploy temporal-k8s
Deploy Kubernetes operators easily with Juju, the Universal Operator Lifecycle Manager. Need a Kubernetes cluster? Install MicroK8s to create a full CNCF-certified Kubernetes system in under 60 seconds.
Platform:
Configure ingress with Nginx Ingress Integrator
Charmed Temporal components can be exposed through an ingress solution to make them available to clients outside the cluster and to handle TLS termination.
In the Charming ecosystem, the Nginx Ingress Integrator
operator allows different applications to request Ingress resources from an underlying ingress controller.
Enable ingress
Requirements
To follow this guide, consider having a Kubernetes cluster with the following configured:
- Ingress controller: If using any Kubernetes (K8s), the nginx ingress controller can be installed; if using MicroK8s, the
ingressaddon should suffice. - LoadBalancer: If using K8s, the default LoadBalancer works; on MicroK8s, the
metallbaddon should suffice. - Temporal Command Line Interface (CLI) snap.
The nginx-ingress-integrator only allows one integration per ingress and nginx-route integration.
Charmed Temporal is not designed to share the same integrator instance, and thus, an integrator
charm per application must be deployed.
See Support multiple relations for more details.
Expose the Temporal Server
- Deploy the integrator charm:
juju deploy nginx-ingress-integrator temporal-server-ingress --trust
- Check your cluster’s
IngressClass:
kubectl get ingressclass
NAME CONTROLLER PARAMETERS AGE
nginx k8s.io/ingress-nginx <none> 12d
- Configure the integrator’s
ingress-classusing the name from the previous step:
juju config temporal-server-ingress ingress-class nginx
- Configure
backend-protocol. Temporal server, specifically its frontend, is agRPCserver:
juju config temporal-server-ingress backend-protocol GRPC
- Integrate and configure:
juju config temporal-k8s tls-secret-name=""
juju integrate temporal-k8s temporal-server-ingress
- Connect with clients. Assuming a
LoadBalanceris enabled, and because the Temporal Server works with host-based routing, DNS resolution must be set up. For example:
cat /etc/hosts/
[...]
<LOADBALANCER-IP> temporal-k8s
temporal operator namespace list --address temporal-k8s:80
[...]
Expose Temporal UI
- Deploy the integrator charm:
juju deploy nginx-ingress-integrator temporal-ui-ingress --trust
- Check your cluster’s
IngressClass:
kubectl get ingressclass
NAME CONTROLLER PARAMETERS AGE
nginx k8s.io/ingress-nginx <none> 12d
- Configure the integrator’s
ingress-classusing the name from the previous step:
juju config temporal-server-ingress ingress-class nginx
- Configure the integrator’s
backend-protocol:
juju config temporal-ui-ingress backend-protocol HTTP
- Integrate:
juju config temporal-ui-k8s tls-secret-name=""
juju integrate temporal-ui-k8s temporal-ui-ingress
- Access the Temporal UI on a web browser. Assuming a
LoadBalanceris enabled, and because of Temporal’s host-based routing, DNS resolution must be set up. For example:
cat /etc/hosts/
[...]
<LOADBALANCER-IP> temporal-ui-k8s
http://temporal-ui-k8s:80/
Enable TLS termination at ingress
The integrator charm provides a way to perform TLS termination at ingress in conjunction with the ecosystem’s TLS providers. Please refer to Security with X.509 certificates to understand the different certificate use cases and choose the solution that best fits each one.
Temporal Server
- Reconfigure the integrator charm for a secured backend:
juju config temporal-server-ingress backend-protocol GRPCS
- Integrate the integrator charm with a TLS certificate provider:
juju integrate temporal-server-ingress <tls-certificate-provider>
- Get the Certificate Authority (CA) certificate from the TLS certificate provider charm and use it in further requests. For example, using the temporal CLI snap:
temporal operator namespace list --address temporal-k8s:443 --tls-ca-path <path to CA cert>
Temporal UI
- Reconfigure the integrator charm for a secured backend:
juju config temporal-ui-ingress backend-protocol HTTPS
- Integrate the integrator charm with a TLS certificate provider:
juju integrate temporal-ui-ingress <tls-certificate-provider>
- Use
httpswhen browsing, and configure certificate trust settings as needed.