• Русский
  • Создание service mesh

    В этом документе описывается, как создать service mesh для одного кластера. Перед началом убедитесь, что вы знакомы со следующими темами:

    • Модели развертывания Mesh: выберите модель развертывания mesh, которая подходит для ваших задач.
    • Описание компонентов Mesh: изучите роли компонентов mesh и подготовьте необходимые ресурсы CPU и memory для service mesh.

    Инструкции по созданию service mesh для нескольких кластеров см. в документации Multi-Cluster Service Mesh.

    Ограничения и лимиты

    • В одном кластере допускается только один service mesh.
    • Если cluster является глобальным cluster и платформа находится в среде disaster recovery (то есть у global есть primary cluster и disaster recovery cluster), global cluster не может развернуть service mesh.
    • Если cluster является сетью dual-stack IPv4/IPv6, развертывание service mesh невозможно.

    Предварительные требования

    • Установлен Alauda Service Mesh Essentials Cluster Plugin.

    • Скачайте следующий installation package, соответствующий архитектуре вашей platform, и используйте механизм Upload Packages, чтобы загрузить package в global cluster и целевой cluster (не устанавливайте их вручную).

      • Alauda Service Mesh Operator
      • Flagger Operator
      • Alauda Build of Jaeger Operator
      • Alauda Build of OpenTelemetry Operator
    • Убедитесь, что в cluster развернут plugin Prometheus или plugin VictoriaMetrics.

      Примечание: Когда VictoriaMetrics развернут в архитектуре multi-cluster, vmstorage может находиться в другом cluster, отличном от service mesh.

    • Убедитесь, что доступен Elasticsearch. Service mesh может взаимодействовать с logging plugin Elasticsearch в cluster или с вашим собственным Elasticsearch.

    • Если cluster является cluster OpenShift, необходимо также выполнить следующие предварительные требования:

      • Namespace istio-system создан.
      • Добавьте namespace istio-system в группу anyuid SCC (Security Context Constraints). Для этого войдите на bastion host cluster OpenShift и выполните команду:
        oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system

    Шаги

    1. В левой панели навигации нажмите Service Mesh > Mesh.
    2. Нажмите Create Service Mesh.
    3. Выберите cluster и версию Istio для развертывания service mesh. В расширенной конфигурации убедитесь, что архитектура mesh — single-cluster, и заполните параметры интерфейса для Elasticsearch и monitoring system. Можно выбрать существующую system platform или external system.
      • Если высокая доступность строго обязательна, установите Pod anti-affinity в значение mandatory.
      • Для компонентов можно использовать значения по умолчанию, но по мере роста масштаба services в mesh компонентам потребуется масштабирование. Настройте политики alert для компонентов mesh заранее, чтобы получать уведомления, когда потребуется масштабирование.

    Дополнительные сведения см. в Mesh Parameter Description

    Примечание: Если cluster является cluster OpenShift, mesh автоматически обнаружит и по умолчанию развернет компонент istio-cni.

    Дальнейшие действия

    • Включите Istio CNI, чтобы не использовать privileged init containers в каждом Pod.
    • Включите Global Rate Limiting.
    • Используйте инструмент Istioctl.
    • Мониторьте компоненты Mesh.

    Описание параметров Mesh

    Глобальная конфигурация

    Глобальная конфигурация mesh будет применена ко всем cluster, где развернут mesh.

    ПараметрОписание
    Interface with ElasticsearchPlatform: Интеграция с logging plugin Elasticsearch на любом cluster platform. Выберите cluster, в котором расположен logging plugin Elasticsearch.
    External: Интеграция с external logging plugin Elasticsearch. Пользователю необходимо настроить следующие параметры:
    Access Address: Адрес доступа к Elasticsearch, начинающийся с http:// или https://.
    Authentication Method: Способ аутентификации для доступа к Elasticsearch.
    - Basic Auth: Введите имя пользователя и пароль для проверки подлинности пользователя.
    - No Authentication: Для доступа аутентификация не требуется.
    Interface with Monitoring SystemPlatform: Интеграция с plugin Prometheus или plugin VictoriaMetrics в cluster.
    External: Интеграция с Prometheus или VictoriaMetrics, предоставляемыми external plugin. Пользователю необходимо настроить следующие параметры:
    Data Query Address: Адрес запроса данных monitoring component, начинающийся с http:// или https://.
    Authentication Method: Способ аутентификации для доступа к monitoring system.
    - Basic Auth: Введите имя пользователя и пароль для проверки подлинности пользователя.
    - No Authentication: Для доступа аутентификация не требуется.
    Примечание: Из-за невозможности plugin Prometheus агрегировать данные мониторинга из нескольких cluster service mesh в этом cluster не может добавить дополнительные cluster для формирования multi-cluster service mesh.

    Конфигурация по измерению cluster

    Конфигурация по измерению cluster применяется только к выбранному cluster.

    ПараметрОписание
    Sidecar ConfigurationResource Quota: Значение по умолчанию квоты ресурсов sidecar на уровне cluster. Его можно изменить с учетом фактических условий при внедрении sidecar для конкретных services, но оно не может превышать максимальный предел квоты контейнеров namespace (LimitRange), в котором расположен sidecar.
    Trace ConfigurationSampling Rate: Значение по умолчанию для sampling rate trace sidecar на уровне cluster.
    Redis ConfigurationДолжно быть настроено только при использовании функции Global Rate Limiting в data plane. Подробные способы настройки см. в разделе включения Global Rate Limiting.
    HTTP Retry PolicyRetry Count: Значение по умолчанию максимального числа повторных попыток HTTP на уровне cluster.
    Примечание: Retry Count в политике service routing Timeout and Retry переопределяет это значение по умолчанию.

    Конфигурация компонентов

    Примечание: Компоненты Mesh развертываются в определенных namespace cluster в виде Deployments. После успешного создания mesh вы можете просмотреть состояние компонентов на вкладке Components или нажать Component Name, чтобы перейти в namespace, где компонент развернут на Container Platform, и просмотреть подробную информацию о Deployment работающего компонента.

    ПараметрОписание
    Pod Anti-AffinityKubernetes будет размещать Pod компонентов на nodes, соответствующие настройкам Pod Anti-Affinity.
    Mandatory: На одном node может работать только один Pod одного и того же компонента.
    Preferred: На одном node может работать несколько Pod одного и того же компонента. Kubernetes будет пытаться равномерно размещать Pod компонента по доступным nodes согласно алгоритму планирования, но не может гарантировать наличие Pod компонента на каждом node.
    Instance CountОжидаемое количество Pod компонента, задается в соответствии с фактическим объемом бизнес-запросов.
    Resource QuotaЗначение запроса ресурсов (requests) CPU и memory для каждого экземпляра контейнера компонента при его создании, а также значение лимита (limits) доступных ресурсов контейнера. Задайте его разумно с учетом фактического объема бизнеса и количества экземпляров.
    Deployment NodeNodes, на которых развертывается компонент. При создании mesh Pod компонента могут быть запланированы только на выбранных nodes.
    ELBHuawei Cloud Elastic Load Balancer (ELB), используемый для предоставления функции балансировки нагрузки для Istio Gateway в cluster CCE. Когда выбранный cluster является cluster CCE, необходимо заполнить ELB ID и ELB Type, чтобы связать заранее подготовленный для cluster ELB.
    Total ResourcesОбщая квота ресурсов (CPU, memory), необходимая для создания всех экземпляров контейнеров компонента при текущей конфигурации. Если для компонента включено auto-scaling, расчет выполняется по максимальному числу экземпляров.