Utilizzo di Istio come componente aggiuntivo del cluster per implementare l'API del gateway Kubernetes
Scopri come installare, configurare e utilizzare il componente aggiuntivo del cluster Istio per implementare l'API del gateway Kubernetes nei cluster creati utilizzando Kubernetes Engine (OKE).
L'API gateway Kubernetes (API gateway) è lo standard di nuova generazione per la gestione del traffico in entrata e di rete nei cluster Kubernetes, dopo l'API in entrata. Per ulteriori informazioni sull'API gateway, vedere l'API gateway nella documentazione di Kubernetes e la documentazione dell'API gateway.
Il componente aggiuntivo del cluster Istio è un'estensione gestita da Oracle per Kubernetes Engine che distribuisce e gestisce il piano di controllo Istio in un cluster. Abilita il supporto avanzato di mesh di servizio e API gateway per la gestione dell'ingresso e del traffico.
Abilitando il componente aggiuntivo del cluster Istio, puoi utilizzare Istio come controller di base per gestire Gateway, HTTPRoute e altre risorse API del gateway.
L'utilizzo di Istio come componente aggiuntivo del cluster (il componente aggiuntivo del cluster Istio) semplifica la gestione del ciclo di vita del piano di controllo (istiod). Puoi più semplicemente:
- Abilitare o disabilitare il piano di controllo Istio.
- Opt-in e/o gli aggiornamenti automatici delle versioni di Oracle.
- Consente di gestire personalizzazioni specifiche dei componenti aggiuntivi utilizzando argomenti di configurazione approvati per coppie chiave-valore.
In queste sezioni viene descritto come utilizzare il componente aggiuntivo del cluster Istio per configurare la rete API gateway.
- Impostazione del componente aggiuntivo cluster Istio come controller API gateway
- Disabilitazione (e rimozione) dell'add-on cluster Istio
Requisiti indispensabili
Prima di configurare il componente aggiuntivo del cluster Istio per supportare l'API del gateway Kubernetes, effettuare le operazioni riportate di seguito.
- È necessario disporre dell'accesso
kubectlal cluster creato da Kubernetes Engine. - Per installare le definizioni delle risorse personalizzate (CRD) e i controller, è necessario disporre dei privilegi cluster-admin.
Impostazione del componente aggiuntivo cluster Istio come controller API gateway
Passi di alto livello per impostare il componente aggiuntivo del cluster Istio come controller API gateway
Ad alto livello, i passaggi per impostare l'add-on del cluster Istio per fungere da controller API gateway sono i seguenti:
- Passo 1: Installa CRD API Gateway
- Passo 2: Creare il file di configurazione del componente aggiuntivo del cluster Istio
- Passo 3: Distribuire il componente aggiuntivo del cluster Istio sul cluster e confermare la distribuzione riuscita
- Passo 4: creazione di un gateway
- Passo 5: Distribuire un'applicazione di esempio
- Passo 6: creare un HTTPRoute
- Passo 7: verificare la connettività
Passo 1: Installa CRD API Gateway
Le definizioni delle risorse personalizzate (CRD, Custom Resource Definitions) dell'API gateway non vengono installate per impostazione predefinita nei cluster creati mediante Kubernetes Engine. Prima di utilizzare Istio come controller API gateway, è necessario installare i CRD.
-
Installare le CRD API gateway standard (v1.2.0) immettendo:
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml -
Verificare che la CRD sia installata immettendo:
kubectl get crd gateways.gateway.networking.k8s.io - Confermare che il CRD è elencato nell'output.
- Verificare che la release API di Kubernetes Gateway sia compatibile con la versione del componente aggiuntivo Istio supportata da Kubernetes Engine per la versione di Kubernetes in esecuzione nel cluster (vedere Confronti - v1.2 nella documentazione relativa all'API Gateway e Versioni supportate del componente aggiuntivo cluster).
Passo 2: Creare il file di configurazione del componente aggiuntivo del cluster Istio
Creare un file di configurazione del componente aggiuntivo del cluster Istio da utilizzare con l'interfaccia CLI OCI.
-
Creare un file JSON (ad esempio,
enableistio.json). -
Per attivare il componente aggiuntivo aggiungere i seguenti contenuti.
Nota: a differenza dello use case Service Mesh standard, non è strettamente necessario impostare il file
enableIngressGatewaylegacy perché l'API del gateway può eseguire dinamicamente il provisioning dell'infrastruttura gateway. Tuttavia, l'impostazione fornisce un fallback predefinito.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" } ] }Notare i punti riportati di seguito:
- Se si imposta
valuesu"true", il componente aggiuntivo del cluster Istio esegue il provisioning della distribuzione e del servizioistio-ingressgatewayclassici accanto al piano di controllo. - Se si imposta
valuesu"false", viene installato solo il piano di controllo (istiod). È quindi possibile creare risorseGatewaydi cui Istio eseguirà automaticamente il provisioning in base alle esigenze.
- Se si imposta
-
Salvare e chiudere il file.
Passo 3: Distribuire il componente aggiuntivo del cluster Istio sul cluster e confermare la distribuzione riuscita
Distribuire il componente aggiuntivo del cluster Istio.
-
Distribuire il componente aggiuntivo utilizzando l'interfaccia CLI OCI immettendo:
oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://enableistio.json -
Verifica distribuzione riuscita:
-
Inserisci:
oci ce cluster list-addons --cluster-id <cluster-ocid> -
Verificare che lo stato del ciclo di vita del componente aggiuntivo del cluster Istio sia
ACTIVE.
-
-
Verificare che il piano di controllo Istio sia in esecuzione:
-
Inserisci:
kubectl get pods -n istio-system -
Verificare che il pod
istiodsi trovi nello statoRunning.
-
Passo 4: Creazione di un gateway
Creare la risorsa Gateway.
- Creare un nuovo spazio di nomi (ad esempio, test-gateway) immettendo:
kubectl create namespace test-gateway -
Creare un file denominato
gateway.yamlcon il contenuto seguente.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: SameSi noti la riga
gatewayClassName: istio, che indica all'add-on del cluster Istio di gestire questo gateway. -
Creare il file
Gatewayimmettendo:kubectl apply -f gateway.yaml -
Ottenere l'indirizzo IP esterno immettendo:
kubectl get gateway -n test-gatewayIl provisioning del load balancer da parte di OCI potrebbe richiedere alcuni minuti.
Attendere che la colonna
PROGRAMMEDcontengaTruee che nella colonnaADDRESSvenga visualizzato un indirizzo IP.
Passo 5: distribuzione di un'applicazione campione
Distribuire un'applicazione di esempio nel nuovo spazio di nomi.
-
Distribuire un'applicazione di esempio, ad esempio httpbin, immettendo:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/httpbin/httpbin.yaml -n test-gateway
Passo 6: creare un HTTPRoute
Creare un file HTTPRoute per indirizzare il traffico da Gateway al servizio httpbin.
-
Creare un file denominato
route.yamlcon il seguente contenuto: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 -
Creare
HTTPRouteimmettendo:kubectl apply -f route.yaml
Passo 7: verificare la connettività
Verificare la connettività inviando una richiesta all'indirizzo IP esterno di Gateway.
-
Recupera l'indirizzo IP pubblico del gateway e lo salva come variabile di ambiente immettendo:
export GATEWAY_IP=$(kubectl get gateway my-gateway -n test-gateway -o jsonpath='{.status.addresses[0].value}') -
Utilizzare
curlper inviare una richiesta all'indirizzo IP esterno del gateway immettendo:curl -i http://$GATEWAY_IP/get -
Confermare la ricezione di una risposta
200 OKdall'applicazione httpbin.
Disabilitazione (e rimozione) dell'add-on cluster Istio
Queste istruzioni descrivono come disabilitare e rimuovere il componente aggiuntivo del cluster Istio.
-
Disabilitare e rimuovere il componente aggiuntivo utilizzando l'interfaccia CLI OCI immettendo quanto riportato di seguito.
oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on true -
(Facoltativo) Rimuovere le risorse API gateway.
Il processo di rimozione del componente aggiuntivo non elimina automaticamente le risorse
GatewayoHTTPRoutecreate. Rimuoverli manualmente per eseguire il cleanup dei load balancer associati immettendo:kubectl delete -f gateway.yamlkubectl delete -f route.yaml -
(Facoltativo) Rimuovere i CRD API gateway.
Se non è più necessaria l'API del gateway in questo cluster, è possibile rimuovere i CRD immettendo:
kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.2.0/standard-install.yaml