npm install
NODE_ENV=production VUE_APP_API_URL=http://localhost:8081 npm run serve
go run ./cmd/api
go test -v ./...
- используется единый репозиторий
- развертывание приложение осуществляется с использованием Downstream pipeline
- при изменениях в соответствующих директориях триггерятся pipeline для backend, frontend и infrastructure (momo-store-helm)
- backend и frontend проходят этапы сборки, тестирования, релиза, деплоя в dev-окружение (docker-compose) и prod-окружение (k8s)
- momo-store-helm проходит этапы релиза и деплоя в prod-окружение (k8s)
- trunk-based development
- SemVer 2.0.0
- мажорные и минорные версии приложения изменяются вручную в файлах
backend/.gitlab-ci.yaml
иfrontend/.gitlab-ci.yaml
в переменнойVERSION
- патч-версии изменяются автоматически на основе переменной
CI_PIPELINE_ID
- для инфраструктуры версия приложения изменяется вручную в чарте
infrastructure/momo-store-helm/Chart.yaml
- код ---> Gitlab
- helm-charts ---> Nexus
- анализ кода ---> SonarQube
- docker-images ---> Gitlab Container Registry
- терраформ бэкэнд и статика ---> Yandex Object Storage
- продакшн ---> Yandex Managed Service for Kubernetes
- клонировать репозиторий на машину с установленным terraform
- через консоль Yandex Cloud создать сервисный аккаунт с ролью
editor
, получить статический ключ доступа, сохранить секретный ключ в файлеinfrastructure/terraform/backend.tfvars
- получить iam-token, сохранить в файле
infrastructure/terraform/secret.tfvars
- через консоль Yandex Cloud создать Object Storage, внести параметры подключения в файл
infrastructure/terraform/provider.tf
- выполнить следующие комманды:
cd infrastructure/terraform
terraform init -backend-config=backend.tfvars
terraform apply -var-file="secret.tfvars"
# создаем базовый namespace
kubectl create namespace momo-store
# устанавливаем cert-manager
cd infrastructure/momo-store-helm/
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm upgrade --install --atomic -n momo-store cert-manager jetstack/cert-manager --version v1.9.1 --set installCRDs=true
# сохраняем креды для docker-registry
kubectl create secret generic -n momo-store docker-config-secret --from-file=.dockerconfigjson="/home/user/.docker/config.json" --type=kubernetes.io/dockerconfigjson
# устанавливаем приложение, указав версии backend и frontend
helm dependency build
helm upgrade --install --atomic -n momo-store momo-store . --set backend.image.tag=latest --set frontend.image.tag=latest
# смотрим IP load balancer, прописываем А-записи для приложения и мониторинга
kubectl get svc
- admin / uhfafyfltdjgc
- включен в состав helm-chart приложения, зависимости прописаны в
infrastructure/momo-store-helm/Chart.yaml
- infrastructure
- добавить тестовое окружение (отдельный кластер или отдельный namespace)
- вывести мониторинг из чарта самого приложения (ускорить деплой)
- поднять Vault для хранения секретов