Skip to content

DenFromDark/momo-sotre

Repository files navigation

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

image

Frontend

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

CI/CD

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

Versioning

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

Infrastructure

Init 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

Init production

устанавливаем cert-manager

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

получаем kubeconfig

yc managed-kubernetes cluster get-credentials momo-store-k8s-cluster --external

устанавливаем ingress-controller

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 .

смотрим IP load balancer, прописываем А-записи для приложения и мониторинга

kubectl get svc

Backlog

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published