Запуск 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
Результатом выполнения команды будет сообщение о загрузке образа:
Получение сертификатов в 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.
Проверка установленного компонента¶
В качестве проверки успешности запуска Crypto API можно открыть страницу в браузере и перейти по полученному адресу. Должна открыться страница Swagger UI.