Для корректной работы и тестирования приложения внутри кластера Kubernetes необходимо наличие следующего установленного и настроенного ПО для ОС Windows:
- Minikube;
- Docker;
- Gradle;
- Helm CLI;
- VirtualBox;
- GitLab Runner (на базе исполняемой оболочки PowerShell хост-машины);
- Локальный сервер Sonarqube.
Для запуска локального сервера Sonarqube внутри запущенного докера необходимо перейти в корневую директорию проекта и ввести команду:
docker-compose -f ./docker/docker-compose.yml up -d
Открыть оболочку командной строки с правами администратора и в ней выполнить следующие действия:
- Запустить minikube на Windows командой с использование гипервизора VirtualBox:
minikube start --vm-driver=virtualbox --no-vtx-check
- Включить входной контроллер NGINX в кластере Kubernetes командой:
minikube addons enable ingress
- На подготовленной виртуальной машине Minikube'а создать каталоги для баз данных, используя учетные данные суперпользователя root, а также следующие команды:
cd ../
mkdir -p user-service/postgresql-storage-default
mkdir -p user-service/postgresql-storage-feature
mkdir -p user-service/postgresql-storage-dev
mkdir -p user-service/postgresql-storage-preprod
mkdir -p user-service/postgresql-storage-prod
mkdir -p user-service/postgresql-storage-test
mkdir -p user-service/minio-storage-default
mkdir -p user-service/minio-storage-feature
mkdir -p user-service/minio-storage-dev
mkdir -p user-service/minio-storage-preprod
mkdir -p user-service/minio-storage-prod
mkdir -p user-service/minio-storage-test
- На локальной хост-машине ввести следующие команды для создания пространства имен для каждой из сред:
kubectl create namespace feauture
kubectl create namespace dev
kubectl create namespace preprod
kubectl create namespace prod
kubectl create namespace test
- На локальной хост-машине для каждой среды создать secret, хранящий настройки подключения к приватному хранилищу образов Docker:
kubectl create secret docker-registry private-docker-registry `
--docker-server=<доменный адрес сервера приватного репозитория> `
--docker-username=<имя пользователя> `
--docker-password=<пароль> `
--docker-email=<адрес почты> `
--namespace=<наименование пространства среды>
ВАЖНО!: Данный способ работает лишь при работе с версией репозитория проекта, размещенного на сервисе GitLab.
Для автоматизированного развертывания собранного приложения достаточно произвести фиксацию изменений в виде коммитов в одной
из веток: feature, dev или preprod.
При выявлении события фиксации будет производиться тестирование, сборка и поставка обновленной версии микросервиса с
учетом последних изменений на соответствующий ветке подготовленный стенд.
Если вы хотите выполнить развертывания приложения в ручном режиме в подготовленный кластер Kubernetes, тогда необходимо руководствоваться действиями, описанными в указанном подразделе.
-
Указать используемому терминалу об использовании внутреннего демона Docker в кластере с помощью команд:
- Для оболочки bash:
eval $(minikube docker-env)
- Для оболочки PowerShell:
minikube docker-env | Invoke-Expression
- Для оболочки bash:
-
Перейти в корневую директорию проекта и собрать его при помощи команды:
./gradlew build
-
Собрать docker-образ микросервиса для интересующего стенда:
- Для пространства по умолчанию (default)
docker build -t euchekavelo/backend-user-service:latest-default .
- Для стенда feature
docker build -t euchekavelo/backend-user-service:latest-feature .
- Для стенда dev
docker build -t euchekavelo/backend-user-service:latest-dev .
- Для стенда preprod
docker build -t euchekavelo/backend-user-service:latest-preprod .
- Для стенда prod
docker build -t euchekavelo/backend-user-service:latest-prod .
- Для стенда test
docker build -t euchekavelo/backend-user-service:latest-test .
- Для пространства по умолчанию (default)
-
Внутри корневой папки проекта перейти в директорию chart и выполнить ряд команд:
- Для развертывания chart-файла на default-неймспейсе:
helm upgrade --install backend-user-service ./backend-user-service
- Для развертывания chart-файла на feature-неймспейсе:
helm upgrade --install backend-user-service-feature ./backend-user-service -f ./backend-user-service/values-feature.yml
- Для развертывания chart-файла на dev-неймспейсе:
helm upgrade --install backend-user-service-dev ./backend-user-service -f ./backend-user-service/values-dev.yml
- Для развертывания chart-файла на preprod-неймспейсе:
helm upgrade --install backend-user-service-preprod ./backend-user-service -f ./backend-user-service/values-preprod.yml
- Для развертывания chart-файла на prod-неймспейсе:
helm upgrade --install backend-user-service-prod ./backend-user-service -f ./backend-user-service/values-prod.yml
- Для развертывания chart-файла на test-неймспейсе:
helm upgrade --install backend-user-service-test ./backend-user-service -f ./backend-user-service/values-test.yml
- Для развертывания chart-файла на default-неймспейсе:
После развертывания комплекса приложений по любому из способов необходимо у себя
в системе отредактировать файл hosts, указав имена хостов и соответствующие выделенные внешние
ip-адреса ingress'ов каждого контура.
Наименования хостов для каждой из сред можно посмотреть в соответствующих yml-файлах с префиксом values.
Данные файлы расположены в папке chart/backend-user-service корневой директории проета.
После успешного развертывания комплекса приложений необходимо зайти в MiniO через веб-интерфейс и создать корзину users,
сделай ее публичной, а также сгенерировать ключи для пользования API сервера хранилища.
Значения соответствующих ключей необходимо установить в развернутом объекте ConfigMap. После чего потребуется
перезагрузить Pod микросервиса для применения внесенных изменений.