User.SPA
Важное примечание: Данная инструкция описывает ручное развертывание без использования Helm и GitLab CI/CD. Артефакты сборки извлекаются из образа и загружаются в S3-бакет my.medikt.net.
Подготовка к развертыванию
Secret'ы
Для конфигурации приложения понадобятся данные из следующих Secret'ов:
Получение данных из Secret'ов выполняется командой:
kubectl get secret <secret-name> -n prod -o jsonpath='{.data}' | jq -r '.[]' | base64 -d
Извлечение артефактов из Docker-образа
# Вытащить Docker образ
docker pull cr.yandex/crpt9c7igqasaqddbg0p/frontend/user.spa:260811.589.3223
# Создать контейнер и извлечь артефакты
mkdir -p artifacts
docker create --name temp-container cr.yandex/crpt9c7igqasaqddbg0p/frontend/user.spa:260811.589.3223
docker cp temp-container:/app/artifacts ./artifacts
docker rm temp-container
Проверка артефактов
ls -1 artifacts/
# Должны быть видны:
200.html
200.html.br
200.html.gz
404.html
404.html.br
404.html.gz
_nuxt
config.overrides.json
favicon.ico
images
index.html
index.html.br
index.html.gz
meta
user
Конфигурация приложения
Создание config.overrides.json
cat > artifacts/config.overrides.json << EOF
{
"userSsrUrl": "https://medikt.net",
"userAuthApiUrl": "https://auth.medikt.net",
"userApiUrl": "https://user.medikt.net",
"uploadApiUrl": "https://upload.medikt.net",
"contentApiUrl": "https://content.medikt.net",
"notificationApiUrl": "https://notification.medikt.net",
"logsApiUrl": "https://logs.medikt.net",
"cookieDomain": ".medikt.net",
"featbit": {
"secretClient": "<client_secret>",
"streamingUri": "wss://els-featuremgr.medikt.net",
"eventsUri": "https://els-featuremgr.medikt.net"
},
"logsApiKey": "<client_token>"
}
EOF
Замените:
<client_secret>- значение из Secretfeatbit-appsettings<client_token>- значение из Secretbrowser-logging-api-secrets
Создание version.txt
echo "260811.589.3223" > artifacts/version.txt
Загрузка в S3-бакет
Настройка AWS CLI
export AWS_ACCESS_KEY_ID=<your-access-key>
export AWS_SECRET_ACCESS_KEY=<your-secret-key>
aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID
aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY
aws configure set default.region ru-central1
Загрузка файлов
cd artifacts
# Загрузка всех файлов с правильными настройками кэширования и Content-Type
aws s3 cp . s3://my.medikt.net/ \
--recursive \
--exclude "*" \
--include "*.html" \
--cache-control "no-cache" \
--endpoint-url https://storage.yandexcloud.net
aws s3 cp . s3://my.medikt.net/ \
--recursive \
--exclude "*" \
--include "*.js" \
--content-type "application/javascript" \
--endpoint-url https://storage.yandexcloud.net
aws s3 cp . s3://my.medikt.net/ \
--recursive \
--exclude "*.html" \
--exclude "*.js" \
--endpoint-url https://storage.yandexcloud.net
# можно выполнить один раз на тестовом развертывании или не выполнять вообще, так как в продакшене этот файл уже есть
aws s3 cp config.overrides.json s3://my.medikt.net/config.overrides.json \
--cache-control "no-cache" \
--endpoint-url https://storage.yandexcloud.net/
cd -
Проверка развертывания
Проверка файлов в бакете
aws s3 ls s3://my.medikt.net/ --endpoint-url https://storage.yandexcloud.net/
Должны быть видны:
index.htmlconfig.overrides.jsonversion.txt- Папки
js/,css/,img/и другие
Проверка доступности
Откройте в браузере: https://my.medikt.net
Troubleshooting
Ошибки при извлечении артефактов
# Проверить, что образ загружен
docker images | grep user.spa
# Удалить старый контейнер, если он существует
docker rm -f temp-container
Ошибки доступа к S3
# Проверить конфигурацию AWS CLI
aws configure list
aws sts get-caller-identity
# Проверить права на бакет
aws s3 ls s3://my.medikt.net/ --endpoint-url https://storage.yandexcloud.net/
Ошибки конфигурации
# Проверить config.overrides.json
cat artifacts/config.overrides.json | jq .
# Проверить версию
cat artifacts/version.txt