Наружу не торчит
У меня 2 сценария
- LetsEncript
1.1. CertBot при помощи DNS Сhallenge получает сертификат и загружает его в OpenBao. Я использую wildcard сертификатыdomain.com+*.domain.com
1.2. Vault Agent видит, что обновился ключ сертификата и выгружает его в файл, при необходимости дергает сервис для того, чтобы он подтянул конфиг c сертификатом новым
1.3. Certbot при выпуске или перевыпуске сертификата дергает вебхук Semaphore UI
1.4. Semaphore UI запускает Ansible playbook с указанием домена и в таске происходит деплой сертификата в микотик и HomeAssistant - Self Signed Certs
2.1. В OpenBao выпускается корневой сертификат, который надо импортировать на все узлы
2.2. В OpenBao можно при помощи веб интерфейса или клиента сгенерировать сертификаты под произвольный домен, с подписью CA openbao. При этом, можно клиенту через политики разрешить определенные домены или опции
2.3. В OpenBao включен Acme сервер и сервисы могут выпускать себе сертификаты при помощи CertBot
Подробнее тут описывал Централизованный выпуск SSL сертификатов для смохостинга
С точки зрения Traefik у меня получается, что
- Основная информация по конфигурации находится в гите и деплоится в docker-compose
- Динамическая информация самому реверс-проксированию находится в consul кластере и traefik ее подтягивает при обновлении
- Сертификаты подкладывает vault agent в ввиде файлов и он их просто использует без выпуска
Таким образом я легко могу добавлять новые узлы: появился миник и за пару кликов туда разворачивается собственный экземпляр трафика со всеми примочками
В первой версии конфигурации я пробовал хранить сертификаты в consul, но в процессе выяснил, что в новой версии этот функционал убрали т.к. были проблемы с синхронизацией: при появлении нового домена каждый traefik пытался выпустить свой сертификат и положить его в общее хранилище, в итоге они отказались от этого и каждый traefik выпускает и сохраняет сертификаты самостоятельно, что может привести к выходу за лимиты.
Поэтому я и реализовал схему, когда выпуском сертификатов занимается один сервис, а потребители их подтягивают при необходимости.
