Ответ
CRD расширяет API Kubernetes, позволяя управлять не только встроенными объектами (Pod, Service), но и внешними ресурсами, включая облачные сервисы. Связь реализуется через операторы (Operators) или контроллеры.
Типичный паттерн "Kubernetes как облачная консоль":
- Разработчик создает манифест для пользовательского ресурса (Custom Resource), определенного через CRD (например,
PostgreSQLClusterилиS3Bucket). - Оператор, работающий в кластере, отслеживает создание таких ресурсов.
- Оператор, используя облачные credentials (из
Secret), делает вызовы к API облачного провайдера (AWS RDS, Google Cloud SQL, Azure Blob Storage) для создания реального сервиса. - Статус облачного ресурса (готов, ошибка) отражается в статусе пользовательского ресурса в Kubernetes.
Пример: Установка оператора Crossplane для управления AWS ресурсами.
- CRD определяет новый тип ресурса:
# Пример упрощенного CRD для облачной базы данных (от оператора) apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: rdsinstances.database.aws.example.com spec: group: database.aws.example.com names: kind: RDSInstance plural: rdsinstances - Разработчик создает облачный ресурс через Kubernetes-манифест:
apiVersion: database.aws.example.com/v1alpha1 kind: RDSInstance metadata: name: my-production-db spec: engine: postgres instanceClass: db.t3.small storageGB: 20 region: us-east-1
Преимущества: Единый интерфейс (kubectl), GitOps (манифесты в репозитории), управление жизненным циклом через Kubernetes.