Поиск по сайту:

Как установить и настроить Envoy Proxy в Debian 11


На этой странице

  1. Предпосылки
  2. Добавление репозитория посланника
  3. Установка прокси-сервера Envoy
  4. Настройка прокси-сервера Envoy
  5. Заключение

Прокси-сервер Envoy — это бесплатный сервисный прокси-сервер с открытым исходным кодом, разработанный для облачных приложений. Его можно сравнить с Nginx и haproxy, которые можно использовать в качестве обратного прокси-сервера, но прокси-сервер Envoy предназначен для современных сервисов и инфраструктуры.

Envoy — это высокопроизводительный сервисный прокси, который работает с любым языком приложений. Он использует файлы конфигурации YAML для статической конфигурации, а также использует набор API-интерфейсов на основе gRPC.

Прокси-сервер Envoy закончил Cloud Native Computing Foundation (CNCF). Он используется в большинстве современных инфраструктурных и контейнерных технологий.

В этом руководстве мы покажем вам, как установить и настроить прокси-сервер Envoy на сервере Debian 11.

Предпосылки

Для установки Envoy мы будем использовать следующее:

  • Сервер Linux Debian 11 Bullseye
  • Пользователь без полномочий root с привилегиями sudo

Добавление репозитория посланника

Envoy можно установить разными способами, в том числе с помощью бинарных пакетов, предоставляемых репозиторием Envoy, или с помощью Docker. В этом примере мы установим Envoy, используя бинарный пакет из репозитория Envoy.

Перед добавлением и установкой Envoy необходимо установить следующий пакет. gnupg2 будет использоваться для добавления ключа GPG на ваш сервер Debian, а apt-transport-https позволит вам устанавливать пакеты через безопасное 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.

Теперь добавьте репозиторий Envoy в свою систему с помощью приведенной ниже команды.

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

Наконец, обновите и обновите свой репозиторий Debian.

sudo apt update

На скриншоте ниже вы увидите, что репозиторий Envoy добавлен в систему Debian.

Установка прокси-сервера Envoy

Теперь вы добавили ключ и репозиторий Envoy GPG, теперь вы будете устанавливать пакет Envoy в свою систему.

Запустите приведенную ниже команду apt, чтобы установить пакет Envoy в вашу систему Debian 11.

sudo apt install getenvoy-envoy

Ниже вы можете увидеть процесс установки Envoy.

После завершения установки Envoy проверьте версию Envoy с помощью следующей команды.

envoy --version

Ниже вы можете увидеть Envoy v1.18, установленный на Debian 11. Это последняя версия прокси Envoy, предоставленная репозиторием Envoy. Если вы хотите получить последнюю версию, вы можете использовать готовый двоичный файл с веб-сайта Envoy.

Кроме того, вы также можете проверить все доступные параметры команды envoy, используя следующую команду.

envoy --help

Вы увидите множество параметров, которые можно использовать для настройки Envoy.

Настройка прокси-сервера Envoy

После установки Envoy вы узнаете, как настроить Envoy.

Сначала создайте новый каталог /etc/envoy/ с помощью следующей команды.

mkdir -p /etc/envoy/

Теперь создайте новый файл /etc/envoy/demo.yaml с помощью редактора nano.

sudo nano /etc/envoy/demo.yaml

Добавьте следующую конфигурацию в файл. В этом примере вы будете использовать конфигурацию static_resources для Envoy, которая должна включать в себя listeners, кластеры и static_resources.

Слушатели определяют, какой IP-адрес и порт будут использоваться для Envoy. В этом примере Envoy будет работать на общедоступном IP-адресе 0.0.0.0 с портом 80.

Кластер service_envoyproxy_io здесь будет использоваться в качестве конечной точки службы, которая является доменным именем www.envoyproxy.io.

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, чтобы проверить файл конфигурации demo.yaml.

envoy --mode validate -c /etc/envoy/demo.yaml

Если ваша конфигурация YAML верна, вы увидите вывод, например \configuration /etc/envoy/demo.yaml OK\.

Теперь запустите Envoy с файлом конфигурации demo.yml, используя следующую команду.

envoy -c /etc/envoy/demo.yaml

Ниже вы увидите вывод журнала. Кроме того, убедитесь, что вы не получаете сообщения об ошибках.

Теперь перейдите на локальный компьютер и отредактируйте файл конфигурации /etc/hosts с помощью редактора nano.

sudo nano /etc/hosts

Добавьте доменное имя www.envoyproxy.io с IP-адресом вашего сервера, как показано ниже.

192.168.5.10 www.envoyproxy.io

Сохраните и закройте файл, когда закончите.

Наконец, откройте свой веб-браузер и посетите доменное имя www.envoyproxy.io, и вы должны попасть на домашнюю страницу доменного имени www.envoyproxy.io.

Заключение

Поздравляем! теперь вы успешно установили Envoy на сервер Debian 11. Вы также узнали, как настроить Envoy, используя конфигурацию YAML для проксирования веб-сайта www.envoyproxy.io.