# Как развернуть test-контур на CLOUD-SITE-TEST-01
Пошаговый рассказ: что делали при переносе песочницы с локальной Multipass-VM на удалённый сервер **CLOUD-SITE-TEST-01** (`dev.sovamed.ru`). Для справочника по архитектуре см. [CLOUD-SITE-TEST-01](./cloud-site-test-01.md), для общего плана — [`k3s/DEPLOY.md`](../../../../k3s/DEPLOY.md).
---
## 0. Что было до этого
Локально крутилась **Multipass-ферма** (`vm-k8s-git`, `*.sova.local`, NodePort). Для общего test-контура на железе решили:
- один сервер, один **k3s**;
- публичные домены **`*.dev.sovamed.ru`**;
- **Let's Encrypt** вместо self-signed;
- **без Redmine** (экономия RAM);
- CI/CD и GitOps — как на локалке: Gitea → ArgoCD → Helm.
Исходники лежат в монорепо: оркестрация в **`k3s/`**, приложения и Helm — в **`k8s/`**.
---
## 1. Подготовка сервера и DNS
### Сервер
| | |
|--|--|
| Имя | CLOUD-SITE-TEST-01 |
| Публичный IP | `46.243.172.227` |
| VPN / SSH / kubectl | `10.0.186.3` |
| Пользователь | `petrov` |
| RAM | 12 GB (+ swap 8 GB) |
### DNS
A-записи на **`46.243.172.227`**:
```
git.dev.sovamed.ru
argocd.dev.sovamed.ru
grafana.dev.sovamed.ru
api.dev.sovamed.ru
adm.dev.sovamed.ru
cabinet.dev.sovamed.ru
docs.dev.sovamed.ru
```
Порт **80** с интернета обязателен — без него Let's Encrypt (HTTP-01) не выпустит сертификаты.
### VPN
SSH и `kubectl` с рабочей машины — через VPN на **`10.0.186.3`**. Браузер — на публичные URL через DNS.
---
## 2. Настройка на Mac
```bash
cd k3s
cp remote.env.example remote.env
```
Заполнил **`remote.env`** (главное):
```bash
SERVER_IP=10.0.186.3 # VPN для SSH/kubectl
BASE_DOMAIN=dev.sovamed.ru
GITEA_DOMAIN=git.dev.sovamed.ru
API_DOMAIN=api.dev.sovamed.ru
# ... остальные домены
ENABLE_TLS=1
LETSENCRYPT_EMAIL=devops@sovamed.ru
CLUSTER_ISSUER=letsencrypt-prod
SWAP_GB=8
SKIP_REDMINE=1
KUBECONFIG_PATH=~/.kube/config-sova-remote-test
```
SSH-пароль и sudo — в `remote.env` (или ключ). **SSH-пароль на сервере потом не меняли** — только сервисные креды в k8s.
Права на скрипты:
```bash
chmod +x scripts/*.sh scripts/lib/*.sh
chmod +x ../k8s/scripts/*.sh
```
Проверка:
```bash
ssh petrov@10.0.186.3
```
---
## 3. Автоматический bootstrap (основной прогон)
```bash
cd k3s
./scripts/bootstrap-remote-test.sh
```
Скрипт **`bootstrap-remote-test.sh`** по шагам:
| Шаг | Что происходит |
|-----|----------------|
| **1** | На сервере: swap 8 GB, apt, установка **k3s** (`--disable traefik`), скачивание **kubeconfig** на Mac |
Обновили workflow **`build.yml`** в app-репозиториях и скрипты (`gitea-url.sh`, `release-tag.sh`, `bootstrap-gitea-ci-secrets.sh`) — Gitea с Mac/VPN через `https://10.0.186.3` + заголовок `Host: git.dev.sovamed.ru`.
Цепочка: **тег → Gitea Actions → образ в registry → commit в sova-deploy → ArgoCD sync → pod**.
### 4.4. Ветки issues/27
Перенесли feature-ветки из монорепо в Gitea и смержили в **`test`**:
```bash
./scripts/migrate-issues-27-branches.sh
# merge issues/27 → test для backend, adminpanel, cabinet
```
### 4.5. TLS на приложениях
После sync ArgoCD ingress терял TLS — добавили блок `tls` в Helm-шаблоны `sova-deploy/apps/*/templates/all.yaml` и `ingress.tls.enabled` в values-test.
- [**Как развернуть test-контур (пошагово)**](./deploy-walkthrough) — bootstrap, доработки, рабочий цикл
- [Git-flow: ветки, теги, автодеплой](./git-flow) — prod / test / stage, PR, пример через UI Gitea
- [Test-контур: что сделано и перенос на server](./test-contour-article) — полная статья
- [Система тегов CI/CD](./tags) — формат тегов и release-скрипт
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.