Определения пользовательских ресурсов (CRD)
Узнайте, как определения пользовательских ресурсов расширяют API Kubernetes собственными типами ресурсов — основой, на которой строятся операторы.
«Определения пользовательских ресурсов (CRD)» — бесплатный урок Kubernetes Basics на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kubernetes Basics, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kubernetes Basics содержит 4 уроков всего.
Расширение API Kubernetes
Встроенные объекты, такие как поды и развёртывания, — не предел возможностей Kubernetes. С помощью Custom Resource Definition (CRD) Вы можете добавить Kubernetes совершенно новые типы ресурсов.
Что такое пользовательский ресурс
Custom Resource (CR) — это экземпляр определённого Вами типа. После установки CRD Вы создаёте CR с помощью kubectl, как и встроенные объекты.
Структура CRD
CRD объявляет новый вид ресурса, его группу API, версию и область действия — пространство имён или весь кластер.
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
name: backups.data.example.com
spec:
group: data.example.com
scope: Namespaced
names:
plural: backups
singular: backup
kind: BackupОпределение схемы
Схема OpenAPI проверяет поля пользовательского ресурса и отклоняет недопустимые спецификации во время создания.
versions:
- name: v1
served: true
storage: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
schedule:
type: string
retention:
type: integerСоздание пользовательского ресурса
После применения CRD Вы создаёте экземпляры нового типа.
apiVersion: data.example.com/v1
kind: Backup
metadata:
name: nightly-db
spec:
schedule: '0 2 * * *'
retention: 7Работа с CR через kubectl
Пользовательские ресурсы являются полноценными объектами Kubernetes. Их можно просматривать списком, описывать и удалять с помощью привычных команд.
kubectl get backups
kubectl describe backup nightly-db
kubectl delete backup nightly-dbКороткие имена и столбцы таблицы
Вы можете определить короткие имена и пользовательские столбцы таблицы, чтобы с CR было удобнее работать.
names:
shortNames: ['bk']
additionalPrinterColumns:
- name: Schedule
type: string
jsonPath: .spec.scheduleCRD — это всего лишь данные
Сам по себе CRD только хранит данные в etcd. Ничего не выполняет действия над ними. Чтобы резервное копирование действительно выполнялось, нужен контроллер, отслеживающий эти ресурсы.
Связь с операторами
Оператор — это контроллер и один или несколько CRD. CRD определяет желаемое состояние, а контроллер непрерывно приводит фактическое состояние в соответствие с ним. CRD — основа, на которой строятся операторы.
Версионирование CRD
CRD поддерживают несколько версий с преобразованием, позволяя развивать API. Ровно одна версия помечается как версия хранения в etcd.
versions:
- name: v1beta1
served: true
storage: false
- name: v1
served: true
storage: trueКогда использовать CRD
- Вы хотите декларативно представить понятие предметной области: резервную копию, базу данных или сертификат
- Вы создаёте оператор для автоматизации операций
- Вы хотите, чтобы пользователи управляли приложением с помощью привычных рабочих процессов kubectl
Быстрая проверка
Проверьте, насколько хорошо Вы поняли CRD.
Итоги
Вы узнали, что CRD расширяют API Kubernetes пользовательскими типами, проверяемыми схемой OpenAPI и управляемыми обычными командами kubectl. Один CRD только хранит данные; в сочетании с контроллером он создаёт оператор, который приводит желаемое состояние в соответствие с фактическим.
Часто задаваемые вопросы
Урок «Определения пользовательских ресурсов (CRD)» бесплатный?
Да — полный текст урока «Определения пользовательских ресурсов (CRD)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kubernetes Basics, подпишись на CoddyKit PRO. Курс Kubernetes Basics содержит 4 уроков всего.
Чему я научусь в уроке «Определения пользовательских ресурсов (CRD)»?
Узнайте, как определения пользовательских ресурсов расширяют API Kubernetes собственными типами ресурсов — основой, на которой строятся операторы. Ты практикуешь Kubernetes Basics с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Kubernetes Basics?
Предыдущий опыт не требуется. Kubernetes Basics на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Определения пользовательских ресурсов (CRD)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Kubernetes Basics?
Да. Каждый урок Kubernetes Basics включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- StatefulSets для приложений с состоянием
- DaemonSets для задач на узлах
- Разбор операторов Kubernetes
- Определения пользовательских ресурсов (CRD)