﻿# Установка External Secrets Operator 

> [HTML Version](install-external-secrets-operator.html)

External Secrets Operator — оператор для Kubernetes, который интегрирует внешние системы управления секретами, такие как [HashiCorp Vault](install-vault.md). Оператор считывает информацию из внешних API и автоматически создаёт секреты Kubernetes.

Установка External Secrets Operator состоит из нескольких этапов:

1. [Загрузка Helm-чарта и конфигурационного файла External Secrets Operator](#install-helm-and-eso).

2. [Заполнение конфигурационного файла External Secrets Operator](#config-file-eso).

3. [Установка External Secrets Operator с помощью Helm в Kubernetes-кластер](#install-eso).

4. [Настройка параметра создания секрета elma365-db-connections в Helm-чарте ELMA365](#elma365-db-connections).

## Шаг 1. Загрузка Helm-чарта и конфигурационного файла External Secrets Operator

Для установки через интернет получите конфигурационный файл \[OBJECT\], выполнив команду:

````
helm repo add elma365 https://charts.elma365.tech   
helm repo update  
helm show values elma365/external-secrets > values-external-secrets.yaml

````
Получение конфигурационного файла для установки в закрытом контуре без доступа в интернет

1. На компьютере с доступом в интернет скачайте образы ELMA365 и загрузите их в локальный реестр образов, выполнив следующую команду:

````
helm repo add elma365 https://charts.elma365.tech   
helm repo update  
helm pull elma365/external-secrets

````
Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Полученный архив чарта **external-secrets-X.Y.Z.tgz** скопируйте на сервер, где будет производиться установка.

3. Распакуйте этот чарт и скопируйте конфигурационный файл по умолчанию \[OBJECT\] в \[OBJECT\]:

````
tar -xf external-secrets-X.Y.Z.tgz  
cp external-secrets/values.yaml values-external-secrets.yaml
````

## ````
Шаг 2. Заполнение конфигурационного файла External Secrets Operator

Заполните конфигурационный файл \[OBJECT\] для установки сервиса **external-secrets**:

1. В параметре \[OBJECT\] укажите \[OBJECT\], в котором установлено приложение ELMA365.

2. В параметре \[OBJECT\] вместо значения **http://vault-server.vault:8200/** укажите адрес, по которому доступен сервис **Vault**. В примере ниже указан сервис **Vault**, установленный в Kubernetes в \[OBJECT\] **vault**.

3. В параметрах \[OBJECT\], \[OBJECT\] и \[OBJECT\] укажите данные механизма секретов \[OBJECT\] в **Vault**.

4. В параметрах \[OBJECT\] и \[OBJECT\] укажите сервисный аккаунт и роль, которая связывает политику с сервисным аккаунтом Kubernetes.

5. В параметрах раздела \[OBJECT\] укажите ключи секрета в **Vault**.

````
\# Настройки external-secrets  
external-secrets:  
\# настройки секрета elma365-db-connections  
  elma365DBConnections:  
\# namespace, где будет установлена ELMA365 и создан секрет (перед установкой его необходимо создать)  
    namespace: elma365  
\# адрес сервера vault  
    serverVault: "http://vault-server.vault:8200"  
\# путь, по которому включен механизм секретов kv  
    kvPath: "secret"  
\# путь до секрета в vault  
    keyPath: "elma365/db"  
\# версия механизма секретов kv  
    kvVersion: "v2"  
\# роль, которая связывает политику с сервисным аккаунтом Kubernetes  
    authKubernetesRole: "read-secret-elma365"  
\# сервисный аккаунт в кластере Kubernetes  
    authKubernetesServiceAccount: "vault-auth"  
\# ключи секрета в vault  
    key:  
      psqlUrl: PSQL\_URL  
      roPsqlUrl: RO\_POSTGRES\_URL  
      poolPsqlUrl: ELMA365\_POOL\_POSTGRES\_URL  
      mongoUrl: MONGO\_URL  
      amqpUrl: AMQP\_URL  
      redisUrl: REDIS\_URL  
      vahterMongoUrl: VAHTER\_MONGO\_URL  
      s3BackendAddress: S3\_BACKEND\_ADDRESS  
      s3BackendRegion: S3\_REGION  
      s3Bucket: S3\_BUCKET  
      s3Key: S3\_KEY  
      s3SecretAccessKey: S3\_SECRET  
      s3SslEnabled: S3\_SSL\_ENABLED  
      s3Method: S3\_UPLOAD\_METHOD  
      s3DumpUrl: S3\_DUMP\_URL  
      s3VirtualHostedStyleEnabled: S3\_VIRTUAL\_HOSTED\_STYLE\_ENABLED  
\# количество реплик для обеспечения высокой доступности  
  replicaCount: 1  
\# CRD применяются автоматически из директории /crds  
  installCRDs: false  
...

````
Заполнение параметров подключения к приватному registry для установки в закрытом контуре без доступа в интернет

  
Для подключения к приватному **registry** нужно:

1. Скачать образы ELMA365 и загрузить их в локальный реестр образов. Подробнее об этом читайте в статье [«Загрузка образов ELMA365»](downloadin-images-elma365.md).

2. Задать адрес и путь в параметрах \[OBJECT\], \[OBJECT\], \[OBJECT\].

3. Указать наименование секрета с правами доступа к приватному **registry** в параметре \[OBJECT\]. Секрет должен быть создан вручную и зашифрован в Base64.

````
\# Настройки external-secrets  
external-secrets:  
...  
\# параметры подключения к приватному registry  
  image:  
    repository: hub.elma365.tech/docker/addons/external-secrets/external-secrets  
    tag: v0.10.2  
\# секрет с правами доступа к приватному registry должен быть создан вручную и закодирован Base64  
  imagePullSecrets:  
      - name: "myRegistryKeySecretName"  
  webhook:  
\# параметры подключения к приватному registry  
    image:  
      repository: hub.elma365.tech/docker/addons/external-secrets/external-secrets  
      tag: v0.10.2  
\# секрет с правами доступа к приватному registry должен быть создан вручную и закодирован Base64  
    imagePullSecrets:  
      - name: "myRegistryKeySecretName"  
  certController:  
\# параметры подключения к приватному registry  
    image:  
      repository: hub.elma365.tech/docker/addons/external-secrets/external-secrets  
      tag: v0.10.2  
\# секрет с правами доступа к приватному registry должен быть создан вручную и закодирован Base64  
    imagePullSecrets:  
      - name: "myRegistryKeySecretName"

````
где формат **repository**:

- адрес — \[OBJECT\];

- путь — \[OBJECT\].

## Шаг 3. Установка External Secrets Operator с помощью Helm в Kubernetes-кластер

Выполните установку сервиса **external-secrets** в отдельный \[OBJECT\], например, в **external-secrets**. \[OBJECT\] будет создан во время установки, если не был создан ранее.

Для установки через интернет выполните команду:

````
helm upgrade --install external-secrets elma365/external-secrets -f values-external-secrets.yaml -n external-secrets --create-namespace 

````
Для установки без доступа в интернет перейдите в каталог с загруженным чартом и выполните команду:

````
helm upgrade --install external-secrets ./external-secrets -f values-external-secrets.yaml -n external-secrets --create-namespace

````
Проверьте, что сервис **external-secrets** создан:

````
kubectl get external-secrets -n elma365

````
Проверьте созданный секрет:

````
kubectl describe secrets elma365-db-connections -n elma365 

## ````
Шаг 4. Настройка параметра создания секрета elma365-db-connections в Helm-чарте ELMA365

Перед установкой или обновлением Helm-чарта ELMA365 необходимо отключить создание секрета \[OBJECT\] с параметрами конфигурационного файла \[OBJECT\]. Для этого в \[OBJECT\] в параметре \[OBJECT\] установите значение \[OBJECT\].

Подробнее об установке и обновлении ELMA365 читайте в статьях [«Установка ELMA365 Enterprise в Kubernetes»](installing-elma365-enterprise.md) и [«Обновление версии ELMA365 Enterprise»](version-update-enterprise.md).

## Удалить чарт External Secrets Operator с помощью Helm в Kubernetes-кластере

Чтобы удалить сервис **external-secrets** в \[OBJECT\] **external-secrets**, выполните команду:

````
helm uninstall external-secrets -n external-secrets
````