Multi-Cloud и Serverless CI: GitHub Actions, GitLab Cloud Runners и Tekton
“Зачем поднимать свои CI-сервера, если можно использовать облако Serverless CI решает инфраструктурные проблемы, а Multi-cloud — даёт гибкость и отказоустойчивость.” ⚡
Что такое Multi-Cloud
Multi-Cloud — это стратегия, при которой ты используешь несколько облачных провайдеров одновременно (например, AWS + GCP + Yandex.Cloud), чтобы:
- повысить отказоустойчивость
- избежать vendor lock-in
- оптимизировать стоимость
- запускать пайплайны ближе к конкретным окружениям или регионам
CI/CD в multi-cloud окружении позволяет строить гибкие и распределённые pipeline’ы, которые живут не в одном датацентре, а где нужно.
Serverless CI: концепт
Serverless CI — это когда ты не управляешь собственной CI-инфраструктурой (VM, k8s), а используешь облачные раннеры или полностью управляемые пайплайны.
| Что ты не делаешь | Что делает облако |
|---|---|
| Разворачиваешь GitLab Runner или Jenkins | ✅ Автоматически выделяет раннеры |
| Следишь за масштабированием | ✅ Автоскейл по нагрузке |
| Чинишь падающие агенты | ✅ Облако само менеджит окружение |
| Платишь за 24/7 сервера | ✅ Платишь только за минуты выполнения |
Пайплайны становятся быстрее, масштабируются по запросу и не требуют поддержки
GitHub Actions — CI/CD без серверов
GitHub Actions — один из самых популярных serverless CI-сервисов. Он позволяет запускать пайплайны прямо из репозитория, используя готовые раннеры GitHub.
Пример деплоя в Multi-cloud
name: Multi-cloud Deploy
on:
push:
branches: [ main ]
jobs:
deploy-aws:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to AWS
run: ./deploy/aws.sh
deploy-gcp:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Deploy to GCP
run: ./deploy/gcp.sh
Один репозиторий → несколько клаудов → параллельные job’ы.
Фишки:
- Reusable workflows
- Secrets и environments с granular access
- Matrix builds для мультиплатформы
- Self-hosted runners для edge-случаев
GitLab Cloud Runners
GitLab предлагает облачные shared runners, которые можно использовать без установки своих. Для Multi-cloud сценариев — это :
- Запуск job’ов в разных регионах параллельно
- Подключение внешних Kubernetes кластеров
- Интеграция с облачными функциями или контейнерами
Пример serverless пайплайна
stages:
- test
- deploy
test:
stage: test
script:
- pytest
deploy_aws:
stage: deploy
script:
- ./deploy/aws.sh
tags: [cloud]
deploy_gcp:
stage: deploy
script:
- ./deploy/gcp.sh
tags: [cloud]
Можно комбинировать shared runners и custom k8s runners для edge/secure зон.
Tekton Pipelines — Cloud Native CI
Tekton — это Kubernetes-native CI/CD платформа, которая идеально вписывается в Multi-cloud архитектуру. Ты описываешь pipeline как Kubernetes ресурсы, а Tekton сам их исполняет.
Пример таски
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: deploy-aws
spec:
steps:
- name: deploy
image: alpine
script: |
#!/bin/sh
./deploy/aws.sh
Tekton можно запустить:
- в каждом облаке (AWS, GCP, Azure)
- централизованно в одном Kubernetes
- в гибридном режиме с GitOps (ArgoCD + Tekton)
Безопасность и секреты
Serverless CI не отменяет правил безопасности. Нужно внимательно работать с секретами и доступами:
- Используй OIDC (GitHub Actions → AWS/GCP) вместо долгоживущих ключей
- Храни секреты в CI Secrets store, а не в репозитории
- Разграничивай доступ по окружениям (prod/stage/dev)
- Используй short-lived токены и policy-based access
Это особенно важно в multi-cloud окружении, где можно случайно открыть ключ сразу для всех регионов
Multi-cloud паттерны CI
| Паттерн | Описание | Пример |
|---|---|---|
| Parallel Deploy | Одновременный деплой в несколько облаков | GitHub Actions с 2 job’ами |
| Geo Routing | Pipeline выбирает облако по региону | Tekton Task + custom params |
| Failover | Если облако A упало — задеплой в B | GitLab CI + rules / retry |
| Hybrid | Облако для CI, On-Prem для sensitive | GitLab Cloud Runner + self-hosted |
Преимущества подхода
- Быстрые пайплайны без серверов
- Гибкость Multi-cloud без vendor lock-in
- Меньше инфраструктуры → меньше DevOps overhead
- Безопасность через managed identity и secrets
- Легкий масштаб без боли с Kubernetes кластерами CI
Заключение
Multi-cloud + Serverless CI — это современный способ строить распределённые и надёжные пайплайны. Ты получаешь скорость, отказоустойчивость и безопасность, не управляя лишними VM и k8s кластерами.
CI становится “эластичным” и живёт там, где нужно твоим приложениям — не наоборот.
