184 lines
9.1 KiB
Markdown
184 lines
9.1 KiB
Markdown
# Run & Logs — инструкции по запуску и сбору логов
|
||
|
||
Дата: 2026-03-11 (обновлено 2026-03-11)
|
||
|
||
## ГЛАВНОЕ ОТКРЫТИЕ: запускать всё на удалённой машине
|
||
|
||
**Проблема:** lokальная машина (`remote_dev`) ходит в интернет через VPN, который нестабилен:
|
||
- `docker push` — TLS handshake timeout
|
||
- `terraform apply` — TLS timeout при скачивании провайдера
|
||
- HTTP-запросы к `sless-api.kube5s.ru` — иногда падают
|
||
|
||
**Решение:** удалённая машина `5.172.178.213` имеет **прямой выход в интернет без VPN**.
|
||
Все долгие операции нужно запускать **там через SSH**, а не локально.
|
||
|
||
Агент Copilot делает это автоматически: пишет команду через `ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519`, читает вывод/логи.
|
||
|
||
### Что запускаем на удалённой машине (5.172.178.213):
|
||
- `terraform init / apply / destroy` — все E2E и стресс-тесты
|
||
- `git pull / push`
|
||
- `docker build / push`
|
||
- `kubectl` деплой оператора — kubeconfig скопирован в `~/.kube/config` (2026-03-11)
|
||
- `run_stress_test.sh`, `run_e2e_tests.sh`
|
||
- HTTP-проверки к `sless-api.kube5s.ru`
|
||
- `go build / go test` (если нужно проверить без VPN)
|
||
|
||
### Что остаётся локально:
|
||
- VS Code + Copilot — правка кода
|
||
- `git commit + push` (файлы редактируются здесь)
|
||
|
||
### Шаблон: запустить команду на удалённой машине
|
||
```bash
|
||
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 '<команда>'
|
||
```
|
||
|
||
### Шаблон: запустить долгий скрипт в фоне и смотреть лог
|
||
```bash
|
||
# Запуск в фоне:
|
||
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 \
|
||
'cd /home/naeel/terra/sless && nohup bash run_stress_test.sh > /tmp/stress.log 2>&1 & echo PID=$!'
|
||
|
||
# Следить за логом:
|
||
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'tail -30 /tmp/stress.log'
|
||
```
|
||
|
||
---
|
||
|
||
1) Предварительные условия
|
||
- На локальной машине должен быть доступ в репозиторий (этот проект).
|
||
- Для удалённого запуска через SSH используйте ключ или пароль пользователя `naeel`.
|
||
- Если нужен неинтерактивный ввод пароля, установите `sshpass`.
|
||
|
||
**Реквизиты удалённой машины:**
|
||
- Host: `5.172.178.213`
|
||
- User: `naeel`
|
||
- SSH ключ: `/home/naeel/.ssh/naeel_vm_id_ed25519`
|
||
- Repo path: `/home/naeel/terra/sless`
|
||
|
||
Пример подключения:
|
||
```bash
|
||
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'echo OK'
|
||
```
|
||
|
||
2) Скрипты (подготовленные в репо)
|
||
- Диагностика системы: `.tmp/ssh_diag.sh`
|
||
- Сбор логов ssh: `.tmp/ssh_logs.sh`
|
||
- Тест пуша в pearlharbor: `test_pearlharbor_push.sh` (в корне репо)
|
||
|
||
3) Быстрый запуск диагностик (одной командой, безопасно)
|
||
|
||
Если `sshpass` установлен, запустить локально и направить вывод в файл на локальной машине:
|
||
|
||
```bash
|
||
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'bash -s' < .tmp/ssh_diag.sh > /tmp/ssh_diag_output.txt 2>&1
|
||
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213:/tmp/ssh_diag_output.txt ./
|
||
```
|
||
|
||
Или интерактивно:
|
||
|
||
```bash
|
||
ssh -i /home/naeel/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 'bash -s' < .tmp/ssh_diag.sh
|
||
```
|
||
|
||
4) Сбор системных логов вручную (на хосте)
|
||
|
||
Запустите эти команды на хосте (через ssh) и сохраните результаты в `/tmp` для удобного скачивания:
|
||
|
||
```bash
|
||
sudo journalctl -u ssh -n 200 --no-pager > /tmp/ssh_journal.log
|
||
sudo tail -n 200 /var/log/auth.log > /tmp/auth.log
|
||
sudo systemctl status ssh --no-pager > /tmp/ssh_status.txt
|
||
sudo cat /etc/ssh/sshd_config > /tmp/sshd_config.txt
|
||
```
|
||
|
||
Docker логи и состояние:
|
||
|
||
```bash
|
||
docker --version > /tmp/docker_version.txt 2>&1 || true
|
||
docker ps -a > /tmp/docker_ps.txt 2>&1 || true
|
||
docker logs <container_name> > /tmp/docker_<container_name>.log 2>&1 || true
|
||
```
|
||
|
||
Если использовался `nohup` или фоновые скрипты, проверьте их лог-файлы (пример):
|
||
|
||
```bash
|
||
ls -la /tmp | grep pearlharbor
|
||
cat /tmp/pearlharbor_bg.log > /tmp/pearlharbor_bg.log.copy || true
|
||
```
|
||
|
||
5) Забрать логи на локальную машину
|
||
|
||
```bash
|
||
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213:/tmp/ssh_journal.log ./
|
||
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213:/tmp/auth.log ./
|
||
scp -i /home/naeel/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213:/tmp/docker_ps.txt ./
|
||
```
|
||
|
||
6) Запуск `test_pearlharbor_push.sh` (мультипуш тест)
|
||
|
||
Файл: `test_pearlharbor_push.sh` (в корне репозитория). Примеры использования:
|
||
|
||
```bash
|
||
# простая однократная прогонка (локально, когда docker настроен)
|
||
bash ./test_pearlharbor_push.sh
|
||
|
||
# с параметрами окружения
|
||
# NUM_PUSHES=5 CLEANUP=true ./test_pearlharbor_push.sh
|
||
# CREATE_PROJECT=true NUM_PUSHES=3 ./test_pearlharbor_push.sh
|
||
```
|
||
|
||
Скрипт печатает сводку по каждому пушу и возвращает HTTP/registry статусы. При включённом `CLEANUP=true` он попытается удалить тестовые теги через Harbor API.
|
||
|
||
7) Рекомендации по безопасности
|
||
- Никогда не выкладывайте содержимое `secrets/pearlharbor_registry.txt` публично.
|
||
- Если используете `sshpass`, убедитесь, что доступ к вашей машине ограничен и удалённый пароль меняется по окончании тестов.
|
||
|
||
8) Что делать при проблемах
|
||
- Если `docker push` даёт TLS handshake timeout — проверьте VPN/маршрутизацию и повторы (retry) сети.
|
||
- При `401 Unauthorized` — проверьте правильность тега `registry/PROJECT/REPO:TAG` и существование проекта в Harbor (создаётся через API либо через WebUI).
|
||
- Для ошибок ssh — смотрите `/var/log/auth.log` и `journalctl -u ssh`.
|
||
|
||
9) Контактные точки (быстрый чек-лист)
|
||
- Скрипты: `.tmp/ssh_diag.sh`, `.tmp/ssh_logs.sh`
|
||
- Тест пуш: `test_pearlharbor_push.sh`
|
||
- Логи на хосте: `/var/log/auth.log`, `journalctl -u ssh`, `docker logs <container>`
|
||
|
||
Файл создан автоматически агентом 2026-03-11.
|
||
|
||
10) Соответствие локальных и удалённых путей
|
||
|
||
На локальной машине репозиторий находится в `/home/naeel/remote_dev/sless`,
|
||
на удалённой — в `/home/naeel/dev/sless`.
|
||
Это не обязательно значит, что содержимое одинаково. При проверке в данной сессии было обнаружено,
|
||
что оба репозитория указывают на один и тот же коммит:
|
||
|
||
```
|
||
3dc39ddc20648b15e1f154d5e0b238ccf9789ba0
|
||
```
|
||
|
||
Команды для проверки соответствия и синхронизации:
|
||
|
||
- Проверить текущий git-HEAD локально и на удалённой машине:
|
||
|
||
```bash
|
||
git -C /home/naeel/remote_dev/sless rev-parse HEAD
|
||
ssh naeel@serv 'git -C /home/naeel/dev/sless rev-parse HEAD'
|
||
```
|
||
|
||
- Сравнить списки файлов (локально собрать и получить с удалённой):
|
||
|
||
```bash
|
||
find /home/naeel/remote_dev/sless -type f | sort > /tmp/files_local_sless.txt
|
||
ssh naeel@serv 'find /home/naeel/dev/sless -type f | sort' > /tmp/files_remote_sless.txt
|
||
diff -u /tmp/files_local_sless.txt /tmp/files_remote_sless.txt | less
|
||
```
|
||
|
||
- Быстрая проверка синхронизации через `rsync` (dry-run):
|
||
|
||
```bash
|
||
rsync -av --dry-run --delete /home/naeel/remote_dev/sless/ naeel@serv:/home/naeel/dev/sless/
|
||
```
|
||
|
||
Если хэши совпадают, репозитории находятся в одном состоянии на уровне коммита. Если нужно, могу
|
||
запустить подробный `diff` или предложить команды для синхронизации (rsync/пуш/клонирование).
|