Creating applications from Operator Backed

Содержание

Понимание Operator Backed Application

Operator — это механизм расширения, построенный на основе Kubernetes Custom Controllers и Custom Resource Definitions (CRD), предназначенный для автоматизации полного жизненного цикла управления сложными приложениями. В рамках Alauda Container Platform, Operator Backed Application — это экземпляр приложения, созданный с помощью прединтегрированных или пользовательских Operators, с рабочими процессами, управляемыми Operator Lifecycle Manager (OLM). Это включает ключевые процессы, такие как установка, обновления, разрешение зависимостей и контроль доступа.

Основные возможности

  1. Автоматизация сложных операций: Operators преодолевают ограничения нативных ресурсов Kubernetes (например, Deployment, StatefulSet) для решения задач управления stateful-приложениями, включая распределённую координацию, постоянное хранилище и версионированные rolling updates. Пример: логика, закодированная в Operator, обеспечивает автономные операции для переключения отказоустойчивости кластера базы данных, согласованности данных между узлами и восстановления из резервных копий.

  2. Декларативная архитектура, управляемая состоянием: Operators используют декларативные API на основе YAML для определения желаемого состояния приложения (например, spec.replicas: 5). Operators постоянно согласуют фактическое состояние с объявленным, обеспечивая возможности самовосстановления. Глубокая интеграция с GitOps-инструментами (например, Argo CD) гарантирует согласованность конфигураций среды.

  3. Интеллектуальное управление жизненным циклом:

    • Rolling Updates и Rollback: объект Subscription в OLM подписывается на каналы обновлений (например, stable, alpha), инициируя автоматические итерации версий как для Operators, так и для управляемых ими приложений.

    • Разрешение зависимостей: Operators динамически определяют зависимости во время выполнения (например, конкретные драйверы хранения, CNI-плагины) для обеспечения успешного развертывания.

  4. Стандартизированная интеграция в экосистему: OLM стандартизирует упаковку Operator (Bundle) и каналы распространения, позволяя развертывать производственные приложения (например, Etcd) из OperatorHub или приватных реестров одним кликом. Корпоративные расширения: Alauda Container Platform расширяет политики RBAC и возможности мультикластерного распространения для соответствия требованиям корпоративной безопасности.

CRD Operator Backed Application

Этот Operator разработан и реализован с полным соблюдением стандартов и решений сообщества с открытым исходным кодом. Его Custom Resource Definition (CRD) продуманно включает лучшие практики и архитектурные паттерны, широко используемые в экосистеме Kubernetes. Референсные материалы по дизайну CRD:

  1. CatalogSource: Определяет источник пакетов Operator, доступных в кластере, таких как OperatorHub или пользовательские репозитории Operator.

  2. ClusterServiceVersion (CSV): Основное определение метаданных Operator, содержащее имя, версию, предоставляемые API, необходимые разрешения, стратегию установки и подробную информацию о жизненном цикле.

  3. InstallPlan: Фактический план выполнения установки Operator, автоматически создаваемый OLM на основе Subscription и CSV, с детализацией шагов по созданию Operator и его зависимых ресурсов.

  4. OperatorGroup: Определяет набор целевых namespace, в которых Operator будет предоставлять свои сервисы и согласовывать ресурсы, а также ограничивает область действия разрешений RBAC Operator.

  5. Subscription: Используется для объявления конкретного Operator, который пользователь хочет установить и отслеживать в кластере, включая имя Operator, целевой канал (например, stable, alpha) и стратегию обновления. OLM использует Subscription для создания и управления установкой и обновлениями Operator.

Создание Operator Backed Application через веб-консоль

  1. В Container Platform перейдите в Applications > Applications в левой боковой панели.

  2. Нажмите Create.

  3. Выберите способ создания Create from Catalog.

  4. Выберите экземпляр Operator-Backed и настройте Custom Resource Parameters. Выберите управляемый Operator-ом экземпляр приложения и настройте его спецификации Custom Resource (CR) в манифесте CR, включая:

    • spec.resources.limits (ограничения ресурсов на уровне контейнера).
    • spec.resourceQuota (политики квот, определённые Operator). Другие параметры CR, такие как spec.replicas, spec.storage.className и т.д.
  5. Нажмите Create.

Веб-консоль перейдёт на страницу Applications > Operator Backed Apps.

INFO

Примечание: Процесс создания ресурсов Kubernetes требует асинхронного согласования. Завершение может занять несколько минут в зависимости от состояния кластера.

Устранение неполадок

Если создание ресурса не удалось:

  1. Проверьте ошибки согласования контроллера:
    kubectl get events --field-selector involvedObject.kind=<Your-Custom-Resource> --sort-by=.metadata.creationTimestamp
  2. Проверьте доступность API-ресурса:
    kubectl api-resources | grep <Your-Resource-Type>
  3. Повторите создание после проверки готовности CRD/Operator:
    kubectl apply -f your-resource-manifest.yaml