Panel Backend — Production Deployment (Cloud Run)¶
Panel Go sunucusunun (cmd/panel-server) yackr-prod Google Cloud projesine Cloud Run üzerinden deploy edilmesi.
Genel Bilgi¶
| Bilgi | Değer |
|---|---|
| Google Cloud Projesi | yackr-prod |
| Bölge | europe-west1 |
| Cloud Run Servis Adı | yackr-panel |
| Servis URL | https://yackr-panel-snuey74raq-ew.a.run.app |
| Port | 8080 |
| Protokol | ConnectRPC (gRPC-Web) |
| Hesap | murat@yackr.co |
Ön Koşullar¶
Tüm ön koşullar (gcloud kurulum, giriş, API'ler, Artifact Registry girişi, IAM izinleri) backend_prod_deployment.md'de tamamlandı — tekrar yapılmaz.
Secret Manager'da gerekli secret'lar:
| Secret Adı | Açıklama |
|---|---|
COCKROACH_DATABASE_URL |
CockroachDB bağlantı string'i |
CF_AUD_TAG |
Cloudflare Access AUD Tag (JWT doğrulama) |
Deploy Komutu (Her Güncellemede)¶
backend/ dizininden çalıştır:
# 1. amd64 için build et — Apple Silicon Mac'te zorunlu
docker build --platform linux/amd64 -f Dockerfile.panel -t yackr-panel:prod .
# 2. Tag'le ve push'la
docker tag yackr-panel:prod europe-west1-docker.pkg.dev/yackr-prod/cloud-run-source-deploy/yackr-panel:prod
docker push europe-west1-docker.pkg.dev/yackr-prod/cloud-run-source-deploy/yackr-panel:prod
# 3. Deploy et
gcloud run deploy yackr-panel \
--image europe-west1-docker.pkg.dev/yackr-prod/cloud-run-source-deploy/yackr-panel:prod \
--region europe-west1 \
--port 8080 \
--no-invoker-iam-check \
--set-env-vars="APP_ENV=prod" \
--update-secrets="COCKROACH_DATABASE_URL=COCKROACH_DATABASE_URL:latest,CF_AUD_TAG=CF_AUD_TAG:latest"
Not:
--no-invoker-iam-checkgerekli —yackr.coorg policyallUsersIAM atamasını engelliyor. Detay:backend_prod_deployment.md→ Public Erişim Ayarı.
Deploy Sonrası Doğrulama¶
gcloud run services describe yackr-panel --region=europe-west1 --format="value(status.conditions[0].status,status.url)"
True dönmesi beklenir.
Log İzleme¶
Tarayıcıdan: Google Cloud Console → Cloud Run → yackr-panel → Logs sekmesi
Terminalden canlı akış:
gcloud alpha logging tail "resource.type=cloud_run_revision AND resource.labels.service_name=yackr-panel" --project=yackr-prod
Rollback (Önceki Versiyona Dönme)¶
gcloud run revisions list --service=yackr-panel --region=europe-west1 --project=yackr-prod
gcloud run services update-traffic yackr-panel \
--region=europe-west1 \
--to-revisions=REVISION_ADI=100
Cloudflare Routing — Tamamlandı ✅¶
Panel frontend (panel.yackr.co) → Cloudflare Pages Function → Cloud Run backend.
Mimari: same-origin. Flutter panel.yackr.co'ya istek atar, panel/functions/[[catchall]].js /panel. ile başlayan gRPC isteklerini yackr-panel-snuey74raq-ew.a.run.app'e proxy'ler. grpc_client.dart değişmedi.
Neden bu yöntem: Cross-origin subdomain (panel-api.yackr.co) Cloudflare Access'in OPTIONS preflight bloğu nedeniyle çalışmıyor. Same-origin'de preflight olmadığından sorun yok.