Уявіть: ваша команда вже використовує 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 місяців.
Що входить у роботу
- Аудит поточної інфраструктури: інвентаризація хмарних ресурсів, вибір пріоритетних для міграції.
- Встановлення та налаштування Crossplane, провайдерів і ProviderConfigs.
- Розробка Compositions під ваші потреби з урахуванням best practices.
- Інтеграція з GitOps (ArgoCD/Flux) та налаштування пайплайну.
- Імпорт існуючих ресурсів через
crossplane import. - Документація та навчання команди: як створювати Claims, workflow змін.
- Супровід після впровадження (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?
- Встановіть Crossplane в кластер:
kubectl apply -f https://raw.githubusercontent.com/crossplane/crossplane/master/cluster/base/crossplane.yaml(або через Helm). - Налаштуйте провайдер: створіть ProviderConfig з обліковими даними хмари.
- Створіть Composition: визначте шаблон ресурсу (наприклад, PostgreSQL).
- Розробник створює Claim:
kubectl apply -f postgres-claim.yaml— ресурс з’явиться через секунди.
Повний приклад доступний в офіційній документації Crossplane.
Наша командамає понад 7 років досвіду в інфраструктурі та понад 50 успішних проєктів. Оцініть ефективність Crossplane на своєму проєкті — запишіться на демонстрацію. Зв’яжіться з нами для аудиту вашої інфраструктури та отримайте пропозицію щодо впровадження.







