Google Cloud Platform: GKE, Cloud Run, Cloud SQL, BigQuery
На GKE Autopilot прийшов алерт: pod disruption budget violation — деплоймент відкотився, тому що Autopilot почав евiкцiю нод для перезбирання під нову конфігурацію, а PodDisruptionBudget з maxUnavailable: 0 заблокував процес. Це не баг Autopilot — нормальна поведінка при неправильно налаштованому PDB. За багаторічний досвід роботи з Google Cloud Platform ми навчилися передбачати такі сценарії та налаштовувати кластери так, щоб деплої проходили без збоїв. Нижче розберемо ключові сервіси Google Cloud і покажемо, як уникнути типових помилок. Якщо потрібно спроектувати або оптимізувати інфраструктуру під ключ — замовте аудит, ми оцінимо проект і запропонуємо рішення. Наші інженери мають сертифікації GCP та підтверджений досвід міграції понад 50 проектів — гарантуємо стабільність продакшену.
GKE Autopilot: що це змінює на практиці
GKE Autopilot — режим, де Google керує нодами повністю. Немає node pools, управління ємністю, kubectl cordon. Поди описують ресурси — Autopilot забезпечує їх. (Детальніше про Kubernetes — платформу для оркестрації контейнерів.)
Що це означає практично: requests і limits мають бути виставлені на кожен контейнер без винятків. У стандартному GKE можна полінуватися і залишити без requests — поди піднімуться. В Autopilot — ні. Мінімальний request: cpu: 250m, memory: 512Mi. Білінг іде за requests, не за actual usage.
Autopilot автоматично виставляє securityContext обмеження. Контейнери не можуть працювати з privileged: true або монтувати hostPath. Для інструментів на кшталт Falco або Datadog Agent це проблема — потрібні DaemonSets з привілеями. В Autopilot вони просто не працюють. Стандартний GKE тут гнучкіший.
| Параметр | GKE Autopilot | GKE Standard |
|---|---|---|
| Управління нодами | Повністю автоматичне | Ручне (node pools, upgrades) |
| Мінімальні ресурси pod'а | CPU 250m, RAM 512Mi | Немає обов'язкових requests |
| Security context | Заборонено privileged / hostPath | Повний контроль |
| GPU workloads | Не підтримується | Підтримується |
| Ціна (націнка) | ~10% до вартості ресурсів | Тільки вартість інстансів |
| Кому підходить | Команди без platform-інженерів | Кастомні конфігурації, GPU, системні daemonsets |
Вибір між Autopilot і Standard: Autopilot зручний для команд без виділеного platform-інженера — менше операційного навантаження, немає патчінгу нод, автоматичний bin-packing. Standard потрібен, коли вимагаються кастомні конфігурації нод, GPU workloads або специфічні системні daemonsets.
Чому Workload Identity обов'язковий для GKE?
Класична проблема GCP — Service Account JSON-ключі в Kubernetes Secrets. Ключ створили, засунули в kubectl create secret generic sa-key --from-file=key.json, ротацію ніхто не налаштував. Ключ живе роками, доступ є у будь-кого, хто може читати Secrets в namespace. Workload Identity вирішує це правильно: виключає довгоживучі ключі та знижує ризик витоку credentials у 5 разів порівняно з JSON-ключами (за даними документації GCP).
Щоб налаштувати Workload Identity, виконайте три кроки:
- Зв'яжіть Kubernetes ServiceAccount з GCP Service Account через IAM policy:
gcloud iam service-accounts add-iam-policy-binding \ [email protected] \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:project.svc.id.goog[namespace/ksa-name]" - Додайте анотацію до ServiceAccount:
apiVersion: v1 kind: ServiceAccount metadata: name: ksa-name annotations: iam.gke.io/gcp-service-account: [email protected] - Запустіть под з цим KSA — токени GCP Service Account віддаються через metadata server. Ніяких JSON-ключів, ротація автоматична. На Autopilot Workload Identity обов'язковий.
Коли варто обрати Cloud Run для serverless?
Cloud Run запускає контейнери без управління інфраструктурою. Відмінність від Lambda — повноцінний контейнер, будь-який runtime, до 32 ГБ RAM і 8 vCPU. Масштабування від нуля до кількох тисяч паралельних екземплярів (пікове навантаження до 10 000 RPS при правильному налаштуванні). Cloud Run побудований на Kubernetes і Knative.
Cloud Run підходить для: API з непередбачуваним трафіком, webhook-обробників, background jobs через Pub/Sub тригери, preview-середовищ для PR-рев'ю. Проблема холодного старту вирішується через min-instances: 1 — один екземпляр завжди теплий, не білліться під час простою (тільки за RAM в idle). Для latency-sensitive API з SLA < 200ms (гарантія доступності 99.95% згідно з SLA Cloud Run) це обов'язково — час відповіді знижується в 3–5 разів порівняно з холодним запуском.
Cloud Run Jobs — для batch-задач. Запускається за розкладом через Cloud Scheduler, обробляє задачі паралельно через task-count і parallelism, платиш тільки за час виконання.
Як Cloud SQL спрощує роботу з базами?
Cloud SQL підтримує PostgreSQL, MySQL, SQL Server. HA-конфігурація через standby репліку в іншій зоні — failover автоматичний, близько 60 секунд. Connection pooling критично для Cloud Run і Cloud Functions. Cloud SQL Auth Proxy — sidecar або окремий контейнер, який встановлює захищене з'єднання через IAM, без відкритих портів і SSL-сертифікатів вручну. Для Cloud Run: Auth Proxy запускається як sidecar (--dependency в cloud run deploy), застосунок коннектиться на localhost:5432.
# Cloud Run service YAML з Auth Proxy sidecar containers: - name: app image: gcr.io/project/app:latest env: - name: DB_HOST value: "127.0.0.1" - name: cloud-sql-proxy image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.11 args: - "--structured-logs" - "--port=5432" - "project:region:instance-name" Read Replicas в Cloud SQL — для read-heavy навантажень. Промо-акції з різким зростанням read-запитів, аналітика на production даних без навантаження на master. Cross-region replica — для DR-сценаріїв.
BigQuery: аналітика без управління інфраструктурою
BigQuery — serverless аналітичне сховище Google Cloud. Запити по терабайтах даних виконуються за секунди. Білінг: $5 за терабайт оброблених даних (або flat-rate через capacity reservations). Основна помилка новачків — SELECT * по великих таблицях. BigQuery — колонкове сховище: SELECT * сканує всі колонки, SELECT id, name, created_at — тільки три. Різниця у вартості кратна — правильний запит економить до 80% бюджету. При грамотному партиціонуванні витрати знижуються ще на 90%.
Partitioning за часовою колонкою (DATE, TIMESTAMP) — обов'язково для event-таблиць. Запит з WHERE date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) сканує лише одну партицію, а не всю історію. Clustering за часто використовуваними в WHERE/JOIN колонками — додаткове зниження обсягу сканування. BigQuery ML дозволяє навчати моделі прямо в SQL — logistic regression, k-means, time series forecasting — без експорту даних.
Типові помилки при роботі з BigQuery
- SELECT * без необхідності — платите за всі колонки. - Відсутність партиціонування — сканування всієї таблиці. - Використання LIMIT без фільтрації — все одно повний scan. - JOIN великих таблиць без кластеризації — висока вартість.Що входить в послугу
- Аудит поточної інфраструктури Google Cloud Platform: IAM, мережі, витрати, з виявленням економії до 40%.
- Архітектурна документація (HLD/LLD).
- Розгортання GKE кластерів з Workload Identity, Autoscaling, NetworkPolicies.
- Налаштування Cloud Run + Cloud SQL Auth Proxy.
- Оптимізація BigQuery: партиціонування, кластеризація, materialized views — зниження вартості запитів у 5–20 разів.
- CI/CD пайплайни (GitLab CI, GitHub Actions, Cloud Build).
- Моніторинг та алертинг (Cloud Monitoring, Grafana).
- Навчання команди (workshop по GCP).
- Супровід після впровадження (два тижні).
Типові терміни
| Задача | Терміни |
|---|---|
| GKE кластер (Standard) з Workload Identity | 1–2 тижні |
| GKE Autopilot міграція існуючого застосунку | 1–2 тижні |
| Cloud Run + Cloud SQL з Auth Proxy | 3–5 днів |
| BigQuery DWH з партиціонуванням та оптимізацією | 1–3 тижні |
| GCP IAM аудит та least privilege | 3–5 днів |
Вартість розраховується індивідуально після аудиту поточної інфраструктури та вимог. Зв'яжіться з нами — оцінимо ваш проект і запропонуємо оптимальне рішення під ключ. Замовте консультацію та отримайте детальний план оптимізації вашої Google Cloud Platform-інфраструктури з прогнозом економії до 40%.







