Exposes the Temporal Web UI through the Azure Application Gateway Ingress Controller (AGIC).
Prerequisites #
- An AKS cluster with the AGIC add-on enabled (
az aks enable-addons --addons ingress-appgw ...) or AGIC installed via Helm. - A DNS record pointing
temporal.example.comat the Application Gateway public IP. - A working persistence backend — combine this with
cluster-azure-postgres-flexible.
Apply #
kubectl apply -f temporalcluster.yaml
The ingressClassName: azure-application-gateway selects AGIC; the
appgw.ingress.kubernetes.io/* annotations tune the Application Gateway backend.
Add TLS via an appgw.ingress.kubernetes.io/appgw-ssl-certificate annotation or
the UI ingress tlsSecretName field once you have a certificate provisioned.
Manifests #
temporalcluster.yaml #
# Temporal UI exposed on AKS via the Application Gateway Ingress Controller (AGIC).
# Persistence is shown inline; see cluster-azure-postgres-flexible for the
# Flexible Server setup details (databases, max_connections, TLS).
apiVersion: temporal.bmor10.com/v1alpha1
kind: TemporalCluster
metadata:
name: azure-ui
spec:
version: "1.31.1"
numHistoryShards: 512
ui:
enabled: true
ingress:
enabled: true
ingressClassName: azure-application-gateway
host: temporal.example.com
annotations:
appgw.ingress.kubernetes.io/backend-protocol: "http"
appgw.ingress.kubernetes.io/request-timeout: "300"
persistence:
defaultStore:
sql:
pluginName: postgres12
host: REPLACE_ME.postgres.database.azure.com
port: 5432
database: temporal
user: temporaladmin
passwordSecretRef: { name: temporal-flexible-store, key: password }
tls: { enabled: true }
visibilityStore:
sql:
pluginName: postgres12
host: REPLACE_ME.postgres.database.azure.com
port: 5432
database: temporal_visibility
user: temporaladmin
passwordSecretRef: { name: temporal-flexible-store, key: password }
tls: { enabled: true }