Запуск Crypto API

Подготовка к запуску

Сначала необходимо извлечь docker-образ Crypto API из дистрибутива. Далее запускаем терминал и выполняем в нем команды, настраивающие его на работу с хранилищем docker-образов в Minikube:

minikube docker-env
eval $(minikube -p minikube docker-env)

Примечание

В примерах будет использоваться полный номер версии TerraLink xDE Pro 3.2403.23145.1, который включает номер релиза и билда. В случае использования другого номера версии, замените его во всех приведенных примерах команд и содержимого файлов.

Загрузка docker-образа

Переходим в папку Cryptography.REST и загружаем docker-образ из tar-файла:

docker load -i terralink-xdepro-cryptography-rest-3.2403.23145.1.tar

Результатом выполнения команды будет сообщение о загрузке образа:

Загрузка docker-образа из файла

Получение сертификатов в Base64

Для корректной работы Crypto API необходимо передать содержимое pfx-файлов с сертификатами в формате Base64.

Сначала создадим папку certificates и скопируем в нее сертификаты. В нашем случае, в папку добавлено 4 файла: «1.pfx», «2.pfx», «3.pfx», «4.pfx». Для всех сертификатов был использован пароль 1.

Папка с сертификатами

Далее заполним в файле ContainerConfiguration.json поля Certificates и CertificatesFolderPath. Остальные поля оставляем без изменений.

"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:

. .\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"
    }
}

Запускаем созданный скрипт:

pwsh get-certificates.ps1

В результате будет создан файл list.env с перечнем сертификатов и паролей к ним. Содержимое этого файла будет использовано в следующем разделе.

Переменные среды окружения с содержимым сертификатов

Создание приложения

Создаем файл crypto-api-deployment.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. В переменные окружения были добавлены сертификаты, полученные на предыдущем шаге.

Применяем конфигурацию:

kubectl apply -f crypto-api-deployment.yaml

Создание сервиса

Теперь необходимо создать сервис для доступа к приложению извне. Для этого создадим файл crypto-api-service.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

Применяем конфигурацию:

kubectl apply -f crypto-api-service.yaml

Получение адреса сервиса

Получаем адрес, по которому можно подключиться к созданному сервису:

minikube service --url crypto-api-service

Команда выведет URL-адрес сервиса, который будет использован другими модулями для подключения к Crypto API.

Получение url сервиса

Проверка установленного компонента

В качестве проверки успешности запуска Crypto API можно открыть страницу в браузере и перейти по полученному адресу. Должна открыться страница Swagger UI.