Comment installer et configurer Envoy Proxy sur Debian 11

Envoy proxy est un proxy de service gratuit et open-source conçu pour les applications cloud-natives. Il est comparable à Nginx et haproxy qui peuvent être utilisés comme reverse proxy, mais Envoy proxy est conçu pour les services et les infrastructures modernes.

Envoy est un proxy de services très performant qui fonctionne avec n’importe quel langage d’application. Il utilise des fichiers de configuration YAML pour la configuration statique et utilise également un ensemble d’API basées sur gRPC.

Le proxy Envoy est diplômé de la Cloud Native Computing Foundation (CNCF). Il est utilisé dans la plupart des infrastructures modernes et dans la technologie des conteneurs.

Dans ce tutoriel, nous allons te montrer comment installer et configurer le proxy Envoy sur le serveur Debian 11.

Conditions préalables

Pour l’installation d’Envoy, nous utiliserons les éléments suivants :

  • Un serveur Linux Debian 11 Bullseye
  • Un utilisateur non-root avec les privilèges sudo

Ajout du référentiel Envoy

Envoy peut être installé de plusieurs façons, notamment avec les paquets binaires fournis par le référentiel Envoy ou en utilisant Docker. Dans cet exemple, nous allons installer Envoy à l’aide du paquet binaire fourni par le référentiel Envoy.

Avant d’ajouter et d’installer Envoy, tu dois installer le paquet suivant. Le gnupg2 sera utilisé pour ajouter la clé GPG à ton serveur Debian, et le apt-transport-https te permettra d’installer des paquets à partir de la connexion sécurisée https.

sudo apt install gnupg2 apt-transport-https -y

Ensuite, ajoute et vérifie la clé GPG d’Envoy à l’aide de la commande suivante.

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 clé est valide, tu verras le message de sortie tel que OK.

ajoute la clé gpg du proxy envoy

Ajoute maintenant le référentiel Envoy à ton système à l’aide de la commande ci-dessous.

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

Enfin, mets à jour et rafraîchis ton référentiel Debian.

sudo apt update

Dans la capture d’écran ci-dessous, tu verras que le référentiel Envoy est ajouté au système Debian.

ajoute le dépôt d'envoy

Installation d’Envoy Proxy

Tu as maintenant ajouté la clé GPG et le référentiel Envoy, tu vas maintenant installer le paquet Envoy sur ton système.

Exécute la commande apt ci-dessous pour installer le paquet Envoy sur ton système Debian 11.

sudo apt install getenvoy-envoy

Tu peux voir ci-dessous l’installation d’Envoy en cours.

installation d'envoy proxy

Une fois l’installation d’Envoy terminée, vérifie la version d’Envoy à l’aide de la commande suivante.

envoy --version

Ci-dessous, tu peux voir la version Envoy v1.18 installée sur le système Debian 11. Il s’agit de la dernière version du proxy Envoy fournie par le référentiel Envoy. Si tu veux obtenir la dernière version, tu peux utiliser un fichier binaire préconstruit sur le site Web d’Envoy.

vérifier la version d'envoy

En outre, tu peux aussi vérifier toutes les options disponibles sur la commande envoy à l’aide de la commande suivante.

envoy --help

Tu verras un grand nombre d’options que tu peux utiliser pour configurer Envoy.

Configuration d’Envoy Proxy

Après avoir installé Envoy, tu vas maintenant apprendre à configurer Envoy.

Tout d’abord, crée un nouveau répertoire /etc/envoy/ à l’aide de la commande suivante.

mkdir -p /etc/envoy/

Crée maintenant un nouveau fichier /etc/envoy/demo.yaml en utilisant l’éditeur nano.

sudo nano /etc/envoy/demo.yaml

Ajoute la configuration suivante au fichier. Dans cet exemple, tu vas utiliser la configuration static_resources pour Envoy, qui doit inclure les listeners, les clusters et static_resources.

Les listeners déterminent l’adresse IP et le port qui seront utilisés pour Envoy. Dans cet exemple, Envoy fonctionnera sur l’adresse IP publique 0.0.0.0 avec le port 80.

Le cluster service_envoyproxy_io ici sera utilisé comme point de terminaison du service, qui est le nom de domaine 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

Sauvegarde et ferme le fichier lorsque tu as terminé.

Ensuite, exécute la commande envoy ci-dessous pour vérifier le fichier de configuration demo.yaml.

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

Si ta configuration YAML est correcte, tu verras une sortie telle que « configuration /etc/envoy/demo.yaml OK ».

Vérifier la configuration d'Envoy

Exécute maintenant Envoy avec le fichier de configuration demo.yml en utilisant la commande suivante.

envoy -c /etc/envoy/demo.yaml

Tu verras la sortie du journal ci-dessous. Vérifie aussi que tu ne reçois pas de messages d’erreur.

Exécution du proxy d'Envoy

Passe maintenant sur ta machine locale et modifie le fichier de configuration /etc/hosts en utilisant l’éditeur nano.

sudo nano /etc/hosts

Ajoute le nom de domaine www.envoyproxy.io avec l’adresse IP de ton serveur comme ci-dessous.

192.168.5.10 www.envoyproxy.io

Sauvegarde et ferme le fichier lorsque tu as terminé.

Enfin, ouvre ton navigateur Web et visite le nom de domaine www.envoyproxy.io et tu devrais obtenir la page d’accueil du nom de domaine www.envoyproxy.io.

mandataire de l'envoyé

Conclusion

Félicitation ! Tu as maintenant installé Envoy avec succès sur le serveur Debian 11. Tu as également appris à configurer Envoy à l’aide de la configuration YAML pour le proxy du site Web www.envoyproxy.io.

Vous aimerez aussi...