diff --git a/infrastructure/local-k8s/access.md b/infrastructure/local-k8s/access.md new file mode 100644 index 0000000..a1affa1 --- /dev/null +++ b/infrastructure/local-k8s/access.md @@ -0,0 +1,43 @@ +# Как зайти (локальная 4-VM ферма) + +Сначала: `k8s/scripts/print-urls-4vm.sh` → добавить строки в `/etc/hosts`. + +Пароли: `k8s/scripts/print-credentials.sh` + +## /etc/hosts + +```text +192.168.252.8 argocd.sova.local +192.168.252.4 git.sova.local +192.168.252.5 grafana.sova.local prometheus.sova.local +192.168.252.6 api.test.sova.local admin.test.sova.local cabinet.test.sova.local docs.sova.local +``` + +`api.test` / `admin.test` — на **App VM (.6)**, не на Edge. + +## Сервисы + +| Сервис | URL | Примечание | +|--------|-----|------------| +| **Gitea** | http://git.sova.local:30300/ | org `sova` | +| **ArgoCD** | http://argocd.sova.local:**30104**/ или http://192.168.252.8:**30104**/ | не :80 | +| **Grafana** | http://grafana.sova.local:**30337**/ | admin + пароль из скрипта | +| **Loki** | Grafana → **Explore** → datasource **Loki** | `{namespace="sova-test"}` | +| **API test** | http://api.test.sova.local/ | hosts → **192.168.252.6** | +| **Admin** | http://admin.test.sova.local/ | hosts → **192.168.252.6** | + +## CI-тег (пример backend) + +```bash +cd k8s +./scripts/repair-app-git-repos.sh # если репо в Gitea были одинаковые +./scripts/release-tag.sh backend backend-v1.0.4-test +``` + +Actions: http://git.sova.local:30300/sova/backend/actions + +## Перезапуск + +```bash +cd k8s && ./scripts/restart-local-multicluster.sh +``` diff --git a/infrastructure/local-k8s/checklist-verify.md b/infrastructure/local-k8s/checklist-verify.md new file mode 100644 index 0000000..b7079cd --- /dev/null +++ b/infrastructure/local-k8s/checklist-verify.md @@ -0,0 +1,39 @@ +# Чеклист проверки (локальная ферма) + +## /etc/hosts и пароли + +```bash +cd k8s +./scripts/print-urls-4vm.sh +./scripts/print-credentials.sh +``` + +## Smoke + +```bash +curl -H "Host: api.test.sova.local" http://192.168.252.6/ +curl -H "Host: admin.test.sova.local" http://192.168.252.6/ + +open http://git.sova.local:30300/ +open http://argocd.sova.local:30104/ +open http://grafana.sova.local:30337/ # Explore → Loki + +./scripts/release-tag.sh backend backend-v1.0.4-test + +export KUBECONFIG=~/.kube/config-k8s-app-test +kubectl get pods -n sova-test +``` + +## Edge (ArgoCD) + +Нужно **≥4G RAM** (`EDGE_MEM=4G` в `multipass-4vm.env`). Пересоздание: + +```bash +./scripts/bootstrap-edge-only.sh +``` + +## Полная отладка + +```bash +./scripts/fix-and-verify.sh +``` diff --git a/infrastructure/local-k8s/ci-and-logs.md b/infrastructure/local-k8s/ci-and-logs.md new file mode 100644 index 0000000..bf68887 --- /dev/null +++ b/infrastructure/local-k8s/ci-and-logs.md @@ -0,0 +1,45 @@ +# CI/CD, репозитории, Loki — паритет с `k3s-test` + +Каталог **`k8s/`**. У каждого приложения свой `.git` в `sova-backend/` и т.д. (не корень монорепо). + +## Репозитории в Gitea + +| Gitea repo | Локальная папка | +|------------|-----------------| +| `backend` | `k8s/sova-backend/` | +| `adminpanel` | `k8s/sova-adminpanel/` | +| `cabinet` | `k8s/sova-cabinet/` | +| `docs` | `k8s/sova-docs/` | +| `sova-deploy` | `k8s/sova-deploy/` | +| `sova-mocks` | `k8s/sova-mocks/` | + +Синхронизация из монорепо: `k8s/scripts/sync-from-monorepo.sh` + +## CI/CD через теги + +Формат: `{компонент}-v{semver}-{test|stage|prod}` (например `backend-v1.0.4-test`). + +```bash +cd k8s +VM_NAME=vm-k8s-git ./scripts/bootstrap-gitea-ci-secrets.sh +VM_NAME=vm-k8s-git ./scripts/bootstrap-gitea-runner.sh +VM_NAME=vm-k8s-app-test REGISTRY_GIT_IP=192.168.252.4 SKIP_K3S_RESTART=1 ./scripts/configure-k3s-registry.sh +./scripts/release-tag.sh backend backend-v1.0.4-test +``` + +`deploy-gitops` пушит в ветку **`test`/`stage`/`prod`** в `sova-deploy` (не `main`). + +## Loki + +1. Loki на **Mgmt** (`vm-k8s-mgmt`), namespace `monitoring`. +2. **Promtail** на App TEST — app `promtail-test`. +3. **Grafana** → **Explore** → **Loki** (`{namespace="sova-test"}`). + +Если Grafana не стартует (два default datasource) — см. `k8s/scripts/deploy-platform-mgmt.sh` (удаление `loki-loki-stack` CM). + +## Донастройка + +```bash +./scripts/apply-k3s-test-parity.sh +./scripts/fix-and-verify.sh +``` diff --git a/infrastructure/local-k8s/git-flow.md b/infrastructure/local-k8s/git-flow.md new file mode 100644 index 0000000..4de994d --- /dev/null +++ b/infrastructure/local-k8s/git-flow.md @@ -0,0 +1,22 @@ +# Git-flow: ветки, теги (k8s / локальная ферма) + +Полная документация: [test-contour/git-flow](../test-contour/git-flow). + +## Быстрый старт + +```bash +cd k8s +./scripts/setup-git-flow-branches.sh +./scripts/setup-gitea-branch-protection.sh +./scripts/release-tag.sh backend backend-v1.0.4-test +``` + +## Ветки + +| Ветка | Контур | +|-------|--------| +| `prod` | production (default) | +| `test` | test k3s / ArgoCD `targetRevision: test` | +| `stage` | stage | + +`sova-deploy` в Gitea: ветки `test` / `stage` / `prod` — **без `main`**. diff --git a/infrastructure/local-k8s/index.md b/infrastructure/local-k8s/index.md index 4dbbd46..edfc3b1 100644 --- a/infrastructure/local-k8s/index.md +++ b/infrastructure/local-k8s/index.md @@ -9,9 +9,6 @@ | [CI/CD и Loki](./ci-and-logs) | теги, registry, Grafana Explore | | [Чеклист проверки](./checklist-verify) | smoke после поднятия | | [Git-flow (кратко)](./git-flow) | ветки, теги → [полная версия](../test-contour/git-flow) | -| [Argo CD: test-contour и promtail-test](./argocd-contours) | зонтик GitOps и Promtail | -| [Redmine #27: ветки issues/27](./issues-27-branches) | перенос из monorepo → Gitea | -| [Redmine ↔ Gitea (MR → #27)](./redmine-gitea) | webhook, проект «Новый сайт» | План платформы: [K8s + Terraform + ArgoCD](../k8s-cicd-platform-plan). diff --git a/infrastructure/local-k8s/local-nonprod.md b/infrastructure/local-k8s/local-nonprod.md new file mode 100644 index 0000000..083da1a --- /dev/null +++ b/infrastructure/local-k8s/local-nonprod.md @@ -0,0 +1,41 @@ +# Локальный non-prod (4 VM Multipass) + +Соответствует плану v2.1 **без** prod и DB HA. Каталог: **`k8s/`**. + +## VM + +| VM | RAM | Роль | +|----|-----|------| +| `vm-k8s-edge` | 4G | ArgoCD, ingress | +| `vm-k8s-git` | 3G | Gitea, runner | +| `vm-k8s-mgmt` | 4G | Prometheus, Grafana, Loki | +| `vm-k8s-app-test` | 8G | test/stage k3s, PG/MySQL, apps | + +Суммарно ~19G — `k8s/scripts/multipass-4vm.env`. + +## Запуск + +```bash +cd k8s +./scripts/bootstrap-local-multicluster.sh local-test +./scripts/verify-nonprod.sh +``` + +## GitOps + +- ArgoCD на Edge, деплой в кластер **`app-test`** +- Ветка Gitea: **`test`** (не `main`) +- Контур **`prod-contour`** не применяется (`LOCAL_NONPROD=1`) +- Promtail → Loki на Mgmt (`LOKI_PUSH_URL`) + +## Переключение test ↔ stage + +```bash +./sova-deploy/scripts/switch-test-stage.sh stage # на Edge kubeconfig +``` + +## Удаление VM + +```bash +multipass delete vm-k8s-edge vm-k8s-git vm-k8s-mgmt vm-k8s-app-test --purge +```