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
-
Установите оператор 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 -
Установите манифест в кластер Kubernetes, выполнив команду:
kubectl apply -f ServiceMeshOperator.yaml -
Проверьте состояние оператора после установки.
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. -
Сохраните один из представленных ниже манифестов в файл, например,
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. -
Установите манифест в кластер Kubernetes, выполнив команду:
kubectl apply -f NovaServiceMesh.yaml -
Проверьте состояние запущенных компонентов Nova Service Mesh.
kubectl get pods -n nova-service-mesh -
Проверьте состояние запущенных компонентов Nova Service Mesh.
kubectl get pods -n nova-tracing -
Проверьте статус установки ресурса.
kubectl get servicemeshes.apps.nova-platform.io
2.2. Установка с помощью Nova Console
Установите модуль Nova Service Mesh через Nova Console OperatorHUB. Для этого выполните следующие шаги.
-
Установите оператор Nova ServiceMesh Operator. В Nova Console в главном меню выберите Operators → OperatorHUB. Выберите Nova ServiceMesh Operator. Нажмите кнопку Установить.
Заполните поля формы по примеру, представленному на скриншоте.
Подтвердите установку, нажав Установить.
-
Перейдите в раздел Operators → Установленные операторы. Выберите Nova ServiceMesh Operator или сразу после установки нажмите Открыть оператор.
-
Перейдите ко вкладке ServiceMesh и нажмите на кнопку Создать ServiceMesh.
-
Заполнить настройки ServiceMesh можно двумя способами:
-
С помощью формы
-
С помощью манифеста
Установка в минимальной конфигурации
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.
-
-
Нажмите Создать. Отслеживайте статус на вкладке ServiceMesh на странице оператора.