Custom Resource Definition (CRD) — это способ расширить Kubernetes, добавляя новые типы объектов в кластер, которых нет в стандартной поставке. Это позволяет создавать и управлять своими собственными ресурсами, используя стандартные API Kubernetes, kubectl и другие инструменты.
CRD определяют схему для нового типа ресурса. После создания CRD можно создавать экземпляры этого ресурса, похожие на стандартные объекты, такие как Deployment или Service.
Ключевые аспекты CRD:
Пример определения CRD (частично):
yaml
После применения этого CRD можно создавать объекты kind: MyService.
Пример использования CRD:
yaml
Разница между CRD и Operator:
| Характеристика | CRD | Operator |
|---|---|---|
| Функция | Определяет новый тип ресурса | Реализует логику управления для ресурса |
| Тип ресурса | Объект в Kubernetes API | Приложение, работающее в кластере (Deployment/StatefulSet) |
| Ответственность | Определение структуры данных | Реагирование на изменения состояния ресурса, автоматизация задач |
Таким образом, CRD предоставляют способ расширить Kubernetes API, а Operators используют CRD для автоматизации управления пользовательскими ресурсами, следуя принципам контроллеров Kubernetes.