ELMA365 On-Premises > ELMA365 On-Premises Enterprise > Установка дополнений для приложения ELMA365 / Установка Linkerd 

Установка Linkerd

Linkerd — это выделенный уровень инфраструктуры, который помогает обрабатывать связь между сервисами, автоматически шифровать соединения, обрабатывать повторные запросы и тайм-ауты. Установка компонента дополнений Linkerd позволяет обеспечить балансировку gRPC-трафика при масштабировании сервисов ELMA365. Также он предоставляет использование телеметрии (коэффициент успешности, задержки) и многое другое.

Linkerd является необходимым компонентом для включения поддержки масштабирования сервисов на стороне приложения ELMA365. Без установленного Linkerd масштабирование микросервисов ELMA365 работать не будет.

Про установку Linkerd с помощью инструмента Cert-manager, читайте в статье «Установка Linkerd с помощью Cert-manager».

В этой статье рассмотрим, как:

  • подготовить сертификаты с помощью openssl для Linkerd и установить его;

Установка Linkerd состоит из четырёх этапов:

  1. Подготовить сертификаты для Linkerd.
  2. Загрузить Helm-чарт и конфигурационный файл.
  3. Заполнить конфигурационный файл.
  4. Установить чарт Linkerd с помощью Helm в Kubernetes-кластер.

Шаг 1: Подготовить сертификаты для Linkerd

Сгенерируйте сертификаты с помощью openssl, выполнив команды ниже. Linkerd нужен сертификат привязки доверия и сертификаты эмитента с соответствующим ключом для поддержки взаимных TLS-соединений между сервисами. Для всех сертификатов требуется алгоритм ECDSA P-256.

# Создать закрытый ключ CA
openssl ecparam -name prime256v1 -genkey -noout -out ca-private.pem
# Создать открытый ключ CA
openssl ec -in ca-private.pem -pubout -out ca-public.pem
# Создать самоподписанный сертификат CA
openssl req -x509 -new -key ca-private.pem -days 3650 -out ca.crt -subj "/CN=root.linkerd.cluster.local"
# Создать закрытый ключ эмитента
openssl ecparam -name prime256v1 -genkey -noout -out issuer-private.pem
# Создать открытый ключ эмитента
openssl ec -in issuer-private.pem -pubout -out issuer-public.pem
# Создать запрос на подпись сертификата
openssl req -new -key issuer-private.pem -out issuer.csr -subj "/CN=identity.linkerd.cluster.local" -addext basicConstraints=critical,CA:TRUE
# Создать сертификат эмитента, подписав запрос
openssl x509 \
-extfile /etc/ssl/openssl.cnf \
-extensions v3_ca \
-req \
-in issuer.csr \
-days 3650 \
-CA ca.crt \
-CAkey ca-private.pem \
-CAcreateserial \
-extensions v3_ca \
-out issuer.crt
# Удалить запрос на подпись сертификата
rm issuer.csr

Шаг 2: Загрузить Helm-чарт и конфигурационный файл

Для установки через интернет получите конфигурационный файл values-linkerd.yaml, выполнив команду:

helm repo add elma365 https://charts.elma365.tech
helm repo update
helm show values elma365/linkerd > values-linkerd.yaml

Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

Шаг 3: Заполнить конфигурационный файл

Заполните конфигурационный файл values-linkerd.yaml для установки Linkerd.

Укажите DNS-имя домена Kubernetes-кластера в параметре linkerd.clusterDomain, в данном случае — cluster.local.

## Настройки linkerd
linkerd:
  ## DNS-имя домена Kubernetes
  clusterDomain: cluster.local
  ## добавляет ресурс PodSecurityPolicy (устарело начиная с версии k8s v1.21)
  enablePSP: false
  ## отключить heartbeat
  disableHeartBeat: false  
...

Для обеспечения высокой доступности вы можете раскомментировать параметры секции Параметры для обеспечения высокой доступности.

Пример включения высокой доступности:

## Настройки linkerd
linkerd:
...
##
## Параметры для обеспечения высокой доступности
  controllerReplicas: 3
  enablePodDisruptionBudget: true
  deploymentStrategy:
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 25%
  enablePodAntiAffinity: true
  proxy:
    resources:
      cpu:
        request: 100m
      memory:
        limit: 250Mi
        request: 20Mi
  controllerResources: &controller_resources
    cpu: &controller_resources_cpu
      limit: ""
      request: 100m
    memory:
      limit: 250Mi
      request: 50Mi
  destinationResources: *controller_resources
  identityResources:
    cpu: *controller_resources_cpu
    memory:
      limit: 250Mi
      request: 10Mi
  heartbeatResources: *controller_resources
  proxyInjectorResources: *controller_resources
  webhookFailurePolicy: Fail
  spValidatorResources: *controller_resources
## 
...

Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

Шаг 4: Установить чарт Linkerd с помощью Helm в Kubernetes-кластер

Выполните установку чарта Linkerd в namespace linkerd. Namespace будет создан во время установки, если не был создан ранее.

В рамках статьи, команда установки выполняется из директории, где на шаге 1 были созданы сертификаты. Если выполнение команды происходит из другой директории, укажите пути до созданых на шаге 1 сертификатов (ca.crt, issuer.crt, issuer-private.pem).

Для установки через интернет:

helm upgrade --install linkerd elma365/linkerd -f values-linkerd.yaml -n linkerd --create-namespace \
--set-file linkerd.identityTrustAnchorsPEM=ca.crt \
--set-file linkerd.identity.issuer.tls.crtPEM=issuer.crt \
--set-file linkerd.identity.issuer.tls.keyPEM=issuer-private.pem

Для офлайн-установки без доступа в интернет:

helm upgrade --install linkerd ./linkerd -f values-linkerd.yaml -n linkerd --create-namespace \
--set-file linkerd.identityTrustAnchorsPEM=ca.crt \
--set-file linkerd.identity.issuer.tls.crtPEM=issuer.crt \
--set-file linkerd.identity.issuer.tls.keyPEM=issuer-private.pem

Начало внимание

Установка компонента дополнений Linkerd автоматически не включает поддержку масштабирования сервисов на стороне приложения ELMA365.

После установки измените параметры приложения ELMA365 и настройте автомасштабирование на стороне приложения ELMA365.

Подробнее читайте в статье «Включение автомасштабирования сервисов в ELMA365 Enterprise».

Конец внимание

Удалить чарт Linkerd с помощью Helm в Kubernetes-кластере

Начало внимание

Перед удалением компонента дополнений Linkerd отключите автомасштабирование на стороне приложения ELMA365.

Конец внимание

Чтобы удалить чарт Linkerd в namespace linkerd, выполните команду:

helm uninstall linkerd -n linkerd