Skip to content

nva-it/pelmennaya

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сайт магазина: https://momo.vnaz.site (сайт не доступен, как и все другие ниже сервисы по причине остановки кубера)

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

image

Сборка module-pipline в GitLab

backend

image

frontend

image

helm

image

Деплой

Деплой в Prod: https://momo.vnaz.site приложения выполняетя через ArgoCD в кластер Kubernetes (развернут в Yandex Cloud), каждые 3 минуты проверяет в GitLab ветку main, директорию Helm (charts) и автоматоматческий деплоит если есть изменения.

Деплой в Stage: https://momo-stage.vnaz.site

ArgoCD Application:

  • Prod : app-prod.yaml
  • Stage: app-stage.yaml

image

Инфраструктура

Для GitLab настроил gitlab-runner в k8s, документация по настройке.

helm install --namespace default gitlab-runner -f values.yaml gitlab/gitlab-runner

В директории infra хранятся манифесты по разварачиванию инфраструктуры через Terraform(K8s, Object Storage), а также чарты приложения по ArgoCD и Monitoring.

Изображения пельменной для проекта хранятся в Object Storage.

В Cloud DNS настроеные следующие адреса:

Terraform

Состояние Terraform state (terraform.tfstate) хранится в Object Storage.

Развертываение инфраструктуры с помощью Terraform в Yandex Cloud:

export YC_TOKEN=`yc iam create-token`
terraform init
terraform plan -var "yc_token=${YC_TOKEN}"
terraform apply  -var "yc_token=${YC_TOKEN}"

Так же можно создать свой terraform.tfvars :

token     = "your OAUTH token"
cloud_id  = "your cloud id"
folder_id = "your folder id"
zone      = "VPC zone name"

Полная инструкция по разварачиванию всей инфраструктуры для Terraform в Yandex Cloud Provider.

Подготовка k8s кластера

Установка Ingress-контроллера NGINX с менеджером для сертификатов Let's Encrypt по инcтрукции от Yandex Cloud:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx && \
helm repo update && \
helm install ingress-nginx ingress-nginx/ingress-nginx

Установить менеджер сертификатов Сert Manager:

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.9.1/cert-manager.yaml

Создать объект ClusterIssuer:

kubectl apply -f acme-issuer.yml

Установка ArgoCD

Доступ в ArgoCD: https://argocd.vnaz.site

cd infra/argocd
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl apply -n argocd -f argocd-ingres-all.yaml
kubectl apply -n argocd -f private-repo.yaml
cd application/
kubectl apply -n argocd -f app-prod.yaml
kubectl apply -n argocd -f app-stage.yaml

Установка Grafana

Доступ в Grafana: https://grafana.vnaz.site

cd infra/monitoring/grafana
helm install --atomic grafana ./

Установка Loki

helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install --atomic loki grafana/loki-stack

DataSource: http://loki:3100

Установка Prometheus

Доступ в Prometheus https://prometheus.vnaz.site

cd infra/monitoring/prometheus
helm install --atomic prometheus ./

DataSource: http://prometheus:9090

Экспортер

Для frontend на NGINX добавлен экспортер NGINX Prometheus Exporter.

Документация по настройке NGINX Prometheus Exporter для NGINX Ingress Controller описана тут.

Мониторинг

Grafana

image

Loki

image

Prometheus

image

Yandex Cloud Monitoring

image

Тестирование

Тестирование в CI с помощью SAST(eslint-sast, gosec-sast, nodejs-scan-sast, semgrep-sast).

Анализ кода в SonarQube.

SonarQube

image

Хранение Helm чартов

Helm чарты хранятся в репозитарии GitLab Package Registry и Nexus.

GitLab Package Registry

image

Nexus

image

Уведомления о новых релизах

Уведомления о релизах отправляются в мессенджер Telegram.

Алерты

Алерты о сбое сервисов настроены с помощь Yandex Monitoring.

image

image

Версионирование

Версия приложения формируется из переменной VERSION в пайплайне - 1.0.${CI_PIPELINE_ID}

variables:
    VERSION: 1.0.${CI_PIPELINE_ID}

При сборке каждый образ frontend и backend получает tag с номером версии приложения и публикуется в GitLab Container Registry.

image

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published