[DevOps, Kubernetes] Простое объяснение CRD в Kubernetes и как его использовать (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Space by maryanion
CRD (Custom Resource Definition) — специальный ресурс в Kubernetes, который позволяет вносить любые данные. Команда Kubernetes aaS от Mail.ru перевела статью о том, что это такое, как его создать и использовать.
Что такое CRD
CRD — просто таблица в базе данных. Допустим, мы создали таблицу «Фрукты», в ней много записей: «яблоко», «банан», «апельсин». У каждой записи есть столбцы с характеристиками фруктов, например: «сладость», «вкус» и «вес».
Так вот, CRD похожа на таблицу «Фрукты».
CR (Custom resource) — отдельная запись в таблице, например, «яблоко» или «банан». После создания CRD (таблицы), вы можете добавлять или удалять CR (записи).
CRD нужен, поскольку все больше пользователей хотят вносить данные в Kubernetes. Формат данных может быть разным, а CRD не определены в Kubernetes «из коробки». В итоге требуется создавать собственные таблицы, устанавливая имена и типы столбцов, как в базе данных.
Например, IT-менеджер хочет с помощью CRD организовать список пользователей, список отделов, график работы или что-нибудь еще.
Как создать CRD
Как уже упоминалось, CRD — это таблица. Когда мы создаем таблицу, нам нужно задать ее формат: имена и типы столбцов. В CRD эти элементы описаны в форматах YAML или JSON. Также CR описывает каждое значение для записи в форматах YAML или JSON.
Посмотрим, как выглядит CRD изнутри:
CRD делится на три части: общая часть, информация на уровне таблицы и информация на уровне столбца:
- Общая часть. Как и в других ресурсах Kubernetes, метаданные включают название CRD (name: "fruit-crd"), apiVersion и kind.
- Информация уровня таблицы. Имя таблицы (kind: "fruit"), простое строчное имя для командной строки (simpler: "fruits"), множественное число (plural: "fruits")
- Информация уровня столбца. Имя столбца ("sweetness"), тип столбца ("boolean", "string", "integer", "object"), вложенные объекты (реквизиты: <имя дочернего объекта и столбцы>). Они соответствуют формату OpenAPISpecification, версия 3.
Более подробная информация о CRD — в официальном руководстве.
Проверка работы CRD
Действительно ли CRD — это просто таблица? Давайте проверим.
Я не хочу помнить формат CRD, и мне нужен более простой способ его создания. Поэтому я пишу только определение таблицы, и у меня есть оператор — инструмент автоматического создания CRD.
Описание очень простое: нужно перечислить пары имен и типов столбцов.
После применения этого YML мой оператор в Kubernetes автоматически генерирует соответствующую CRD. Вы можете создать собственного оператора, но если хотите попробовать мой, запустите следующую команду:
kubectl apply -f
https://raw.githubusercontent.com/onelittlenightmusic/k8sasdb/master/install.yaml
После успешной установки оператора проверьте, что Pod запустился:
kubectl get pod -n k8sasdb-system
NAME READY STATUS RESTARTS AGE
k8sasdb-controller-manager-9dbf54b4f-hzrt9 2/2 Running 0 8s
Вы можете скачать примеры таблиц и CR-записей отсюда.
Так выглядит сгенерированный CRD. Слева: общая информация и уровень таблицы, справа — информация на уровне столбца.
Затем я добавил следующий CR (YAML для одного фрукта).
Пример CR «Фрукт»
Теперь давайте проверим результаты в таблице и операции над записями.
Создание таблицы
kubectl create -f fruit.yaml
Успешно: CRD установлена = таблица создана.
Это эквивалент SQL-команды CREATE TABLE fruits;.
Создание записи
kubectl create -f apple.yaml
Успешно: CR установлена = запись создана. Это эквивалент SQL-команды INSERT INTO fruits values('apple', ...);.
Получение списка записей
kubectl get fruits
Успешно: отображаются две CR и все столбцы для них. Эквивалент SQL-команды SELECT * FROM fruits;.
Получение записи
kubectl get fruit apple
Успешно. Конечно, можно использовать другие названия, например «банан». Команда эквивалентна SQL-запросу SELECT * FROM fruits WHERE name = 'apple';.
Удаление записи
kubectl delete fruit apple
После удаления команда проверки всего списка фруктов не показывает результат «apple».
Успешно. Аналог в SQL: DELETE FROM fruits WHERE name = 'banana';.
Заключение
CRD — просто таблица в Kubernetes. Вы можете создать новые таблицы с CRD и добавлять записи с CR. Также в CRD вы можете задать схему таблицы, определив названия и типы столбцов. Освоив команды CRD, CR и kubectl, вы можете загружать в Kubernetes любые данные.
Не нужно бояться: даже если вы не помните формат CRD, вам поможет оператор. Моя версия оператора с открытым исходным кодом опубликована здесь.
Что еще почитать:
- Как эффективнее использовать kubectl: подробное руководство.
- Три уровня автомасштабирования в Kubernetes: как их эффективно использовать.
- Наш канал Вокруг Kubernetes в Телеграме.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Hiro OSAKI
===========Похожие новости:
- [*nix, Open source] FOSS News №32 – дайджест новостей свободного и открытого ПО за 31 августа — 6 сентября 2020 года
- [*nix, DevOps, Git, Kubernetes, Системное администрирование] Разбираемся с Custom Tooling в Argo CD
- [*nix, Open source, Информационная безопасность, Настройка Linux, Серверное администрирование] Freeradius + Google Autheticator + LDAP + Fortigate
- [DevOps, Kubernetes] Как мы выпускаем исправления к ПО в GitLab (перевод)
- [DevOps, Системное администрирование] Ускоряем Ansible
- [Программирование, Go] Вариативные функции в Go (перевод)
- [Amazon Web Services, DevOps, IT-инфраструктура, Системное программирование] Описание инфраструктуры в Terraform на будущее. Антон Бабенко (2018г)
- Компания Oracle выпустила ядро Unbreakable Enterprise Kernel R5U4
- Уязвимость в реализации сокетов AF_PACKET ядра Linux
- [DevOps, Kubernetes, Серверное администрирование, Системное администрирование] Онлайн-интенсив SRE: всё сломаем до основания, потом починим, ещё пару раз сломаем, а затем выстроим заново
Теги для поиска: #_devops, #_kubernetes, #_mail.ru_cloud_solutions, #_linux, #_kubernetes, #_blog_kompanii_mail.ru_group (
Блог компании Mail.ru Group
), #_devops, #_kubernetes
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:29
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Space by maryanion
CRD (Custom Resource Definition) — специальный ресурс в Kubernetes, который позволяет вносить любые данные. Команда Kubernetes aaS от Mail.ru перевела статью о том, что это такое, как его создать и использовать. Что такое CRD CRD — просто таблица в базе данных. Допустим, мы создали таблицу «Фрукты», в ней много записей: «яблоко», «банан», «апельсин». У каждой записи есть столбцы с характеристиками фруктов, например: «сладость», «вкус» и «вес». Так вот, CRD похожа на таблицу «Фрукты». CR (Custom resource) — отдельная запись в таблице, например, «яблоко» или «банан». После создания CRD (таблицы), вы можете добавлять или удалять CR (записи). CRD нужен, поскольку все больше пользователей хотят вносить данные в Kubernetes. Формат данных может быть разным, а CRD не определены в Kubernetes «из коробки». В итоге требуется создавать собственные таблицы, устанавливая имена и типы столбцов, как в базе данных. Например, IT-менеджер хочет с помощью CRD организовать список пользователей, список отделов, график работы или что-нибудь еще. Как создать CRD Как уже упоминалось, CRD — это таблица. Когда мы создаем таблицу, нам нужно задать ее формат: имена и типы столбцов. В CRD эти элементы описаны в форматах YAML или JSON. Также CR описывает каждое значение для записи в форматах YAML или JSON. Посмотрим, как выглядит CRD изнутри: CRD делится на три части: общая часть, информация на уровне таблицы и информация на уровне столбца:
Более подробная информация о CRD — в официальном руководстве. Проверка работы CRD Действительно ли CRD — это просто таблица? Давайте проверим. Я не хочу помнить формат CRD, и мне нужен более простой способ его создания. Поэтому я пишу только определение таблицы, и у меня есть оператор — инструмент автоматического создания CRD. Описание очень простое: нужно перечислить пары имен и типов столбцов. После применения этого YML мой оператор в Kubernetes автоматически генерирует соответствующую CRD. Вы можете создать собственного оператора, но если хотите попробовать мой, запустите следующую команду: kubectl apply -f
https://raw.githubusercontent.com/onelittlenightmusic/k8sasdb/master/install.yaml После успешной установки оператора проверьте, что Pod запустился: kubectl get pod -n k8sasdb-system
NAME READY STATUS RESTARTS AGE k8sasdb-controller-manager-9dbf54b4f-hzrt9 2/2 Running 0 8s Вы можете скачать примеры таблиц и CR-записей отсюда. Так выглядит сгенерированный CRD. Слева: общая информация и уровень таблицы, справа — информация на уровне столбца. Затем я добавил следующий CR (YAML для одного фрукта). Пример CR «Фрукт» Теперь давайте проверим результаты в таблице и операции над записями. Создание таблицы kubectl create -f fruit.yaml
Успешно: CRD установлена = таблица создана. Это эквивалент SQL-команды CREATE TABLE fruits;. Создание записи kubectl create -f apple.yaml
Успешно: CR установлена = запись создана. Это эквивалент SQL-команды INSERT INTO fruits values('apple', ...);. Получение списка записей kubectl get fruits
Успешно: отображаются две CR и все столбцы для них. Эквивалент SQL-команды SELECT * FROM fruits;. Получение записи kubectl get fruit apple
Успешно. Конечно, можно использовать другие названия, например «банан». Команда эквивалентна SQL-запросу SELECT * FROM fruits WHERE name = 'apple';. Удаление записи kubectl delete fruit apple
После удаления команда проверки всего списка фруктов не показывает результат «apple». Успешно. Аналог в SQL: DELETE FROM fruits WHERE name = 'banana';. Заключение CRD — просто таблица в Kubernetes. Вы можете создать новые таблицы с CRD и добавлять записи с CR. Также в CRD вы можете задать схему таблицы, определив названия и типы столбцов. Освоив команды CRD, CR и kubectl, вы можете загружать в Kubernetes любые данные. Не нужно бояться: даже если вы не помните формат CRD, вам поможет оператор. Моя версия оператора с открытым исходным кодом опубликована здесь. Что еще почитать:
=========== Источник: habr.com =========== =========== Автор оригинала: Hiro OSAKI ===========Похожие новости:
Блог компании Mail.ru Group ), #_devops, #_kubernetes |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 17:29
Часовой пояс: UTC + 5