Ana içeriğe geç

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-check gerekli — yackr.co org policy allUsers IAM 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.