Utilisation d'Istio en tant que module complémentaire de grappe pour mettre en oeuvre l'API du service de passerelle Kubernetes
Découvrez comment installer, configurer et utiliser le module complémentaire de grappe Istio pour mettre en oeuvre l'API de passerelle Kubernetes dans les grappes que vous avez créées à l'aide de Kubernetes Engine (OKE).
L'API de passerelle Kubernetes (API de passerelle) est la norme de nouvelle génération pour la gestion du trafic entrant et réseau dans les grappes Kubernetes, qui succède à l'API de trafic entrant. Pour plus d'informations sur l'API de passerelle, voir API de passerelle dans la documentation sur Kubernetes et la documentation sur l'API de passerelle.
Le module complémentaire de grappe Istio est une extension gérée par Oracle pour Kubernetes Engine qui déploie et gère le plan de contrôle Istio dans une grappe. Il permet la prise en charge avancée du maillage de services et de l'API de passerelle pour la gestion du trafic entrant et du trafic.
En activant le module complémentaire de grappe Istio, vous pouvez utiliser Istio comme contrôleur sous-jacent pour gérer Gateway, HTTPRoute et d'autres ressources d'API de passerelle.
L'utilisation d'Istio en tant que module complémentaire de grappe (le module complémentaire de grappe Istio) simplifie la gestion du cycle de vie du plan de contrôle (istiod). Vous pouvez plus simplement :
- Activez ou désactivez le plan de contrôle Istio.
- Utiliser et désactiver les mises à jour automatiques des versions par Oracle.
- Gérer les personnalisations propres au module complémentaire à l'aide d'arguments de configuration de paire clé-valeur approuvés.
Ces sections décrivent comment utiliser le module complémentaire de grappe Istio pour configurer le réseau d'API de passerelle :
- Configuration du module complémentaire de grappe Istio en tant que contrôleur d'API de passerelle
- Désactivation (et retrait) du module complémentaire de grappe Istio
Préalables
Avant de configurer le module complémentaire de grappe Istio pour la prise en charge de l'API de passerelle Kubernetes :
- Vous devez avoir un accès
kubectlà la grappe créée par Kubernetes Engine. - Vous devez disposer de privilèges d'administrateur de grappe pour installer des définitions de ressource personnalisée (CRD) et des contrôleurs.
Configuration du module complémentaire de grappe Istio en tant que contrôleur d'API de passerelle
Étapes de haut niveau pour configurer le module complémentaire de grappe Istio en tant que contrôleur d'API de passerelle
À un niveau général, les étapes de configuration du module complémentaire de grappe Istio pour servir de contrôleur d'API Gateway sont les suivantes :
- Étape 1 : Installer les CRD d'API de passerelle
- Étape 2 : Créer le fichier de configuration du module complémentaire de grappe Istio
- Étape 3 : Déployer le module complémentaire de grappe Istio sur la grappe et vérifier que le déploiement a réussi
- Étape 4 : Créer une passerelle
- Étape 5 : déployer un exemple d'application
- Étape 6 : Créer un fichier HTTPRoute
- Étape 7 : Vérifier la connectivité
Étape 1 : Installer les CRD d'API de passerelle
Les définitions de ressources personnalisées d'API de passerelle ne sont pas installées par défaut dans les grappes que vous créez à l'aide de Kubernetes Engine. Avant d'utiliser Istio comme contrôleur d'API de passerelle, vous devez installer les CRD.
-
Installez les CRD d'API de passerelle standard (v1.2.0) en entrant :
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml -
Vérifiez que le CRD est installé en entrant :
kubectl get crd gateways.gateway.networking.k8s.io - Vérifiez que le CRD est répertorié dans la sortie.
- Vérifiez que la version de l'API de passerelle Kubernetes est compatible avec la version du module complémentaire Istio prise en charge par Kubernetes Engine pour la version de Kubernetes exécutée sur la grappe (voir Comparaisons - v1.2 dans la documentation sur l'API de passerelle et Versions prises en charge du module complémentaire de grappe).
Étape 2 : Créer le fichier de configuration du module complémentaire de grappe Istio
Créez un fichier de configuration du module complémentaire de grappe Istio à utiliser avec l'interface de ligne de commande OCI.
-
Créez un fichier JSON (par exemple,
enableistio.json). -
Ajoutez le contenu suivant pour activer le module complémentaire.
Note : Contrairement au cas d'utilisation standard du service de maillage de services, vous n'avez pas strictement besoin de définir
enableIngressGatewayexistant, car l'API de passerelle peut provisionner dynamiquement l'infrastructure de passerelle. Toutefois, sa définition fournit un traitement de secours par défaut.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" } ] }Notez les points suivants :
- Si vous réglez
valueà"true", le module complémentaire de grappe Istio provisionne le déploiement et le serviceistio-ingressgatewayclassiques à côté du plan de contrôle. - Si vous réglez
valueà"false", seul le plan de contrôle (istiod) est installé. Vous pouvez ensuite créer des ressourcesGatewayqu'Istio provisionnera automatiquement selon les besoins.
- Si vous réglez
-
Enregistrez le fichier et fermez-le.
Étape 3 : Déployer le module complémentaire de grappe Istio sur la grappe et vérifier que le déploiement a réussi
Déployez le module complémentaire de grappe Istio.
-
Déployez le module complémentaire à l'aide de l'interface de ligne de commande OCI en entrant :
oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://enableistio.json -
Vérifiez que le déploiement a réussi :
-
Entrez :
oci ce cluster list-addons --cluster-id <cluster-ocid> -
Vérifiez que l'état du cycle de vie du module complémentaire de grappe Istio est
ACTIVE.
-
-
Vérifiez que le plan de contrôle Istio est en cours d'exécution :
-
Entrez :
kubectl get pods -n istio-system -
Vérifiez que le pod
istiodest à l'étatRunning.
-
Étape 4 : Créer une passerelle
Créez la ressource Gateway.
- Créez un espace de noms (par exemple, test-gateway) en entrant :
kubectl create namespace test-gateway -
Créez un fichier nommé
gateway.yamlavec le contenu suivant.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: SameNotez la ligne
gatewayClassName: istio, qui indique au module complémentaire de grappe Istio de gérer cette passerelle. -
Créez
Gatewayen entrant :kubectl apply -f gateway.yaml -
Obtenez l'adresse IP externe en entrant :
kubectl get gateway -n test-gatewayOCI peut prendre quelques minutes pour provisionner l'équilibreur de charge.
Attendez que la colonne
PROGRAMMEDcontienneTrueet qu'une adresse IP apparaisse dans la colonneADDRESS.
Étape 5 : déployer un exemple d'application
Déployez un exemple d'application dans le nouvel espace de noms.
-
Déployez un exemple d'application (par exemple, httpbin) en entrant :
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/httpbin/httpbin.yaml -n test-gateway
Étape 6 : Créer un fichier HTTPRoute
Créez un HTTPRoute pour diriger le trafic de Gateway vers le service httpbin.
-
Créez un fichier nommé
route.yamlavec le contenu suivant :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 -
Créez
HTTPRouteen entrant :kubectl apply -f route.yaml
Étape 7 : Vérifier la connectivité
Vérifiez la connectivité en envoyant une demande à l'adresse IP externe de Gateway.
-
Extrayez l'adresse IP publique de la passerelle et enregistrez-la en tant que variable d'environnement en entrant :
export GATEWAY_IP=$(kubectl get gateway my-gateway -n test-gateway -o jsonpath='{.status.addresses[0].value}') -
Utilisez
curlpour envoyer une demande à l'adresse IP externe de la passerelle en entrant :curl -i http://$GATEWAY_IP/get -
Confirmez que vous recevez une réponse
200 OKde l'application httpbin.
Désactivation (et retrait) du module complémentaire de grappe Istio
Ces instructions décrivent comment désactiver et supprimer le module complémentaire de cluster Istio.
-
Désactivez et supprimez le module complémentaire à l'aide de l'interface de ligne de commande OCI en entrant :
oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on true -
(Facultatif) Supprimez les ressources d'API de passerelle.
Le processus de suppression du module complémentaire ne supprime pas automatiquement les ressources
GatewayouHTTPRouteque vous avez créées. Supprimez-les manuellement pour nettoyer les équilibreurs de charge associés en entrant :kubectl delete -f gateway.yamlkubectl delete -f route.yaml -
(Facultatif) Supprimez les CRD d'API de passerelle.
Si vous n'avez plus besoin de l'API de passerelle sur cette grappe, vous pouvez supprimer les CRD en entrant :
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml