Skip to content

DenFromDark/momo-sotre

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Denis Ponizovskii
Nov 9, 2023
3273c77 · Nov 9, 2023

History

1 Commit
Nov 9, 2023
Nov 9, 2023
Nov 9, 2023
Nov 9, 2023
Nov 9, 2023
Nov 9, 2023
Nov 9, 2023
Nov 9, 2023

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