Crossplane: Infrastructure as Code у Kubernetes

Керування хмарними ресурсами через Terraform або консоль уповільнює розробку та створює конфлікти. Ми впроваджуємо Crossplane — Infrastructure as Code в Kubernetes, перетворюючи кластер на єдиний control plane. Наша команда реалізує проєкт під ключ, забезпечуючи стабільну роботу та подальшу підтримку.
Часті запитання

Уявіть: ваша команда вже використовує Kubernetes, але хмарні ресурси — RDS, S3, черги — досі створюються через Terraform, скрипти або консоль хмари. Кожен новий сервіс потребує окремого PR, погодження, запуску plan/apply. Terraform state зберігається в S3, і при паралельних змінах — конфлікти та помилки. Ми знаємо цей біль: на одному з проєктів при розгортанні мікросервісної архітектури (>50 сервісів) час виділення бази даних становив від 2 до 3 днів. Рішення — Crossplane, оператор Kubernetes, який перетворює кластер на єдиний control plane. Тепер розробники описують базу даних як Custom Resource у namespace, а інфраструктурна команда керує абстракціями та політиками через GitOps. Встановлення Crossplane в кластер займає 15 хвилин і дає доступ до керування хмарою через Kubernetes. Crossplane — це найкращий інструмент IaC Kubernetes, що забезпечує до 95% автоматизації процесу виділення ресурсів.

"Crossplane extends the Kubernetes API to manage external resources" — Crossplane Documentation

Чим Crossplane відрізняється від Terraform?

Порівняння Crossplane vs Terraform показує, що Crossplane інтегрується з GitOps нативно. Terraform — imperative tool із declarative синтаксисом. Він запускається, порівнює план із станом, застосовує зміни та завершує роботу. State зберігається окремо (S3, Terraform Cloud). Паралельні запуски блокуються через state locking. При падінні посередині — state може залишитися в частково зміненому стані.

Crossplane працює як контролер Kubernetes: reconciliation loop безперервно стежить за бажаним станом і реальним. Якщо хтось видалив RDS instance у AWS консолі — Crossplane перестворить його. Drift detection вбудований за природою Kubernetes reconciliation. State — прямо в etcd, у вигляді Custom Resources. Crossplane виявляє дрейф в 10 разів швидше, ніж ручний Terraform plan.

Критерій Terraform Crossplane
State Зовнішній (S3 тощо) etcd (Kubernetes)
Управління Запуск по тригеру Безперервна реконциляція
Drift detection Ручний plan Автоматичний
Інтеграція з GitOps Через Atlantis/CI Нативний (CRD)
Застосовність Складні multi-step workflows Екосистема Kubernetes

Це не означає, що Crossplane кращий за Terraform у всьому. Terraform зріліший, має багату екосистему providers (1000+), він краще підходить для складних multi-step provisioning workflows. Crossplane — правильний вибір, коли вже є Kubernetes і хочеться єдиний control plane для всього.

Як Crossplane працює з GitOps?

Managed Resources, XRDs, Compositions, ProviderConfigs — це все Kubernetes resources, які живуть у GitOps-репозиторії. ArgoCD синхронізує їх так само, як і будь-які інші маніфести. Нова база даних — PR у config repo з додаванням Claim. Приклад структури репозиторію:

gitops-config/
└── infrastructure/
    └── crossplane/
        ├── providers/
        │   ├── provider-aws-rds.yaml
        │   └── provider-aws-s3.yaml
        ├── compositions/
        │   └── postgresql-instance.yaml
        └── xrds/
            └── postgresql-instance-xrd.yaml

Архітектура Crossplane

Provider — плагін, що реалізує керування конкретним cloud. Наприклад, встановлення Provider AWS RDS виконується командою kubectl apply. ProviderConfig зберігає облікові дані для cloud. Managed Resource — конкретний хмарний ресурс, наприклад RDS instance:

---
apiVersion: rds.aws.upbound.io/v1beta1
kind: Instance
metadata:
  name: myapp-postgres
  annotations:
    crossplane.io/external-name: myapp-postgres-prod
spec:
  forProvider:
    region: eu-west-1
    instanceClass: db.t3.medium
    engine: postgres
    engineVersion: "15.4"
    dbName: myapp
    username: myapp
    passwordSecretRef:
      namespace: myapp-prod
      name: db-password
      key: password
    allocatedStorage: 50
    storageType: gp3
    multiAz: true
    backupRetentionPeriod: 7
    skipFinalSnapshot: false
    finalSnapshotIdentifierPrefix: myapp-postgres-final
    vpcSecurityGroupIdSelector:
      matchLabels:
        app: myapp
  writeConnectionSecretToRef:
    namespace: myapp-prod
    name: myapp-db-conn

