.. _Install_FaultTolerance_Minikube_StartingCryptoApi: Запуск Crypto API ################# Подготовка к запуску ******************** Сначала необходимо извлечь docker-образ Crypto API из дистрибутива. Далее запускаем терминал и выполняем в нем команды, настраивающие его на работу с хранилищем docker-образов в Minikube: .. code-block:: console minikube docker-env eval $(minikube -p minikube docker-env) .. note:: В примерах будет использоваться полный номер версии TerraLink xDE Pro 3.2403.23145.1, который включает номер релиза и билда. В случае использования другого номера версии, замените его во всех приведенных примерах команд и содержимого файлов. Загрузка docker-образа ********************** Переходим в папку ``Cryptography.REST`` и загружаем docker-образ из tar-файла: .. code-block:: console docker load -i terralink-xdepro-cryptography-rest-3.2403.23145.1.tar Результатом выполнения команды будет сообщение о загрузке образа: .. image:: ./img/CryptoApi-LoadImage.png :align: center :alt: Загрузка docker-образа из файла :scale: 66 Получение сертификатов в Base64 ******************************* Для корректной работы Crypto API необходимо передать содержимое pfx-файлов с сертификатами в формате Base64. Сначала создадим папку ``certificates`` и скопируем в нее сертификаты. В нашем случае, в папку добавлено 4 файла: "1.pfx", "2.pfx", "3.pfx", "4.pfx". Для всех сертификатов был использован пароль ``1``. .. image:: ./img/CryptoApi-CertificatesFolder.png :align: center :alt: Папка с сертификатами Далее заполним в файле ``ContainerConfiguration.json`` поля ``Certificates`` и ``CertificatesFolderPath``. Остальные поля оставляем без изменений. .. code-block:: javascript "Certificates": [ { "FileName" : "1.pfx", "Password" : "1" }, { "FileName" : "2.pfx", "Password" : "1" }, { "FileName" : "3.pfx", "Password" : "1" }, { "FileName" : "4.pfx", "Password" : "1" } ], "CertificatesFolderPath": "./certificates/" Для получения содержимого в Base64 создадим скрипт ``get-certificates.ps1``: .. code-block:: powershell . .\Utils\CreateEnvironmentVariables.ps1 $configuration = Get-Content ".\ContainerConfiguration.json" | Out-String | ConvertFrom-Json New-Item "list.env" -ItemType File $items = CreateEnvironmentVariables($configuration) foreach ($key in $items.Keys) { if ($key.StartsWith("DOCFLOW_CERTIFICATE_")) { ("$key=$($items[$key])").Replace('"', '\"') | Add-Content -Path "list.env" } } Запускаем созданный скрипт: .. code-block:: console pwsh get-certificates.ps1 В результате будет создан файл list.env с перечнем сертификатов и паролей к ним. Содержимое этого файла будет использовано в следующем разделе. .. image:: ./img/CryptoApi-CertificatesEnv.png :align: center :alt: Переменные среды окружения с содержимым сертификатов :scale: 63 Создание приложения ******************* Создаем файл ``crypto-api-deployment.yaml`` с конфигурацией приложения: .. code-block:: yaml apiVersion: apps/v1 kind: Deployment metadata: name: crypto-api labels: name: xdepro component: crypto-api spec: replicas: 2 selector: matchLabels: name: xdepro component: crypto-api template: metadata: labels: name: xdepro component: crypto-api spec: volumes: - name: crypto-api-logs-storage persistentVolumeClaim: claimName: logs-pv-claim containers: - name: crypto-api-container image: terralink-xdepro-cryptography-rest:3.2403.23145.1 imagePullPolicy: Never ports: - containerPort: 80 volumeMounts: - mountPath: "/usr/share/TerraLink.xDEPro" name: crypto-api-logs-storage env: - name: DOCFLOW_CONNECTION_STRING value: "User ID=LOGIN;Password=PASSWORD;Host=100.100.100.100;Port=5434;Database=DOCFLOW_DB;MaxPoolSize=500" - name: DOCFLOW_LOG_TARGET value: "AsyncFileLog" - name: DOCFLOW_PROVIDER_NAME value: "Npgsql" - name: DOCFLOW_APPSETTINGS value: "{\"Jwt\":{\"Key\":\"831AAB02-60F3-440F-80F6-2D5C5DAC2DCA\"},\"DataProtectionKey\":\"d416487fa3ac4a1ca4e342b8c5971d18\"}" - name: DOCFLOW_CRYPTOPRO_LICENSE value: "3030P-...-UHE29" - name: DOCFLOW_CERTIFICATE_1 value: "{\"RawData\":\"MIIS7gIB.../YswICB9A=\",\"Password\":\"1\"}" - name: DOCFLOW_CERTIFICATE_2 value: "{\"RawData\":\"MIIZ1QIB...7T1wICB9A=\",\"Password\":\"1\"}" - name: DOCFLOW_CERTIFICATE_3 value: "{\"RawData\":\"MIIZ3QIB...VRAgIH0A==\",\"Password\":\"1\"}" - name: DOCFLOW_CERTIFICATE_4 value: "{\"RawData\":\"MIIZ1gIB...W7Qq0CAgfQ\",\"Password\":\"1\"}" В этой конфигурации: - создается 2 реплики; - в папку ``/usr/share/TerraLink.xDEPro`` монтируется том с логами ``logs-pv-claim``, созданный ранее; - для создания контейнеров используется образ ``terralink-xdepro-cryptography-rest:3.2403.23145.1``; - параметры контейнера указываются в переменных окружения, хранящихся в поле ``.spec.template.spec.containers.env``. В переменные окружения были добавлены сертификаты, полученные на предыдущем шаге. Применяем конфигурацию: .. code-block:: console kubectl apply -f crypto-api-deployment.yaml Создание сервиса **************** Теперь необходимо создать сервис для доступа к приложению извне. Для этого создадим файл ``crypto-api-service.yaml`` с конфигурацией сервиса: .. code-block:: yaml apiVersion: v1 kind: Service metadata: name: crypto-api-service labels: name: xdepro component: crypto-api spec: selector: name: xdepro component: crypto-api ports: - port: 80 targetPort: 80 type: LoadBalancer Применяем конфигурацию: .. code-block:: console kubectl apply -f crypto-api-service.yaml Получение адреса сервиса ************************ Получаем адрес, по которому можно подключиться к созданному сервису: .. code-block:: console minikube service --url crypto-api-service Команда выведет URL-адрес сервиса, который будет использован другими модулями для подключения к Crypto API. .. image:: ./img/CryptoApi-GetServiceUrl.png :align: center :alt: Получение url сервиса :scale: 82 Проверка установленного компонента ********************************** В качестве проверки успешности запуска Crypto API можно открыть страницу в браузере и перейти по полученному адресу. Должна открыться страница :ref:`Swagger UI `.