Сначала давайте разберемся, что такое CRD.
Ресурс API CustomResourceDefinition позволяет определять пользовательские ресурсы. Определение объекта CRD создает новый пользовательский ресурс с указанным именем и схемой. Kubernetes API обслуживает и обрабатывает хранилище вашего пользовательского ресурса. Имя объекта CRD должно быть действительным именем субдомена DNS .
. Это освобождает вас от написания собственного API-сервера для обработки пользовательского ресурса, но универсальный c характер реализация означает, что вы обладаете меньшей гибкостью, чем при агрегировании серверов API .
Зачем создавать пользовательских ресурсов :
A resource является конечной точкой в Kubernetes API , в которой хранится коллекция объектов API определенного вида. Например, встроенный ресурс pods содержит коллекцию объектов Pod.
A пользовательский ресурс является расширением API Kubernetes, которое не обязательно доступно в установка Kubernetes по умолчанию. Он представляет собой настройку конкретной установки Kubernetes. Однако многие основные функции Kubernetes теперь создаются с использованием пользовательских ресурсов, что делает Kubernetes более модульным.
Пользовательские ресурсы могут появляться и исчезать в работающем кластере при динамической регистрации c, и администраторы кластера могут обновлять пользовательские ресурсы независимо от сам кластер. После того, как пользовательский ресурс установлен, пользователи могут создавать и получать к нему доступ с помощью kubectl , так же, как они делают для встроенных ресурсов, таких как Pods .
Поэтому, чтобы ответить на ваш вопрос, если вам нужна функциональность, которой нет в Kubernetes, вам нужно создать ее самостоятельно, используя CRD. Без этого кластер не будет знать, что вы хотите и как его получить.
Если вы ищете примеры использования Kubernetes Client- go, вы можете найти их на официальном GitHub Client- идти / примеры