/momo-store

Дипломный проект с курса по DevOps на Яндекс Практикум (import from Gitlab)

Primary LanguageVue

Momo Store aka Пельменная №2

image

Frontend

npm install
NODE_ENV=production VUE_APP_API_URL=http://localhost:8081 npm run serve

Backend

go run ./cmd/api
go test -v ./... 

CI/CD

  • используется единый репозиторий
  • развертывание приложение осуществляется с использованием Downstream pipeline
  • при изменениях в соответствующих директориях триггерятся pipeline для backend, frontend и infrastructure (momo-store-helm)
  • backend и frontend проходят этапы сборки, тестирования, релиза, деплоя в dev-окружение (docker-compose) и prod-окружение (k8s)
  • momo-store-helm проходит этапы релиза и деплоя в prod-окружение (k8s)
  • trunk-based development

Versioning

  • SemVer 2.0.0
  • мажорные и минорные версии приложения изменяются вручную в файлах backend/.gitlab-ci.yaml и frontend/.gitlab-ci.yaml в переменной VERSION
  • патч-версии изменяются автоматически на основе переменной CI_PIPELINE_ID
  • для инфраструктуры версия приложения изменяется вручную в чарте infrastructure/momo-store-helm/Chart.yaml

Infrastructure

Init 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"

Init production

# создаем базовый 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

image

image

image

image

Backlog

  • добавить тестовое окружение (отдельный кластер или отдельный namespace)
  • вывести мониторинг из чарта самого приложения (ускорить деплой)
  • поднять Vault для хранения секретов