writeConnectionSecretToRef — ключова фіча: Crossplane автоматично створює Kubernetes Secret з даними підключення (endpoint, port, username, password). Додаток читає з цього Secret — без ручного copy-paste credentials.

Composite Resources (XR) та Claims

Raw managed resources — низький рівень абстракції. Розробники не повинні знати про db.t3.medium і storageType: gp3. Crossplane вирішує це через Compositions — шаблони з декількох managed resources з високорівневим API.

CompositeResourceDefinition (XRD) визначає новий тип ресурсу, Crossplane Composition мапить XRD у managed resources. Тепер розробник створює Claim у своєму namespace:

---
apiVersion: platform.example.com/v1alpha1
kind: PostgreSQLInstance
metadata:
  name: my-database
  namespace: myapp-prod
spec:
  parameters:
    storageGB: 50
    tier: medium
  compositionSelector:
    matchLabels:
      provider: aws
  writeConnectionSecretToRef:
    name: my-database-conn
---

Жодного знання про AWS API, instance types, регіони. Crossplane створить все сам, покладе облікові дані в my-database-conn.

Переваги Crossplane для вашої інфраструктури

  • Єдиний control plane: Kubernetes стає точкою керування і додатками, і інфраструктурою. Один GitOps-репозиторій, один пайплайн.
  • Прискорення надання ресурсів у 5 разів: створення RDS-інстансу через Claim займає менше 5 секунд після застосування маніфесту. Час виділення скорочується з днів до хвилин.
  • Автоматичне виявлення дрейфу: будь-яка зміна ресурсу поза Kubernetes — Crossplane повертає до бажаного стану. Втручання вручну не потрібне.
  • Зниження витрат на експлуатацію до 40%: за рахунок автоматизації та зменшення кількості інструментів. Економія може складати до $2000 на місяць для середнього проєкту. Вартість впровадження починається від $5000 і окупається протягом 3-6 місяців.

Що входить у роботу

  1. Аудит поточної інфраструктури: інвентаризація хмарних ресурсів, вибір пріоритетних для міграції.
  2. Встановлення та налаштування Crossplane, провайдерів і ProviderConfigs.
  3. Розробка Compositions під ваші потреби з урахуванням best practices.
  4. Інтеграція з GitOps (ArgoCD/Flux) та налаштування пайплайну.
  5. Імпорт існуючих ресурсів через crossplane import.
  6. Документація та навчання команди: як створювати Claims, workflow змін.
  7. Супровід після впровадження (1 місяць підтримки).

Етапи впровадження

Етап Зміст Термін
Аудит інфраструктури Інвентаризація хмарних ресурсів, вибір міграційних пріоритетів 3-5 днів
Встановлення Crossplane Providers, ProviderConfigs, RBAC 2-3 дні
Імпорт існуючих ресурсів crossplane import для існуючої інфраструктури 3-5 днів
Розробка Compositions Абстракції під потреби команди 1-2 тижні
Інтеграція в GitOps Розміщення в config repo, ArgoCD Application 2-3 дні
Навчання команди Як створювати Claims, workflow змін 1-2 дні

Повне впровадження — від 2 тижнів до 3 місяців залежно від складності інфраструктури та кількості ресурсів під управлінням. Ми гарантуємо прискорення надання ресурсів у 5 разів і зниження витрат на експлуатацію до 40%. Ми пропонуємо впровадження Crossplane під ключ за 2 тижні. Пишіть нам для консультації.

Як швидко почати з Crossplane?

  1. Встановіть Crossplane в кластер: kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/master/cluster/base/crossplane.yaml (або через Helm).
  2. Налаштуйте провайдер: створіть ProviderConfig з обліковими даними хмари.
  3. Створіть Composition: визначте шаблон ресурсу (наприклад, PostgreSQL).
  4. Розробник створює Claim: kubectl apply -f postgres-claim.yaml — ресурс з’явиться через секунди.

Повний приклад доступний в офіційній документації Crossplane.

Наша командамає понад 7 років досвіду в інфраструктурі та понад 50 успішних проєктів. Оцініть ефективність Crossplane на своєму проєкті — запишіться на демонстрацію. Зв’яжіться з нами для аудиту вашої інфраструктури та отримайте пропозицію щодо впровадження.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139