Установка и настройка Envoy Proxy на Debian 11

Envoy proxy — свободный открытый сервисный прокси, проект для облачно‑нативных приложений. Он выполняет роль обратного прокси и балансировщика нагрузки, похожий по задачам на Nginx и HAProxy, но спроектирован для современных микросервисов и распределённой инфраструктуры.
Краткое определение: Envoy — высокопроизводительный сетевой прокси, конфигурируемый через YAML и управляющийся также через gRPC‑API.
Требования
- Сервер с Debian 11 Bullseye
- Нерутовый пользователь с sudo‑привилегиями
- Доступ в интернет для загрузки репозитория и GPG‑ключа
Добавление репозитория Envoy
Envoy можно устанавливать разными способами: из пакетного репозитория, из Docker‑образа или с готового бинарника. Здесь показана установка через официальный .deb‑репозиторий.
Важно: команды ниже требуют sudo. Перед добавлением репозитория убедитесь, что ваш сервер обновлён и вы понимаете источники пакетов.
Сначала установите необходимые утилиты для работы с GPG и HTTPS‑репозиториями:
sudo apt install gnupg2 apt-transport-https -yДобавьте и проверьте GPG‑ключ Envoy:
curl -sL 'https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key' | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --checkЕсли ключ корректен, вы увидите OK.
Добавьте репозиторий в систему:
echo "deb [arch=amd64 \
signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] \
https://deb.dl.getenvoy.io/public/deb/debian \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.listОбновите индексы пакетов:
sudo apt update
Установка Envoy Proxy
Установите пакет Envoy из репозитория:
sudo apt install getenvoy-envoy
Проверьте версию после установки:
envoy --versionВ примере была установлена версия v1.18. Если хотите другую версию, используйте предсобранный бинарник с сайта Envoy или другой источник.
Посмотрите доступные опции:
envoy --helpНастройка Envoy
Создайте каталог для конфигурации и файл конфига:
mkdir -p /etc/envoy/
sudo nano /etc/envoy/demo.yamlНиже приведён пример минимального статического конфига, который слушает 0.0.0.0:80 и проксирует трафик к www.envoyproxy.io по HTTPS (порт 443). Этот конфиг использует статические ресурсы: listeners и clusters.
static_resources:
listeners:
- name: listener_0
address:
socket_address:
address: 0.0.0.0
port_value: 80
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
access_log:
- name: envoy.access_loggers.stdout
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
http_filters:
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
host_rewrite_literal: www.envoyproxy.io
cluster: service_envoyproxy_io
clusters:
- name: service_envoyproxy_io
type: LOGICAL_DNS
connect_timeout: 5s
# Comment out the following line to test on v6 networks
dns_lookup_family: V4_ONLY
load_assignment:
cluster_name: service_envoyproxy_io
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: www.envoyproxy.io
port_value: 443
transport_socket:
name: envoy.transport_sockets.tls
typed_config:
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
sni: www.envoyproxy.ioСохраните и закройте файл.
Проверка конфигурации
Запустите валидацию конфига:
envoy --mode validate -c /etc/envoy/demo.yamlОжидаемый вывод при корректной конфигурации: “configuration /etc/envoy/demo.yaml OK”.

Критерии приёмки
- Конфигурация валидируется без ошибок
- Envoy запускается и слушает порт 80
- Трафик проксируется на целевой кластер
Пробный запуск и проверка
Запустите Envoy с конфигом:
envoy -c /etc/envoy/demo.yamlПросмотрите лог и убедитесь, что нет ошибок при старте.

На локальной машине добавьте привязку домена в /etc/hosts для тестирования (замените IP на IP вашего сервера):
sudo nano /etc/hosts192.168.5.10 www.envoyproxy.ioОткройте в браузере http://www.envoyproxy.io и убедитесь, что отображается ожидаемая страница.

Когда это не подходит
- Если нужен лёгкий статический веб‑сервер для простых случаев, Nginx может быть предпочтительнее по простоте конфигурации.
- Для внутренних сервисов с минимальным перформанс‑требованием накладные расходы Envoy могут быть избыточны.
- Envoy требует понимания сетевых фильтров и TLS: для простого проксирования без TLS/маршрутизации можно использовать более простые инструменты.
Альтернативные подходы
- Установка через Docker: запуск официального образа envoyproxy/envoy.
- Использование предсобранного бинарника с официального сайта для конкретной версии.
- Управление конфигурацией динамически через xDS API (подходит для сервис‑машей и крупной инфраструктуры).
Быстрая методология внедрения (мини‑метод)
- Тестовый стенд: разверните в изолированной сети.
- Подготовьте конфигурацию минимальную: слушатель, маршрут, кластер.
- Валидируйте конфиг локально (envoy –mode validate).
- Запустите в режиме наблюдения, проверьте логи и метрики.
- Постепенно подключайте прод‑трафик и мониторинг.
Факто‑бокс
- Формат конфигурации: YAML (static_resources / dynamic_resources)
- Коммуникация управления: gRPC (xDS API)
- Примеры команд: envoy –version, envoy –help, envoy –mode validate
- Частые порты: HTTP 80, HTTPS 443
Чеклист по ролям
Администратор:
- Проверить наличие sudo и сетевого доступа
- Добавить GPG‑ключ и репозиторий
- Установить пакет и убедиться в запусках сервиса
Разработчик/DevOps:
- Подготовить и протестировать YAML конфиг
- Провести валидацию и э2е‑тесты
- Настроить мониторинг и access_log
Сетевой инженер:
- Проверить DNS и правила брандмауэра
- Настроить SNI и TLS для upstream
Сниппеты и шпаргалка
Проверка процесса Envoy (пример для systemd‑интеграции, если вы настроили unit‑файл):
sudo systemctl status envoy
sudo journalctl -u envoy -fБыстрая команда для теста HTTP через curl (на машине с /etc/hosts, где домен указывает на ваш Envoy):
curl -v http://www.envoyproxy.io/Если кластер использует HTTPS на upstream, убедитесь что transport_socket TLS настроен корректно.
Рекомендации по безопасности
- Не запускайте Envoy с привилегиями root без необходимости.
- Включите TLS для upstream и используйте SNI, если в конфиге несколько серверов.
- Ограничьте доступ к административным портам и API.
- Логи и метрики отправляйте в централизованный стек (Prometheus/ELK) для аудита и алертинга.
Советы по отладке
- При ошибках валидатора проверьте YAML‑вставки и типы полей.
- Для проблем с DNS убедитесь в правильной опции dns_lookup_family.
- Увеличьте уровень логирования, чтобы увидеть подробности маршрутизации.
Краткое резюме
Поздравляем — вы установили Envoy на Debian 11 и запустили простой конфиг, который проксирует HTTP на внешний хост по HTTPS. Далее рекомендуем внедрять постепенное развёртывание: тестирование, мониторинг и жёсткая политика безопасности.
Важно: перед развёртыванием в проде продумайте обновления конфигурации и процесс отката.
Ключевые шаги:
- Добавить репозиторий и GPG‑ключ
- Установить пакет getenvoy-envoy
- Написать и проверить YAML конфиг
- Запустить Envoy и протестировать проксирование
Короткое объявление для команды (пример):
Envoy установлен на Debian 11 и готов к тестированию. Протестируйте маршрутизацию на http://www.envoyproxy.io после добавления записи в /etc/hosts.
Полезная литература: официальная документация Envoy и примеры конфигураций на сайте проекта.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента