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.
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.
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.
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.
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».
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.
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.
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.