npm install
NODE_ENV=production VUE_APP_API_URL=http://localhost:8081 npm run serve
## Backend
```bash
go run ./cmd/api
go test -v ./...
Приложение Momo-store
- используется единый репозиторий
- развертывание приложение осуществляется с использованием [Downstream pipeline]
- при изменениях в соответствующих директориях триггерятся pipeline для backend, frontend и infrastructure (momo-store-chart)
- backend и frontend проходят этапы сборки, тестирования, релиза
- momo-store-helm проходит этапы релиза и деплоя в prod-окружение (k8s)
- мажорные и минорные версии приложения изменяются вручную в файлах
backend/.gitlab-ci.yaml
иfrontend/.gitlab-ci.yaml
в переменнойVERSION
- патч-версии изменяются автоматически на основе переменной
CI_PIPELINE_ID
- для инфраструктуры мажорные и минорные версии меняются в в файле
infrastructure/momo-store-chart/Chart.yaml
приложения изменяется автоматически на основе переменнойCI_PIPELINE_ID
- код ---> 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
#Keys for service account
access_key="........."
secret_key="........."
-
получить iam-token
-
сохранить [iam-token] [cloud_id] [folder_id] [network_zone] в файле
infrastructure/terraform/terraform.tfvars
-
через консоль Yandex Cloud создать Object Storage, внести параметры подключения в файл
infrastructure/terraform/provider.tf
-
выполнить следующие комманды:
cd infrastructure/terraform
terraform init -backend-config=backend.tfvars
terraform apply
cd infrastructure/momo-store-chart/
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm upgrade --install --atomic -n default cert-manager jetstack/cert-manager --version v1.9.1 --set installCRDs=true
yc managed-kubernetes cluster get-credentials momo-store-k8s-cluster --external
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx
helm upgrade --install --atomic -n default momo-store .
kubectl get svc
- развернуть мониторинг состояния кластера и приложения
- добавить тестовое окружение (отдельная ВМ, отдельный кластер или отдельный namespace)
- вывести мониторинг из чарта самого приложения (ускорить деплой)
- поднять Vault для хранения секретов