Для улучшения работы сайта мы используем файлы 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

2.1. Установка с помощью kubectl

  1. Установите оператор nova-servicemesh-operator. Для этого сохраните представленный ниже манифест в файл, например ServiceMeshOperator.yaml.

    Пример манифеста для установки nova-servicemesh-operator
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: nova-servicemesh-operator
      namespace: nova-operators
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: nova-servicemesh-operator
      source: nova-catalog
      sourceNamespace: nova-operatorhub
      startingCSV: nova-servicemesh-operator.v1.0.0
  2. Установите манифест в кластер Kubernetes, выполнив команду:

     kubectl apply -f ServiceMeshOperator.yaml
  3. Проверьте состояние оператора после установки.

    kubectl get pods -n nova-operators
    Пример вывода:
    NAME                                             READY   STATUS    RESTARTS      AGE
    nova-servicemesh-operator-6f4fd9d5d4-69nvf       1/1     Running   1 (44h ago)   5d

    Убедитесь, что оператор находится в статусе Running. В столбце READY должно быть 1/1.

  4. Сохраните один из представленных ниже манифестов в файл, например, NovaServiceMesh.yaml.

    Установка в минимальной конфигурации
    apiVersion: servicemesh.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
    Установка в высокодоступной конфигурации
    apiVersion: servicemesh.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.
  5. Установите манифест в кластер Kubernetes, выполнив команду:

     kubectl apply -f NovaServiceMesh.yaml
  6. Проверьте состояние запущенных компонентов Nova Service Mesh.

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

    kubectl get pods -n nova-tracing
  8. Проверьте статус установки ресурса.

    kubectl get servicemeshes.apps.nova-platform.io

2.2. Установка с помощью Nova Console

Установите модуль Nova Service Mesh через Nova Console OperatorHUB. Для этого выполните следующие шаги.

  1. Установите оператор Nova ServiceMesh Operator. В Nova Console в главном меню выберите OperatorsOperatorHUB. Выберите Nova ServiceMesh Operator. Нажмите кнопку Установить.

    Заполните поля формы по примеру, представленному на скриншоте.

    servicemesh 6

    Подтвердите установку, нажав Установить.

  2. Перейдите в раздел OperatorsУстановленные операторы. Выберите Nova ServiceMesh Operator или сразу после установки нажмите Открыть оператор.

  3. Перейдите ко вкладке ServiceMesh и нажмите на кнопку Создать ServiceMesh.

  4. Заполнить настройки ServiceMesh можно двумя способами:

    • С помощью формы

      servicemesh 1
    • С помощью манифеста

      Установка в минимальной конфигурации
      apiVersion: servicemesh.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
      Установка в высокодоступной конфигурации
      apiVersion: servicemesh.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.
  5. Нажмите Создать. Отслеживайте статус на вкладке ServiceMesh на странице оператора.

3. Удаление модуля ServiceMesh

3.1. Удаление с помощью OperatorHUB

Для полного удаления ServiceMesh из кластера Nova выполните следующие шаги.

  1. Перейдите в раздел OperatorsУстановленные операторы. Выберите Nova ServiceMesh Operator.

  2. Перейдите на вкладку ServiceMesh.

  3. Выберите установленный модуль и нажмите Удалить.

    servicemesh 5