Cómo instalar y configurar el proxy Envoy en Debian 11

El proxy Envoy es un proxy de servicios gratuito y de código abierto diseñado para aplicaciones nativas de la nube. Es comparable a Nginx y haproxy, que pueden utilizarse como proxy inverso, pero el proxy Envoy está diseñado para servicios e infraestructuras modernas.

Envoy es un proxy de servicios de alto rendimiento que funciona con cualquier lenguaje de aplicación. Utiliza archivos de configuración YAML para la configuración estática y también utiliza un conjunto de APIs basadas en gRPC.

El proxy Envoy se graduó en la Fundación de Computación Nativa en la Nube (CNCF). Se utiliza en la mayoría de las infraestructuras modernas y en la tecnología de contenedores.

En este tutorial, te mostraremos cómo instalar y configurar el proxy Envoy en el servidor Debian 11.

Requisitos previos

Para la instalación de Envoy, utilizaremos lo siguiente

  • Un servidor Linux Debian 11 Bullseye
  • Un usuario no root con privilegios sudo

Añadir el repositorio de Envoy

Envoy puede instalarse de muchas maneras, incluso con los paquetes binarios proporcionados por el repositorio de Envoy o utilizando Docker. En este ejemplo, instalaremos Envoy utilizando el paquete binario del repositorio de Envoy.

Antes de añadir e instalar Envoy, debes instalar el siguiente paquete. El gnupg2 se utilizará para añadir la clave GPG a tu servidor Debian, y el apt-transport-https te permitirá instalar paquetes desde la conexión segura https.

sudo apt install gnupg2 apt-transport-https -y

A continuación, añade y verifica la clave GPG de Envoy utilizando el siguiente comando.

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

Si la clave es válida, verás un mensaje de salida como OK.

añadir la clave gpg del proxy envoy

Ahora añade el repositorio de Envoy a tu sistema utilizando el siguiente comando.

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

Por último, actualiza y refresca tu repositorio de Debian.

sudo apt update

En la siguiente captura de pantalla verás que el repositorio de Envoy se ha añadido al sistema Debian.

añadir repositorio envoy

Instalar el proxy Envoy

Ya has añadido la clave GPG de Envoy y el repositorio, ahora vas a instalar el paquete Envoy en tu sistema.

Ejecuta el siguiente comando apt para instalar el paquete Envoy en tu sistema Debian 11.

sudo apt install getenvoy-envoy

A continuación puedes ver la instalación de Envoy en proceso.

instalación del proxy envoy

Una vez completada la instalación de Envoy, verifica la versión de Envoy con el siguiente comando.

envoy --version

A continuación puedes ver la versión Envoy v1.18 instalada en Debian 11. Esta es la última versión del proxy Envoy proporcionada por el repositorio Envoy. Si quieres obtener la última versión, puedes utilizar un archivo binario precompilado del sitio web de Envoy.

comprobación de la versión de envoy

Además, también puedes comprobar todas las opciones disponibles en el comando envoy utilizando el siguiente comando.

envoy --help

Verás un montón de opciones que puedes utilizar para configurar Envoy.

Configurar el proxy de Envoy

Después de instalar Envoy, ahora aprenderás a configurar Envoy.

En primer lugar, crea un nuevo directorio /etc/envoy/ utilizando el siguiente comando.

mkdir -p /etc/envoy/

Ahora crea un nuevo archivo /etc/envoy/demo.yaml utilizando el editor nano.

sudo nano /etc/envoy/demo.yaml

Añade la siguiente configuración al archivo. En este ejemplo, utilizarás la configuración static_resources para Envoy, que debe incluir los listeners, clusters y static_resources.

Los escuchadores determinan la dirección IP y el puerto que se utilizarán para Envoy. En este ejemplo, Envoy se ejecutará en la dirección IP pública 0.0.0.0 con el puerto 80.

El cluster servicio_envoyproxy_io se utilizará aquí como punto final del servicio, que es el nombre de dominio 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

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando envoy para verificar el archivo de configuración demo.yaml.

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

Si tu configuración YAML es correcta, verás una salida como «configuración /etc/envoy/demo.yaml OK».

verificación de la configuración de envoy

Ahora ejecuta Envoy con el archivo de configuración demo.yml utilizando el siguiente comando.

envoy -c /etc/envoy/demo.yaml

Verás la salida del registro que aparece a continuación. Asegúrate también de que no te aparecen mensajes de error.

ejecutar el proxy envoy

Ahora pasa a tu máquina local y edita el archivo de configuración /etc/hosts utilizando el editor nano.

sudo nano /etc/hosts

Añade el nombre de dominio www.envoyproxy.io con la dirección IP de tu servidor como se indica a continuación.

192.168.5.10 www.envoyproxy.io

Guarda y cierra el archivo cuando hayas terminado.

Por último, abre tu navegador web y visita el nombre de dominio www.envoyproxy.io y deberías obtener la página de inicio del nombre de dominio www.envoyproxy.io.

proxy del enviado

Conclusión

Enhorabuena! ya has instalado con éxito Envoy en el servidor Debian 11. También has aprendido a configurar Envoy utilizando la configuración YAML para el proxy del sitio web www.envoyproxy.io.

También te podría gustar...