0Pricing
DevOps Bootcamp · Урок

Определения пользовательских ресурсов (CRD)

Узнайте, как определения пользовательских ресурсов расширяют API Kubernetes собственными типами ресурсов — основой, на которой строятся операторы.

«Определения пользовательских ресурсов (CRD)» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 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.schedule

CRD — это всего лишь данные

Сам по себе 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) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Определения пользовательских ресурсов (CRD)»?

Узнайте, как определения пользовательских ресурсов расширяют API Kubernetes собственными типами ресурсов — основой, на которой строятся операторы. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Определения пользовательских ресурсов (CRD)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. StatefulSets для приложений с состоянием
  2. DaemonSets для задач на узлах
  3. Разбор операторов Kubernetes
  4. Определения пользовательских ресурсов (CRD)
← Назад к DevOps Bootcamp