Mit Istio als Cluster-Add-on zur Implementierung der Kubernetes-Gateway-API arbeiten
Erfahren Sie, wie Sie das Istio-Cluster-Add-on installieren, konfigurieren und verwenden, um die Kubernetes-Gateway-API in Clustern zu implementieren, die Sie mit Kubernetes Engine (OKE) erstellt haben.
Die Kubernetes-Gateway-API (Gateway-API) ist der Standard der nächsten Generation für die Verwaltung von Ingress- und Netzwerktraffic in Kubernetes-Clustern nach der Ingress-API. Weitere Informationen zur Gateway-API finden Sie unter Gateway-API in der Kubernetes-Dokumentation und in der Dokumentation zur Gateway-API.
Das Istio-Cluster-Add-on ist eine von Oracle verwaltete Erweiterung für Kubernetes Engine, mit der die Istio-Control Plane in einem Cluster bereitgestellt und verwaltet wird. Es ermöglicht erweiterte Service-Mesh- und Gateway-API-Unterstützung für Ingress- und Trafficmanagement.
Durch Aktivieren des Istio-Cluster-Add-ons können Sie Istio als zugrunde liegenden Controller verwenden, um Gateway-, HTTPRoute- und andere Gateway-API-Ressourcen zu verwalten.
Die Verwendung von Istio als Cluster-Add-on (das Istio-Cluster-Add-on) vereinfacht das Lebenszyklusmanagement der Control Plane (istiod). Sie können mehr einfach:
- Istio-Steuerebene aktivieren oder deaktivieren
- Automatische Versionsupdates von Oracle aktivieren und deaktivieren
- Verwalten Sie add-on-spezifische Anpassungen mit genehmigten Konfigurationsargumenten für Schlüssel/Wert-Paare.
In den folgenden Abschnitten wird beschrieben, wie Sie mit dem Istio-Cluster-Add-on zur Konfiguration des Gateway-API-Netzwerks arbeiten:
- Istio Cluster-Add-on als Gateway-API-Controller einrichten
- Cluster-Add-On von Istio deaktivieren (und löschen)
Voraussetzungen
Bevor Sie das Istio-Cluster-Add-on zur Unterstützung der Kubernetes-Gateway-API einrichten:
- Sie benötigen
kubectl-Zugriff auf das von Kubernetes Engine erstellte Cluster. - Sie benötigen cluster-admin-Berechtigungen, um benutzerdefinierte Ressourcendefinitionen (CRDs) und Controller zu installieren.
Istio Cluster-Add-on als Gateway-API-Controller einrichten
Schritte zur Einrichtung des Istio-Cluster-Add-ons als Gateway-API-Controller
Im Allgemeinen sind die Schritte zum Einrichten des Istio-Cluster-Add-ons als Gateway-API-Controller wie folgt:
- Schritt 1: Gateway-API-CRDs installieren
- Schritt 2: Istio-Cluster-Add-on-Konfigurationsdatei erstellen
- Schritt 3: Istio-Cluster-Add-on im Cluster bereitstellen und erfolgreiches Deployment bestätigen
- 4. Schritt: Gateway erstellen
- Schritt 5: Beispielanwendung bereitstellen
- Schritt 6: HTTPRoute erstellen
- Schritt 7: Konnektivität prüfen
Schritt 1: Gateway-API-CRDs installieren
Die benutzerdefinierten Ressourcendefinitionen (CRDs) der Gateway-API werden nicht standardmäßig in Clustern installiert, die Sie mit der Kubernetes Engine erstellen. Bevor Sie Istio als Gateway-API-Controller verwenden, müssen Sie die CRDs installieren.
-
Installieren Sie die standardmäßigen Gateway-API-CRDs (v1.2.0), indem Sie Folgendes eingeben:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml -
Prüfen Sie, ob die CRD installiert ist, indem Sie Folgendes eingeben:
kubectl get crd gateways.gateway.networking.k8s.io - Vergewissern Sie sich, dass die CRD in der Ausgabe aufgeführt ist.
- Stellen Sie sicher, dass das Kubernetes-Gateway-API-Release mit der von Kubernetes Engine unterstützten Istio-Add-on-Version für die auf dem Cluster ausgeführte Kubernetes-Version kompatibel ist (siehe Vergleiche - v1.2 in der Gateway-API-Dokumentation und Unterstützte Cluster-Add-on-Versionen).
Schritt 2: Istio-Cluster-Add-on-Konfigurationsdatei erstellen
Erstellen Sie eine Istio-Cluster-Add-on-Konfigurationsdatei zur Verwendung mit der OCI-CLI.
-
Erstellen Sie eine JSON-Datei (Beispiel:
enableistio.json). -
Fügen Sie den folgenden Inhalt hinzu, um das Add-on zu aktivieren.
Hinweis: Im Gegensatz zum Standard-Service-Mesh-Anwendungsfall müssen Sie das Legacy-Verzeichnis
enableIngressGatewaynicht unbedingt festlegen, da die Gateway-API die Gateway-Infrastruktur dynamisch bereitstellen kann. Diese Einstellung bietet jedoch ein Standard-Fallback.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" } ] }Beachten Sie Folgendes:
- Wenn Sie
valueauf"true"setzen, stellt das Istio-Cluster-Add-on das klassischeistio-ingressgateway-Deployment und den klassischen Service neben der Control Plane bereit. - Wenn Sie
valueauf"false"setzen, wird nur die Control Plane (istiod) installiert. Sie können dannGateway-Ressourcen erstellen, die Istio bei Bedarf automatisch bereitstellt.
- Wenn Sie
-
Speichern und schließen Sie die Datei.
Schritt 3: Istio-Cluster-Add-on im Cluster bereitstellen und erfolgreiches Deployment bestätigen
Stellen Sie das Istio-Cluster-Add-on bereit.
-
Stellen Sie das Add-on mit der OCI-CLI bereit, indem Sie Folgendes eingeben:
oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://enableistio.json -
Erfolgreiches Deployment prüfen:
-
Eingeben:
oci ce cluster list-addons --cluster-id <cluster-ocid> -
Vergewissern Sie sich, dass der Lebenszyklusstatus des Istio-Cluster-Add-ons
ACTIVElautet.
-
-
Stellen Sie sicher, dass die Istio-Control Plane ausgeführt wird:
-
Eingeben:
kubectl get pods -n istio-system -
Stellen Sie sicher, dass der
istiod-Pod den StatusRunningaufweist.
-
4. Schritt: Gateway erstellen
Erstellen Sie die Ressource Gateway.
- Erstellen Sie einen neuen Namespace (z.B. test-gateway), indem Sie Folgendes eingeben:
kubectl create namespace test-gateway -
Erstellen Sie eine Datei mit dem Namen
gateway.yamlmit dem folgenden Inhalt.apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: my-gateway namespace: test-gateway annotations: # OCI specific annotation for Network Load Balancer (Layer 4) oci.oraclecloud.com/load-balancer-type: "nlb" spec: gatewayClassName: istio listeners: - name: http port: 80 protocol: HTTP allowedRoutes: namespaces: from: SameBeachten Sie die Zeile
gatewayClassName: istio, die das Istio-Cluster-Add-on anweist, dieses Gateway zu verwalten. -
Erstellen Sie die
Gateway, indem Sie Folgendes eingeben:kubectl apply -f gateway.yaml -
Rufen Sie die externe IP-Adresse ab, indem Sie Folgendes eingeben:
kubectl get gateway -n test-gatewayEs kann einige Minuten dauern, bis OCI den Load Balancer bereitstellt.
Warten Sie, bis die Spalte
PROGRAMMEDTrueenthält und eine IP-Adresse in der SpalteADDRESSangezeigt wird.
Schritt 5: Beispielanwendung bereitstellen
Stellen Sie eine Beispielanwendung im neuen Namespace bereit.
-
Stellen Sie eine Beispielanwendung bereit (z.B. httpbin), indem Sie Folgendes eingeben:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/httpbin/httpbin.yaml -n test-gateway
Schritt 6: HTTPRoute erstellen
Erstellen Sie eine HTTPRoute, um Traffic von Gateway an den httpbin-Service zu leiten.
-
Erstellen Sie eine Datei namens
route.yamlmit dem folgenden Inhalt:apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: httpbin-route namespace: test-gateway spec: parentRefs: - name: my-gateway rules: - matches: - path: type: PathPrefix value: /get backendRefs: - name: httpbin port: 8000 -
Erstellen Sie
HTTPRoute, indem Sie Folgendes eingeben:kubectl apply -f route.yaml
Schritt 7: Konnektivität prüfen
Prüfen Sie die Konnektivität, indem Sie eine Anforderung an die externe IP-Adresse der Gateway senden.
-
Rufen Sie die öffentliche IP-Adresse des Gateways ab, und speichern Sie sie als Umgebungsvariable, indem Sie Folgendes eingeben:
export GATEWAY_IP=$(kubectl get gateway my-gateway -n test-gateway -o jsonpath='{.status.addresses[0].value}') -
Verwenden Sie
curl, um eine Anforderung an die externe IP-Adresse des Gateways zu senden, indem Sie Folgendes eingeben:curl -i http://$GATEWAY_IP/get -
Bestätigen Sie, dass Sie eine
200 OK-Antwort von der httpbin-Anwendung erhalten.
Cluster-Add-ons von Istio deaktivieren (und löschen)
In diesen Anweisungen wird beschrieben, wie Sie das Istio-Cluster-Add-on deaktivieren und entfernen.
-
Deaktivieren und entfernen Sie das Add-on mit der OCI-CLI, indem Sie Folgendes eingeben:
oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on true -
(Optional) Entfernen Sie Gateway-API-Ressourcen.
Beim Entfernen des Add-ons werden die von Ihnen erstellten Ressourcen
GatewayoderHTTPRoutenicht automatisch gelöscht. Entfernen Sie sie manuell, um die zugehörigen Load Balancer zu bereinigen, indem Sie Folgendes eingeben:kubectl delete -f gateway.yamlkubectl delete -f route.yaml -
(Optional) Entfernen Sie Gateway-API-CRDs.
Wenn Sie die Gateway-API in diesem Cluster nicht mehr benötigen, können Sie die CRDs entfernen, indem Sie Folgendes eingeben:
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml