Envoy Proxy unter Debian 11 installieren

Envoy proxy ist ein freier und quelloffener Service-Proxy, der für Cloud-native Anwendungen entwickelt wurde. Er ist vergleichbar mit Nginx und haproxy, die als Reverse Proxy verwendet werden können, aber Envoy proxy ist für moderne Dienste und Infrastrukturen konzipiert.

Envoy ist ein leistungsstarker Service-Proxy, der mit jeder Anwendungssprache funktioniert. Er verwendet YAML-Konfigurationsdateien für die statische Konfiguration und nutzt außerdem eine Reihe von gRPC-basierten APIs.

Der Envoy-Proxy wurde von der Cloud Native Computing Foundation (CNCF) entwickelt. Er wird in den meisten modernen Infrastrukturen und Containertechnologien verwendet.

In diesem Lernprogramm zeigen wir dir, wie du den Envoy Proxy auf dem Debian 11 Server installierst und konfigurierst.

Voraussetzungen

Für die Installation von Envoy benötigen wir Folgendes:

  • Einen Linux-Server Debian 11 Bullseye
  • Ein Nicht-Root-Benutzer mit sudo-Rechten

Hinzufügen des Envoy-Repositorys

Envoy kann auf verschiedene Arten installiert werden, zum Beispiel mit den Binärpaketen aus dem Envoy-Repository oder mit Docker. In diesem Beispiel werden wir Envoy mit dem Binärpaket aus dem Envoy-Repository installieren.

Bevor du Envoy hinzufügst und installierst, musst du das folgende Paket installieren. Mit gnupg2 fügst du den GPG-Schlüssel zu deinem Debian-Server hinzu, und mit apt-transport-https kannst du Pakete über eine sichere https-Verbindung installieren.

sudo apt install gnupg2 apt-transport-https -y

Als Nächstes fügst du den Envoy GPG-Schlüssel hinzu und überprüfst ihn mit dem folgenden Befehl.

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

Wenn der Schlüssel gültig ist, siehst du eine Meldung wie OK.

envoy proxy gpg Schlüssel hinzufügen

Füge nun das Envoy-Repository mit dem folgenden Befehl zu deinem System hinzu.

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

Zum Schluss aktualisierst du dein Debian-Repository.

sudo apt update

Auf dem folgenden Screenshot siehst du, dass das Envoy-Repository dem Debian-System hinzugefügt wurde.

Envoy-Repository hinzufügen

Installation von Envoy Proxy

Nachdem du nun den Envoy GPG-Schlüssel und das Repository hinzugefügt hast, musst du nun das Envoy-Paket auf deinem System installieren.

Führe den folgenden apt-Befehl aus, um das Envoy-Paket auf deinem Debian 11-System zu installieren.

sudo apt install getenvoy-envoy

Unten siehst du, wie die Installation von Envoy abläuft.

Installation des Envoy-Proxys

Nachdem die Installation von Envoy abgeschlossen ist, überprüfe die Envoy-Version mit dem folgenden Befehl.

envoy --version

Unten siehst du, dass Envoy v1.18 auf Debian 11 installiert ist. Dies ist die neueste Version des Envoy-Proxys, die im Envoy-Repository zur Verfügung steht. Wenn du die neueste Version haben möchtest, kannst du eine vorgefertigte Binärdatei von der Envoy-Website verwenden.

Überprüfung der Envoy-Version

Außerdem kannst du mit dem folgenden Befehl alle verfügbaren Optionen für den Envoy-Befehl überprüfen.

envoy --help

Du wirst eine Menge Optionen sehen, die du für die Einrichtung von Envoy verwenden kannst.

Envoy Proxy konfigurieren

Nachdem du Envoy installiert hast, erfährst du nun, wie du Envoy einrichtest.

Erstelle zunächst ein neues Verzeichnis /etc/envoy/ mit dem folgenden Befehl.

mkdir -p /etc/envoy/

Erstelle nun eine neue Datei /etc/envoy/demo.yaml mit dem Editor nano.

sudo nano /etc/envoy/demo.yaml

Füge die folgende Konfiguration in die Datei ein. In diesem Beispiel verwendest du die static_resources-Konfiguration für Envoy, die die Listener, Cluster und static_resources enthalten muss.

Die Listener legen fest, welche IP-Adresse und welcher Port für Envoy verwendet werden sollen. In diesem Beispiel wird Envoy auf der öffentlichen IP-Adresse 0.0.0.0 mit Port 80 laufen.

Der Cluster service_envoyproxy_io wird hier als Endpunkt des Dienstes verwendet, der der Domainname www.envoyproxy.io ist.

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

Speichere und schließe die Datei, wenn du fertig bist.

Als Nächstes führst du den folgenden envoy-Befehl aus, um die Konfigurationsdatei demo.yaml zu überprüfen.

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

Wenn deine YAML-Konfiguration korrekt ist, siehst du eine Ausgabe wie „configuration /etc/envoy/demo.yaml OK“.

Überprüfen der Envoy-Konfiguration

Starte nun Envoy mit der Konfigurationsdatei demo.yml mit dem folgenden Befehl.

envoy -c /etc/envoy/demo.yaml

Du wirst die unten stehende Log-Ausgabe sehen. Achte auch darauf, dass du keine Fehlermeldungen erhältst.

Laufender Envoy-Proxy

Wechsle nun zu deinem lokalen Rechner und bearbeite die Konfigurationsdatei /etc/hosts mit dem Editor nano.

sudo nano /etc/hosts

Füge den Domainnamen www.envoyproxy.io mit der IP-Adresse deines Servers wie unten angegeben ein.

192.168.5.10 www.envoyproxy.io

Speichere und schließe die Datei, wenn du fertig bist.

Öffne deinen Webbrowser und rufe den Domainnamen www.envoyproxy.io auf. Du solltest nun die Homepage des Domainnamens www.envoyproxy.io sehen.

Abgesandter Proxy

Fazit

Herzlichen Glückwunsch! Du hast Envoy nun erfolgreich auf dem Debian 11 Server installiert. Außerdem hast du gelernt, wie du Envoy mithilfe der YAML-Konfiguration für das Proxying der Website www.envoyproxy.io einrichtest.

Das könnte dich auch interessieren …