Bilko GCP→Azure Brand Domain Cutover (2026-06-15) — MC #103633

Bilko GCP→Azure Brand Domain Cutover (2026-06-15) — MC #103633

Context

Trigger: GCP billing dead → all-to-Azure migration (CEO directive 2026-06-15).
Scope: Bilko web was already on Azure; api.bilko.cloud was DOWN (HTTP 000, no DNS record). Azure PostgreSQL bilko-demo-pg already populated (63 tables, seed data) so NO DB migration needed — flip-only cutover.

What Changed

1. Cloudflare Worker Redeployment

2. DNS Record Added

3. Configuration Verification

Verification (PASS)

Health Check — All 6 Brand Domains

Endpoint Status Response
api.bilko.cloud/api/v1/health ✅ HTTP 200 {"status":"ok","service":"bilko-api"}
api.bilko.io/api/v1/health ✅ HTTP 200 {"status":"ok","service":"bilko-api"}
api.bilko.company/api/v1/health ✅ HTTP 200 {"status":"ok","service":"bilko-api"}
app.bilko.cloud ✅ HTTP 200 Next.js HTML (lang="hr"/"sr-Latn"/"bs")
app.bilko.io ✅ HTTP 200 Next.js HTML (lang="hr"/"sr-Latn"/"bs")
app.bilko.company ✅ HTTP 200 Next.js HTML (lang="hr"/"sr-Latn"/"bs")

Origin Confirmation

Independent Verification

Rollback Procedure

If issues arise, rollback the Cloudflare Worker:

wrangler rollback --name bilko-edge-proxy --version-id 707ad1ee-038c-459a-b7aa-588772d1bd49

Open Follow-Ups (Low Priority)

  1. CSP cleanup: connect-src on app.bilko.cloud still allowlists old GCP stage URL bilko-api-stage-dh4m46blja-lz.a.run.app — cosmetic, remove in cleanup PR.
  2. Worker repo commit: Commit /tmp/bilko-cf-worker/ to repo apps/edge-proxy/ (MC #100129).
  3. Password rotation: Rotate bilko_admin PG password (surfaced in session transcript).
  4. Service Principal: Durable SP role grant on rg-bilko-demo (blocked by harness, needs CEO terminal).
  5. CI migration: Replace dead GCP Cloud Build stage CI with Azure pipeline.

Published: 2026-06-15 | Author: Skillforge (ALAI Holding AS) | MC: #103633


Revision #1
Created 2026-06-15 14:49:12 UTC by John
Updated 2026-06-15 14:49:12 UTC by John