Files
gateway/k8s/hanzo/deployment.yaml
zeekay 9144a52457 infra: pin gateway image to v2.14.0 (was :latest)
Pin the image tag so rollouts are deterministic. Bumps off the floating
:latest tag — CI tags every release with semver and we should reference
that, not the moving floor.
2026-04-29 15:09:47 -07:00

101 lines
3.0 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: gateway
namespace: hanzo
labels:
app: gateway
app.kubernetes.io/name: gateway
app.kubernetes.io/part-of: hanzo-platform
spec:
replicas: 2
selector:
matchLabels:
app: gateway
template:
metadata:
labels:
app: gateway
spec:
enableServiceLinks: false
imagePullSecrets:
- name: registry-credentials
containers:
- name: gateway
image: ghcr.io/hanzoai/gateway:v2.14.0
imagePullPolicy: Always
command: ["/usr/bin/gateway"]
args: ["run", "-c", "/etc/gateway/gateway.json"]
env:
- name: GATEWAY_PORT
value: "8080"
# -- Unified Auth Middleware --
- name: AUTH_JWKS_URL
value: "https://hanzo.id/.well-known/jwks"
- name: AUTH_ISSUER
value: "https://hanzo.id"
- name: AUTH_PUBLIC_PATHS
value: "/healthz,/__stats,/.well-known/,/favicon"
- name: AUTH_PUBLIC_HOSTS
value: "hanzo.id,lux.id,pars.id,id.bootno.de,id.zoo.network,iam.hanzo.ai"
# Set to "true" to require auth on all non-public endpoints
- name: AUTH_REQUIRE
value: "false"
# -- ZAP native binary listener (TLS 1.3+PQ) --
- name: ZAP_LISTENER_ENABLED
value: "true"
- name: ZAP_LISTENER_PORT
value: "9999"
- name: ZAP_TLS_CERT
value: "/etc/tls/tls.crt"
- name: ZAP_TLS_KEY
value: "/etc/tls/tls.key"
- name: ZAP_INTERNAL_ADDR
value: "127.0.0.1:9999"
# -- Billing enforcement via Commerce API --
- name: AUTH_BILLING_URL
value: "http://commerce.hanzo.svc.cluster.local:8001"
- name: COMMERCE_SERVICE_TOKEN
valueFrom:
secretKeyRef:
name: gateway-secrets
key: COMMERCE_SERVICE_TOKEN
optional: true
ports:
- containerPort: 8080
name: http
- containerPort: 9999
name: zap
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: "1"
memory: 512Mi
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 15
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
volumeMounts:
- name: config
mountPath: /etc/gateway
- name: tls
mountPath: /etc/tls
readOnly: true
volumes:
- name: config
configMap:
name: gateway-config
- name: tls
secret:
secretName: api-hanzo-ai-tls