Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Nova Service Mesh. Установка модуля

1. Предварительные условия

Для установки модуля Service Mesh в Nova Container Platform должны быть выполнены следующие условия:

  • Nova Container Platform должна быть версии v6.2.0, v7.1.0 и выше.

  • Перед установкой убедитесь, что в кластере Kubernetes имеются необходимые вычислительные ресурсы для компонентов Service Mesh. Размещение возможно на существующих infra и worker узлах или на отдельно подготовленных узлах. Системные требования для модуля приведены в статье Подготовка вычислительных ресурсов.

  • У вас есть доступ к кластеру с учетной записью, имеющей роль cluster-admin в Kubernetes.

  • Вы установили утилиту kubectl для работы с Kubernetes.

  • Установлены labels и annotations на worker узлы, на которых планируется установка компонента Istio Ingress Controller:

    labels:
        node-role.kubernetes.io/istio-ingressgateway: ''
        node.nova-platform.io/ingress-endpoint: ''  (1)
    annotation:
        ingress-endpoint.nova-platform.io/type: 'istio-ingressgateway'
        ingress-endpoint.nova-platform.io/backend-https-port: '8443'
        ingress-endpoint.nova-platform.io/backend-http-port: '8080'
    1 Если указан node.nova-platform.io/ingress-endpoint, то узел является точкой входа трафика в кластер

2. Установка модуля Nova Service Mesh

  1. Для установки модуля Nova Service Mesh в Nova Container Platform используйте один из представленных далее манифестов:

    Установка в высокодоступной конфигурации
    apiVersion: apps.nova-platform.io/v1alpha1
    kind: ServiceMesh
    metadata:
      name: cluster
    spec:
      cert-manager-istio-csr:
        istiod-cert-duration: 120h (1)
        istiod-cert-key-size: 4096 (2)
        istiod-cert-renew-before: 40h (3)
        log-level: 5 (4)
        max-client-certificate-duration: 120h (5)
        replicas: 3 (6)
        serving-certificate-key-size: 4096 (7)
      grafana:
        replicas: 1 (6)
      istiod:
        enableEnvoyLogs: true (8)
        gatewaySelector: (9)
          node-role.kubernetes.io/istio-ingressgateway: ''
        policy:
          mtlsMode: PERMISSIVE (10)
        replicas: 3 (6)
      jaeger:
        replicas: 3 (6)
      kiali:
        replicas: 3 (6)
      prometheus:
        globalview: true (11)
        replicas: 3 (6)
    1 istiod-cert-duration - срок жизни сертификата isitiod в часах;
    2 istiod-cert-key-size - размер ключа сертификата isitiod;
    3 istiod-cert-renew-before - за сколько часов до истечения сертификата istiod он будет перевыпущен;
    4 log-level - уровень логирования (от 1 до 5);
    5 max-client-certificate-duration - срок жизни сертификата envoy proxy в часах;
    6 replicas - количество реплик компонента. При использовании более одной реплики Grafana возможно возникновение race condition в процессе инициализации, что приводит к ошибкам запуска. На данный момент в поле replicas поддерживается значение 1;
    7 serving-certificate-key-size - размер ключа сертификата envoy proxy;
    8 enableEnvoyLogs - флаг, отвечающий за логирование envoy proxy;
    9 gatewaySelector - селектор для установки istiod;
    10 mtlsMode - режим mtls: (1)STRICT- все соединения должны использовать mTLS (2)PERMISSIVE - возможна работа с mTLS и без (3)DISABLE - mTLS отключен;
    11 globalview - флаг, отвечающий за подключение Thanos sidecar в кластерный Thanos Query для получения метрики из prometheus для service mesh.
    Установка в минимальной конфигурации
    apiVersion: apps.nova-platform.io/v1alpha1
    kind: ServiceMesh
    metadata:
      name: cluster
    spec:
      cert-manager-istio-csr:
        istiod-cert-duration: 120h
        istiod-cert-key-size: 4096
        istiod-cert-renew-before: 40h
        log-level: 5
        max-client-certificate-duration: 120h
        replicas: 1
        serving-certificate-key-size: 4096
      grafana:
        replicas: 1
      istiod:
        enableEnvoyLogs: true
        gatewaySelector:
          node-role.kubernetes.io/istio-ingressgateway: ''
        policy:
          mtlsMode: STRICT
        replicas: 1
      jaeger:
        replicas: 1
      kiali:
        replicas: 1
      prometheus:
        globalview: false
        replicas: 1
  2. Установите модуль через kubectl или Nova Console, используя один из представленных выше манифестов.

    Установка с помощью kubectl
    1. Сохраните один из представленных выше манифестов в файл, например, NovaServiceMesh.yaml.

    2. Установите манифест в кластер Kubernetes, выполнив команду: kubectl apply -f NovaServiceMesh.yaml

    3. Проверьте состояние запущенных компонентов Nova Service Mesh, выполнив команду: kubectl get pods -n nova-service-mesh

    4. Проверьте состояние запущенных компонентов Nova Service Mesh, выполнив команду: kubectl get pods -n nova-tracing

    5. Проверьте статус установки ресурса kubectl get servicemeshes.apps.nova-platform.io

    Установка с помощью Nova Console
    1. Скопируйте один из представленных выше манифестов в буфер обмена.

    2. Выполните вход в Nova Console.

    3. Используйте опцию импорта нового объекта и вставьте в форму ранее скопированный манифест.

    4. Перейдите в раздел Workloads  Pods и выберите Namespace nova-service-mesh и nova-tracing. Проверьте состояние запущенных компонентов Nova Service Mesh.

    5. Перейдите в раздел Administration  CustomResourceDefinitions и выберите CRD Service Mesh. Проверить статус установки ресурса.