Git Product home page Git Product logo

user-service's Introduction

Микросервис user-service для работы с пользователями.

Инструкция по развертыванию микросервиса в кластере Kubernetes

Требования к программному обеспечению

Для корректной работы и тестирования приложения внутри кластера Kubernetes необходимо наличие следующего установленного и настроенного ПО для ОС Windows:

  • Minikube;
  • Docker;
  • Gradle;
  • Helm CLI;
  • VirtualBox;
  • GitLab Runner (на базе исполняемой оболочки PowerShell хост-машины);
  • Локальный сервер Sonarqube.

Запуск локального сервера Sonarqube

Для запуска локального сервера Sonarqube внутри запущенного докера необходимо перейти в корневую директорию проекта и ввести команду:

docker-compose -f ./docker/docker-compose.yml up -d

Инструкция по подготовке кластера Kubernetes к работе

Открыть оболочку командной строки с правами администратора и в ней выполнить следующие действия:

  1. Запустить minikube на Windows командой с использование гипервизора VirtualBox:
minikube start --vm-driver=virtualbox --no-vtx-check
  1. Включить входной контроллер NGINX в кластере Kubernetes командой:
minikube addons enable ingress
  1. На подготовленной виртуальной машине 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
  1. На локальной хост-машине ввести следующие команды для создания пространства имен для каждой из сред:
kubectl create namespace feauture
kubectl create namespace dev
kubectl create namespace preprod
kubectl create namespace prod
kubectl create namespace test
  1. На локальной хост-машине для каждой среды создать secret, хранящий настройки подключения к приватному хранилищу образов Docker:
kubectl create secret docker-registry private-docker-registry `
--docker-server=<доменный адрес сервера приватного репозитория> `
--docker-username=<имя пользователя> `
--docker-password=<пароль> `
--docker-email=<адрес почты> `
--namespace=<наименование пространства среды>

Деплой приложения в автоматизированном режиме

ВАЖНО!: Данный способ работает лишь при работе с версией репозитория проекта, размещенного на сервисе GitLab.

Для автоматизированного развертывания собранного приложения достаточно произвести фиксацию изменений в виде коммитов в одной из веток: feature, dev или preprod.
При выявлении события фиксации будет производиться тестирование, сборка и поставка обновленной версии микросервиса с учетом последних изменений на соответствующий ветке подготовленный стенд.


Деплой приложения в ручном режиме

Если вы хотите выполнить развертывания приложения в ручном режиме в подготовленный кластер Kubernetes, тогда необходимо руководствоваться действиями, описанными в указанном подразделе.

  1. Указать используемому терминалу об использовании внутреннего демона Docker в кластере с помощью команд:

    • Для оболочки bash:
      eval $(minikube docker-env)
    • Для оболочки PowerShell:
      minikube docker-env | Invoke-Expression
  2. Перейти в корневую директорию проекта и собрать его при помощи команды:

      ./gradlew build
  3. Собрать 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 .
  4. Внутри корневой папки проекта перейти в директорию 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

Общее для обоих способов деплоя

После развертывания комплекса приложений по любому из способов необходимо у себя в системе отредактировать файл hosts, указав имена хостов и соответствующие выделенные внешние ip-адреса ingress'ов каждого контура.
Наименования хостов для каждой из сред можно посмотреть в соответствующих yml-файлах с префиксом values. Данные файлы расположены в папке chart/backend-user-service корневой директории проета.


Настройка подключения к S3-хранилищу для микросервиса

После успешного развертывания комплекса приложений необходимо зайти в MiniO через веб-интерфейс и создать корзину users, сделай ее публичной, а также сгенерировать ключи для пользования API сервера хранилища.
Значения соответствующих ключей необходимо установить в развернутом объекте ConfigMap. После чего потребуется перезагрузить Pod микросервиса для применения внесенных изменений.


user-service's People

Contributors

euchekavelo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.