apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: # имя, должно соответствовать спецификации ниже, и быть в формате . name: repositories.unified-platform.cs.hse.ru spec: # имя группы, используемое в REST API: /apis// group: unified-platform.cs.hse.ru # Список версий, поддерживаемых этим определением CustomResourceDefinition versions: - name: v1 # Каждая версия может быть влкючена или выключена при помощи served флага. served: true # Только одна версия может быть отмечена как storage версия. storage: true schema: openAPIV3Schema: type: object description: Repository является определением ресурса Repository. Repository - репозиторий платформы. properties: spec: type: object description: RepositorySpec определяет желаемое состояние репозитория. Содержит спецификацию репозитория одного из поддерживаемых типов. properties: imageRegistry: type: object description: ImageRegistry определяет параметры репозитория типа реестр образов. properties: host: type: string description: Хост репозитория. dockerDockerConfigJsonCredentials: type: string description: Имя секрета с реквизитами доступа в формате DockerConfigJsonCredentials к реестру образов Docker. required: ["host"] oneOf: - properties: dockerDockerConfigJsonCredentials: {} required: ["dockerDockerConfigJsonCredentials"] packageRegistry: type: object description: PackageRegistry определяет параметры репозитория типа реестр пакетов. properties: host: type: string description: Хост репозитория. pythonHTTPBasedURLCredentials: type: string description: Имя секрета с реквизитами доступа в формате HTTPBasedURLCredentials к реестру Python пакетов. required: ["host"] oneOf: - properties: pythonHTTPBasedURLCredentials: {} required: ["pythonHTTPBasedURLCredentials"] sourceRepository: type: object description: SourceRepository определяет параметры репозитория типа репозиторий исходного кода. properties: host: type: string description: Хост репозитория. gitHTTPBasedURLCredentials: type: string description: Имя секрета с реквизитами доступа в формате HTTPBasedURLCredentials к Git репозиторию исходного кода. required: ["host"] oneOf: - properties: gitHTTPBasedURLCredentials: {} required: ["gitHTTPBasedURLCredentials"] userRegistry: type: object description: UserRegistry определяет параметры репозитория типа реестр пользователей. properties: host: type: string description: Хост реестра пользователей. keycloak: type: object description: Реестр пользователей, реализуемый keycloak properties: robots: type: object description: Робот аккаунты реестра пользователей. properties: secretRef: type: object description: Secret с именами робот аккаунтов. properties: name: type: string description: Имя Secret required: ["name"] x-kubernetes-validations: - rule: "(has(oldSelf.keycloak) && has(self.keycloak)) || (!has(oldSelf.keycloak) && !has(self.keycloak))" message: "repository type (userRegistry.keycloak) should not change" oneOf: - properties: imageRegistry: {} required: ["imageRegistry"] - properties: packageRegistry: {} required: ["packageRegistry"] - properties: sourceRepository: {} required: ["sourceRepository"] - properties: sourceRepository: {} required: ["userRegistry"] x-kubernetes-validations: - rule: "(has(oldSelf.userRegistry) && has(self.userRegistry)) || (!has(oldSelf.userRegistry) && !has(self.userRegistry))" message: "repository type (userRegistry) should not change" status: x-kubernetes-preserve-unknown-fields: true type: object properties: userRegistry: type: object properties: keycloak: type: object properties: masterGroupId: type: string subresources: status: {} # Namespaced or Cluster scope: Namespaced names: # имя во множественном числе, используемое в URL: /apis/// plural: repositories # имя в единственном числе, используемое в CLI и для отображения singular: repository # вид, обычно CamelCased в единственном числе, указывается в манифестах ресурсов kind: Repository # короткие имена для использования в операциях с ресурсами в CLI shortNames: - uniprep - unipreps categories: - all