Traefik dynamic configuration
Этот репозиторий — источник истины для пользовательских динамических маршрутов
Traefik на infra-vm.
Traefik уже настроен читать файлы из /opt/stacks/traefik/dynamic и следить за
изменениями. Перезапуск контейнера после деплоя не требуется. Файл
security.yml с общими middleware создаётся Ansible из репозитория infra-vm
и этим проектом не изменяется.
Добавление маршрута
Добавьте в каталог dynamic файл с расширением .yml или .yaml, например:
http:
routers:
example:
rule: Host(`example.4vkamnyam.ru`)
entryPoints: [websecure]
tls:
certResolver: letsencrypt
middlewares: [secure-headers]
service: example
services:
example:
loadBalancer:
servers:
- url: http://192.168.1.50:8080
Имена routers, services и middlewares должны быть уникальны среди всех файлов.
Ссылки внутри file provider не требуют суффикса @file.
Имя security.yml зарезервировано за Ansible.
Проверить изменения локально можно командой:
./scripts/validate.sh
Настройка Gitea Actions
Workflow .gitea/workflows/deploy.yml запускается при изменении конфигурации в
ветке main, а также вручную. В настройках репозитория создайте Actions secrets:
DEPLOY_HOST— адрес ВМ, сейчас192.168.1.109;DEPLOY_USER— SSH-пользователь, сейчасalexander;DEPLOY_SSH_PRIVATE_KEY— отдельный приватный ключ для деплоя;DEPLOY_SSH_KNOWN_HOSTS— строка known_hosts для ВМ, полученная по доверенному каналу, например локальной командойssh-keyscan -H 192.168.1.109с последующей ручной сверкой fingerprint.
Публичную часть ключа добавьте в ~alexander/.ssh/authorized_keys на ВМ. Runner
с меткой ubuntu-latest должен иметь Docker, ssh и scp.
Workflow хранит на ВМ manifest файлов, которыми управляет репозиторий. Поэтому
удаление YAML из Git удалит его и на ВМ, но security.yml и другие файлы вне
manifest останутся нетронутыми.