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

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

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

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

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

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

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

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

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

      • Alauda Service Mesh Operator
      • Flagger Operator
      • Alauda Build of Jaeger Operator
      • Alauda Build of OpenTelemetry Operator
      WARNING

      При загрузке operators с помощью violet push не добавляйте параметр --target-catalog-source — используйте каталог source по умолчанию, определенный внутри operator.

    • Убедитесь, что в cluster развернут plugin Prometheus или plugin VictoriaMetrics.

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

    • Убедитесь, что доступен Elasticsearch. Service mesh может взаимодействовать с 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 является однокластерной, и заполните параметры интерфейса для Elasticsearch и системы мониторинга. Можно выбрать существующую систему платформы или внешнюю систему.
      • Если требуется строгая высокая доступность, задайте Pod anti-affinity как mandatory.
      • Ресурсы компонентов можно оставить со значениями по умолчанию, но по мере роста масштаба services в mesh компонентам потребуется увеличение ресурсов. Настройте политики оповещений для компонентов 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.

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

    Конфигурация на уровне cluster

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

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