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 становится “эластичным” и живёт там, где нужно твоим приложениям — не наоборот.

Popular Posts

Headlines