apiVersion: apps/v1 kind: Deployment metadata: name: supabase-studio spec: replicas: 1 selector: matchLabels: component: studio template: metadata: labels: component: studio spec: containers: - name: studio image: supabase/studio:2026.06.03-sha-0bca601 ports: - containerPort: 3000 env: - name: HOSTNAME value: "0.0.0.0" - name: STUDIO_PG_META_URL value: "http://meta:8080" - name: POSTGRES_PORT value: "5432" - name: POSTGRES_HOST value: "{{ .db.host }}" - name: POSTGRES_DB value: "{{ .db.name }}" - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: supabase-secrets key: dbPassword - name: POSTGRES_USER_READ_WRITE value: "{{ .db.user }}" - name: PG_META_CRYPTO_KEY valueFrom: secretKeyRef: name: supabase-secrets key: pgMetaCryptoKey - name: PGRST_DB_SCHEMAS value: "public,storage,graphql_public" - name: PGRST_DB_MAX_ROWS value: "1000" - name: PGRST_DB_EXTRA_SEARCH_PATH value: "public" - name: DEFAULT_ORGANIZATION_NAME value: "{{ .defaultOrg }}" - name: DEFAULT_PROJECT_NAME value: "{{ .defaultProject }}" - name: SUPABASE_URL value: "http://kong:8000" - name: SUPABASE_PUBLIC_URL value: "https://{{ .domain }}" - name: SUPABASE_ANON_KEY valueFrom: secretKeyRef: name: supabase-secrets key: anonKey - name: SUPABASE_SERVICE_KEY valueFrom: secretKeyRef: name: supabase-secrets key: serviceRoleKey - name: AUTH_JWT_SECRET valueFrom: secretKeyRef: name: supabase-secrets key: jwtSecret - name: ENABLED_FEATURES_LOGS_ALL value: "false" livenessProbe: exec: command: - node - -e - "fetch('http://localhost:3000/api/platform/profile').then((r) => {if (r.status !== 200) throw new Error(r.status)})" initialDelaySeconds: 30 periodSeconds: 15 timeoutSeconds: 10 failureThreshold: 3 readinessProbe: httpGet: path: /api/platform/profile port: 3000 initialDelaySeconds: 20 periodSeconds: 10 timeoutSeconds: 10 failureThreshold: 3 resources: requests: memory: 512Mi cpu: 200m