• Русский
  • 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