Utilizzo di Istio come componente aggiuntivo cluster
Scopri come installare, configurare e utilizzare Istio come componente aggiuntivo cluster per semplificare la gestione del traffico, la sicurezza, le connessioni e l'osservabilità nei cluster creati con Kubernetes Engine (OKE).
L'utilizzo di Istio come componente aggiuntivo cluster ("Istio add-on") anziché come programma standalone semplifica la configurazione e la manutenzione continua. Puoi più semplicemente:
- Abilita o disabilita Istio.
- Esegui l'opt-in e l'out degli aggiornamenti automatici delle versioni da parte di Oracle.
- Selezionare le versioni dei componenti aggiuntivi Istio.
- Gestisci personalizzazioni specifiche del componente aggiuntivo utilizzando argomenti di configurazione approvati per coppie chiave-valore.
Quando si distribuisce Istio come componente aggiuntivo cluster utilizzando Kubernetes Engine, è possibile creare facoltativamente un gateway di entrata Istio per instradare le richieste HTTP e HTTPS in entrata. In alternativa, puoi utilizzare altre entrate supportate per instradare il traffico al servizio appropriato in esecuzione sul cluster. Tenere presente che l'accessibilità del gateway di entrata Istio dipende dal tipo di subnet del load balancer (pubblica o privata) specificata per il cluster.
Nel caso del componente aggiuntivo Istio, gli argomenti di configurazione della coppia chiave/valore approvati vengono utilizzati per eseguire personalizzazioni specifiche del componente aggiuntivo per i parametri di configurazione a livello mesh (vedere Argomenti di configurazione del componente aggiuntivo Istio). Per altri task di configurazione, ad esempio la gestione delle risorse mesh, utilizzare istioctl (lo strumento della riga di comando Istio) o altri strumenti supportati da Istio. Se si configura il componente aggiuntivo Istio utilizzando gli argomenti approvati e si desidera mantenere le personalizzazioni quando la versione del componente aggiuntivo viene aggiornata automaticamente da Oracle, impostare l'argomento di configurazione customizeConfigMap
su true
. Se non si imposta l'argomento di configurazione customizeConfigMap
su true
, le personalizzazioni vengono eliminate quando Oracle aggiorna il componente aggiuntivo. Tutte le personalizzazioni effettuate utilizzando istioctl (o un altro strumento supportato da Istio) vengono sempre eliminate quando Oracle aggiorna il componente aggiuntivo.
Se utilizzi i grafici Helm ed Helm per configurare e distribuire le applicazioni Kubernetes, tieni presente che Helm può solo aggiornare o eliminare le risorse create. Pertanto, per consentire a Helm di gestire l'add-on Istio:
- Utilizzare i grafici Helm per generare le configmap istio e istio-sidecar-injector.
- Impostare l'argomento di configurazione
customizeConfigMap
sutrue
durante la distribuzione del componente aggiuntivo Istio.
Se si decide di aggiornare automaticamente il componente aggiuntivo Istio da parte di Oracle, Oracle eseguirà un aggiornamento in loco quando saranno disponibili nuove versioni Istio. Durante l'aggiornamento, Oracle aggiorna automaticamente il piano di controllo Istio (istiod) e il gateway in entrata alla versione più recente. Si noti che Oracle non aggiorna automaticamente i sidecar del piano dati Istio, pertanto questi sidecar rimangono nella versione precedente. È responsabilità dell'utente aggiornare manualmente il piano dati Istio riavviando i pod con i sidecar Istio utilizzando il comando kubectl rollout restart deployment
. Anche se il piano di controllo Istio è retrocompatibile con le versioni sidecar precedenti, se la tua priorità è quella di garantire zero tempi di inattività, ti consigliamo di aggiornare manualmente Istio da solo, invece di fare in modo che Oracle aggiorni automaticamente l'add-on Istio. Vedere Aggiornamenti in loco nella documentazione di Istio.
In queste sezioni viene descritto come utilizzare l'add-on Istio per gestire la comunicazione e il networking tra i servizi:
- Distribuzione del componente aggiuntivo Istio
- Aggiornamento del componente aggiuntivo Istio
- Disabilitazione (e rimozione) del componente aggiuntivo Istio
Tenere presente che i prodotti mesh dei servizi (ad esempio Oracle Cloud Infrastructure Service Mesh, Istio e Linkerd) sono supportati quando si utilizza il plugin CNI Pod Networking VCN nativo OCI per il pod networking. Tenere presente che, ad eccezione del componente aggiuntivo Istio, il supporto è attualmente limitato a Oracle Linux 7 (è previsto il supporto per Oracle Linux 8). Il componente aggiuntivo Istio è supportato sia con Oracle Linux 7 che con Oracle Linux 8. I nodi di lavoro devono eseguire Kubernetes 1.26 (o versioni successive).
Tenere inoltre presente che non è possibile utilizzare il componente aggiuntivo Istio con i cluster in cui Istio è già installato come programma standalone, né nei cluster in cui è installato Oracle Cloud Infrastructure Service Mesh.
È possibile utilizzare Istio con i pool di nodi gestiti, ma non con i pool di nodi virtuali.
Distribuzione del componente aggiuntivo Istio
Le istruzioni riportate nei passaggi seguenti descrivono come distribuire il service mesh Istio come componente aggiuntivo cluster (l'"add-on Istio") per semplificare la gestione del traffico, la sicurezza, le connessioni e l'osservabilità nei cluster creati con Kubernetes Engine:
- Passo 1: Creare il file di configurazione del componente aggiuntivo Istio
- Passo 2: Distribuire l'add-on Istio sul cluster e confermare la distribuzione riuscita
- Passo 3: Abilita l'iniezione sidecar di Envoy
- Passo 4: Distribuire un'applicazione e osservare i contenitori sidecar di Envoy
Per un esempio pratico, vedere Esempio: distribuzione di Istio come componente aggiuntivo cluster.
Passo 1: Creare il file di configurazione del componente aggiuntivo Istio
In queste istruzioni viene descritto come creare un file di configurazione dei componenti aggiuntivi Istio per consentire la distribuzione del componente aggiuntivo Istio mediante l'interfaccia CLI. Il file di configurazione contiene argomenti di configurazione della coppia chiave/valore approvati. È necessario creare un file di configurazione quando si distribuisce il componente aggiuntivo utilizzando l'interfaccia CLI (o l'API). È inoltre possibile utilizzare la console per distribuire il componente aggiuntivo Istio, nel qual caso si specificano gli argomenti di configurazione nell'interfaccia utente. Per ulteriori informazioni sulla distribuzione del componente aggiuntivo Istio mediante la console, vedere Installazione di un componente aggiuntivo cluster.
-
In un editor appropriato, creare un file JSON con il nome desiderato (queste istruzioni presuppongono che il file sia denominato
enableistio.json
) contenente quanto segue:{ "addonName": "Istio", "configurations": [ ] }
Questo contenuto è sufficiente per abilitare l'add-on Istio.
- (Facoltativo) Nel file
enableistio.json
, specificare se installare il gateway di entrata Istio, come indicato di seguito.- Per installare il gateway di entrata Istio, aggiornare il file
enableistio.json
come indicato di seguito.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
- Se non si desidera installare il gateway di entrata Istio, aggiornare il file
enableistio.json
come indicato di seguito.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" } ] }
Tenere presente che se non si include
enableIngressGateway
nel file di configurazione, il comportamento predefinito è quello di non installare il gateway di entrata Istio (equivalente all'impostazione dienableIngressGateway
sufalse
). - Per installare il gateway di entrata Istio, aggiornare il file
-
(Facoltativo) Nel file
enableistio.json
creato, specificare altri argomenti di configurazione per personalizzare il componente aggiuntivo Istio. Per informazioni sugli argomenti di configurazione che è possibile impostare, vedere Argomenti di configurazione dei componenti aggiuntivi di Istio. - (Facoltativo) Se si desidera conservare le personalizzazioni apportate all'add-on Istio se la versione del componente aggiuntivo viene aggiornata automaticamente da Oracle, impostare l'argomento
customizeConfigMap
sutrue
. Ad esempio:- Per installare il gateway di entrata Istio e conservare le personalizzazioni, aggiornare il file
enableistio.json
come indicato di seguito.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" }, { "key": "customizeConfigMap", "value": "true" } ] }
- Se non si desidera installare il gateway di entrata Istio ma si desidera conservare le personalizzazioni, aggiornare il file
enableistio.json
come indicato di seguito.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "false" }, { "key": "customizeConfigMap", "value": "true" } ] }
Tenere presente che se non si include
customizeConfigMap
nel file di configurazione, il comportamento predefinito prevede l'eliminazione delle personalizzazioni se la versione del componente aggiuntivo viene aggiornata automaticamente da Oracle (equivalente all'impostazione dicustomizeConfigMap
sufalse
).
- Per installare il gateway di entrata Istio e conservare le personalizzazioni, aggiornare il file
- Salvare e chiudere il file
enableistio.json
.
Passo 2: Distribuire l'add-on Istio sul cluster e confermare la distribuzione riuscita
In queste istruzioni viene descritto come distribuire il componente aggiuntivo Istio utilizzando l'interfaccia CLI e un file di configurazione. Puoi anche distribuire il componente aggiuntivo utilizzando la console e l'API. Per ulteriori informazioni, vedere Installazione di un componente aggiuntivo cluster.
-
Se non è già stato fatto, attenersi alla procedura per impostare il file di configurazione kubeconfig del cluster e (se necessario) impostare la variabile di ambiente KUBECONFIG in modo che punti al file. Si noti che è necessario impostare il proprio file kubeconfig. Non è possibile accedere a un cluster utilizzando un file kubeconfig impostato da un altro utente. Vedere Impostazione dell'accesso al cluster.
- Verificare che l'add-on Istio non sia già stato installato sul cluster immettendo:
oci ce cluster list-addons --cluster-id <cluster-ocid>
dove
<cluster-ocid>
è l'OCID del cluster su cui si desidera distribuire il componente aggiuntivo Istio. -
Distribuire l'add-on Istio nel cluster immettendo:
oci ce cluster install-addon --addon-name Istio --cluster-id <cluster-ocid> --from-json file://./<path-to-config-file>
Dove:
--cluster-id <cluster-ocid>
è l'OCID del cluster in cui si desidera distribuire il componente aggiuntivo Istio.--from-json file://<path-to-config-file>
specifica la posizione del file di configurazione dei componenti aggiuntivi Istio creato in precedenza. Ad esempio,--from-json file://./enableistio.json
Ad esempio:
oci ce cluster install-addon --addon-name Istio --from-json file://./enableistio.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Viene creata una richiesta di lavoro per distribuire il componente aggiuntivo Istio.
-
Confermare la distribuzione corretta del componente aggiuntivo Istio (e del gateway di entrata Istio, se specificato nel file di configurazione del componente aggiuntivo Istio), come indicato di seguito.
- Verificare che il componente aggiuntivo Istio sia stato installato sul cluster immettendo:
oci ce cluster list-addons --cluster-id <cluster-ocid>
Supponendo una distribuzione riuscita, l'output mostra l'add-on Istio con lo stato del ciclo di vita ACTIVE. Ad esempio:
{ "data": [ { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null } ] }
- Verificare che il pod istiod (il piano di controllo Istio) e anche il pod istio-ingressgateway, se specificato nel file di configurazione, siano in esecuzione nello spazio dei nomi istio-system immettendo:
kubectl get pods -n istio-system
Se si presuppone che la distribuzione sia riuscita, l'output mostra i pod con stato In esecuzione. Ad esempio:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- Se nel file di configurazione è stato specificato il gateway di entrata Istio, confermare che il servizio istio-ingressgateway è stato distribuito correttamente immettendo:
kubectl get svc istio-ingressgateway -n istio-system
Supponendo che la distribuzione sia riuscita, l'output mostra il servizio istio-ingressgateway come servizio di tipo LoadBalancer e (se la subnet del load balancer del cluster è pubblica) con un indirizzo IP accessibile pubblicamente. Ad esempio:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- Verificare che il componente aggiuntivo Istio sia stato installato sul cluster immettendo:
Passo 3: Abilita l'iniezione sidecar di Envoy
Per consentire a Istio di inserire il sidecar Envoy in ogni servizio per fornire comunicazione, configurazione e sicurezza:
- Creare lo spazio di nomi in cui distribuire le applicazioni (se lo spazio di nomi non esiste già) immettendo:
kubectl create namespace <namespace-name>
- Rendere lo spazio di nomi in cui distribuire le applicazioni lo spazio di nomi predefinito immettendo:
kubectl config set-context --current --namespace=<namespace-name>
- Verificare che lo spazio di nomi in cui distribuire le applicazioni sia lo spazio di nomi predefinito immettendo:
kubectl config view --minify | grep namespace
- Aggiungere l'etichetta
istio-injection=enabled
allo spazio di nomi per installare automaticamente il sidecar Envoy in qualsiasi nuovo pod applicazione distribuito nello spazio di nomi immettendo:kubectl label namespace <namespace-name> istio-injection=enabled
- Verificare che lo spazio di nomi sia etichettato correttamente immettendo:
kubectl get namespace -L istio-injection
Passo 4: Distribuire un'applicazione e osservare i contenitori sidecar di Envoy
Per confermare che Istio viene utilizzato per fornire comunicazione, configurazione e sicurezza per un'applicazione:
- Implementare l'applicazione. Ad esempio, immettendo:
kubectl apply -f <manifest-name>
- Confermare che i servizi dell'applicazione sono stati creati correttamente immettendo:
kubectl get services
- Verificare che lo stato dei pod dell'applicazione sia In esecuzione immettendo:
kubectl get pods
L'output mostra che ogni pod dell'applicazione dispone di due contenitori. Per ogni pod, un contenitore è il contenitore dell'applicazione e l'altro è il sidecar Envoy iniettato da Istio.
- Verificare che uno dei pod dell'applicazione abbia due contenitori (uno dei quali è il contenitore dell'applicazione e l'altro è il sidecar Envoy iniettato da Istio) inserendo:
kubectl get pods <application-pod-name> -o jsonpath='{.spec.containers[*].name}'
Tenere presente che le applicazioni non sono accessibili dall'esterno del cluster per impostazione predefinita dopo l'abilitazione del gateway in entrata. Per un esempio di come rendere accessibile un'applicazione, vedere Esempio: distribuzione di Istio come componente aggiuntivo cluster.
Esempio: distribuzione di Istio come componente aggiuntivo del cluster
In questo esempio, è possibile installare il componente aggiuntivo Istio e il gateway di entrata Istio in un cluster creato con Kubernetes Engine. Dopo aver installato l'add-on Istio e il gateway di ingresso, si distribuisce l'applicazione Bookinfo di esempio di Istio e si rende l'applicazione accessibile dall'esterno del cluster:
- Per comodità, impostare una variabile di ambiente denominata CLUSTER_ID sul valore dell'OCID del cluster immettendo:
export CLUSTER_ID=<cluster-ocid>
- Creare un file JSON denominato
enableistio-ig.json
contenente gli elementi riportati di seguito.{ "addonName": "Istio", "configurations": [ { "key": "enableIngressGateway", "value": "true" } ] }
Questo file di configurazione installa l'add-on Istio e il gateway di ingresso Istio.
- Installare l'add-on Istio e il gateway di ingresso Istio sul cluster immettendo:
oci ce cluster install-addon --addon-name Istio --cluster-id $CLUSTER_ID --from-json file://./enableistio-ig.json
Viene creata una richiesta di lavoro per installare il componente aggiuntivo Istio.
- Verificare la corretta installazione del componente aggiuntivo Istion e del gateway di ingresso Istio:
- Verificare che il componente aggiuntivo Istio sia stato installato correttamente inserendo:
oci ce cluster list-addons --cluster-id $CLUSTER_ID
Supponendo una distribuzione riuscita, l'output mostra l'add-on Istio con lo stato del ciclo di vita ACTIVE. Ad esempio, i seguenti output mostrano l'add-on Istio, insieme a una serie di componenti aggiuntivi cluster essenziali:
{ "data": [ { "addon-error": null, "current-installed-version": "v1.10.1-multiarch-7", "lifecycle-state": "ACTIVE", "name": "CoreDNS", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.19.0", "lifecycle-state": "ACTIVE", "name": "Istio", "time-created": "2023-11-06T11:21:11+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v1.27.2-oke.0.2.20-multiarch-98", "lifecycle-state": "ACTIVE", "name": "KubeProxy", "time-created": "2023-11-06T10:35:26+00:00", "version": null }, { "addon-error": null, "current-installed-version": "v2.0.1", "lifecycle-state": "ACTIVE", "name": "OciVcnIpNative", "time-created": "2023-11-06T10:35:26+00:00", "version": null } ] }
- Verificare che il pod del piano di controllo Istio (istiod) e il pod istio-ingressgateway siano entrambi in esecuzione nello spazio dei nomi istio-system immettendo:
kubectl get pods -n istio-system
Se si presuppone che la distribuzione sia riuscita, l'output mostra entrambi i pod con stato In esecuzione. Ad esempio:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-df7d86548-n2vxr 1/1 Running 0 102s istiod-65d95bd5f9-vb2qk 1/1 Running 0 101s
- Verificare che il servizio istio-ingressgateway sia stato distribuito correttamente immettendo:
kubectl get svc istio-ingressgateway -n istio-system
Supponendo che la distribuzione sia riuscita, l'output mostra il servizio istio-ingressgateway come servizio di tipo LoadBalancer e (se la subnet del load balancer del cluster è pubblica) con un indirizzo IP accessibile pubblicamente. Ad esempio:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.96.31.174 <EXTERNAL-IP> 15021:30089/TCP,80:31662/TCP,443:32217/TCP 2m50s
- Verificare che il componente aggiuntivo Istio sia stato installato correttamente inserendo:
- Creare un nuovo spazio di nomi in cui distribuire l'applicazione di esempio Bookinfo:
- Creare lo spazio di nomi
bookinfo
immettendo:kubectl create namespace bookinfo
- Per impostare lo spazio di nomi
bookinfo
come spazio di nomi predefinito, immettere:kubectl config set-context --current --namespace=bookinfo
- Verificare che bookinfo sia lo spazio di nomi predefinito immettendo:
kubectl config view --minify | grep namespace
- Creare lo spazio di nomi
- Aggiungere l'etichetta
istio-injection=enabled
allo spazio di nomi bookinfo per installare automaticamente il sidecar Envoy in qualsiasi nuovo pod applicazione distribuito nello spazio di nomi:- Aggiungere l'etichetta allo spazio di nomi bookinfo immettendo:
kubectl label namespace bookinfo istio-injection=enabled
- Verificare che lo spazio di nomi bookinfo sia etichettato correttamente immettendo:
kubectl get namespace -L istio-injection
- Aggiungere l'etichetta allo spazio di nomi bookinfo immettendo:
- Per distribuire l'applicazione di esempio Bookinfo, immettere:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
Supponendo che la distribuzione sia riuscita, l'output mostra diverse distribuzioni e servizi creati nel cluster, come indicato di seguito.
service/details created serviceaccount/bookinfo-details created deployment.apps/details-v1 created service/ratings created serviceaccount/bookinfo-ratings created deployment.apps/ratings-v1 created service/reviews created serviceaccount/bookinfo-reviews created deployment.apps/reviews-v1 created deployment.apps/reviews-v2 created deployment.apps/reviews-v3 created service/productpage created serviceaccount/bookinfo-productpage created deployment.apps/productpage-v1 created
- Verificare che la distribuzione dell'applicazione di esempio Bookinfo sia riuscita:
- Confermare che i servizi sono stati creati correttamente immettendo:
kubectl get services
Supponendo che la distribuzione sia riuscita, l'output mostra i servizi creati nel cluster, in modo simile al seguente:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE details ClusterIP 10.96.72.219 <none> 9080/TCP 54s productpage ClusterIP 10.96.65.83 <none> 9080/TCP 54s ratings ClusterIP 10.96.101.51 <none> 9080/TCP 54s reviews ClusterIP 10.96.14.9 <none> 9080/TCP 54s
- Verificare che tutti i pod abbiano lo stato In esecuzione immettendo:
kubectl get pods
Supponendo una distribuzione riuscita, l'output mostra i pod in esecuzione, in modo simile al seguente:
NAME READY STATUS RESTARTS AGE details-v1-5f4d584748-hcm9t 2/2 Running 0 81s productpage-v1-564d4686f-48lpw 2/2 Running 0 80s ratings-v1-686ccfb5d8-bpl8t 2/2 Running 0 81s reviews-v1-86896b7648-6c8d4 2/2 Running 0 81s reviews-v2-b7dcd98fb-fsv7c 2/2 Running 0 81s reviews-v3-5c5cc7b6d-qgrv2 2/2 Running 0 81s
L'output mostra che ogni pod dell'applicazione dispone di due contenitori. Per ogni pod, un contenitore è il contenitore dell'applicazione e l'altro è il sidecar Envoy iniettato da Istio.
- Verificare che il pod
ratings
disponga di due contenitori (uno dei quali è il contenitore dell'applicazione e l'altro è il sidecar Envoy iniettato da Istio). Ad esempio, immettendo:kubectl get pods ratings-v1-686ccfb5d8-bpl8t -o jsonpath='{.spec.containers[*].name}'
L'output mostra due contenitori, il contenitore applicativo (rapporti) e il contenitore sidecar Envoy iniettato da Istio (istio-proxy):
ratings istio-proxy
- Verificare che l'applicazione sia in esecuzione inviando un comando curl da un pod:
kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>" <title>Simple Bookstore App</title>
Tenere presente che l'applicazione di esempio Bookinfo non è ancora accessibile dall'esterno del cluster, anche dopo aver abilitato il gateway in entrata. Si noti inoltre che l'accessibilità del gateway di entrata Istio dipende dal tipo di subnet del load balancer (pubblica o privata) specificata per il cluster.
- Confermare che i servizi sono stati creati correttamente immettendo:
-
Rendere l'applicazione di esempio Bookinfo accessibile dall'esterno del cluster:
- Mappare l'ingresso della distribuzione di esempio al gateway di entrata Istio immettendo:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
L'output mostra che il gateway Kubernetes e le risorse VirtualService sono stati creati:
gateway.networking.istio.io/bookinfo-gateway created virtualservice.networking.istio.io/bookinfo created
- Mappare l'ingresso della distribuzione di esempio al gateway di entrata Istio immettendo:
- Verificare che l'applicazione di esempio Bookinfo sia accessibile e che utilizzi il gateway di entrata Istio:
- Impostare le variabili di ambiente per l'host in entrata e la porta in entrata immettendo:
export INGRESS_NAME=istio-ingressgateway
export INGRESS_NS=istio-system
export INGRESS_HOST=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n "$INGRESS_NS" get service "$INGRESS_NAME" -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
- Verificare che l'applicazione di esempio Bookinfo sia accessibile e che utilizzi il gateway di entrata Istio immettendo:
curl -s "http://${INGRESS_HOST}:${INGRESS_PORT}/productpage" | grep -o "<title>.*</title>"
Supponendo che la distribuzione sia riuscita, l'output mostra i servizi creati nel cluster, in modo simile al seguente:
<title>Simple Bookstore App</title>
- Visualizzare la pagina Web Bookinfo in un browser aprendo il seguente URL:
http://${INGRESS_HOST}:${INGRESS_PORT}/productpage
- Nel browser, aggiornare più volte la pagina Web Bookinfo per visualizzare diverse versioni delle recensioni visualizzate nella pagina.
- Impostare le variabili di ambiente per l'host in entrata e la porta in entrata immettendo:
- (Facoltativo) Dopo aver completato l'esempio, è ora possibile eliminare le risorse create:
- Eliminare l'applicazione di esempio Bookinfo immettendo:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/platform/kube/bookinfo.yaml
-
Disabilitare (e facoltativamente rimuovere) il componente aggiuntivo Istio utilizzando il comando oci ce cluster disable-addon, immettendo:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on <true|false>
dove
--is-remove-existing-add-on <true|false>
specifica di rimuovere completamente l'add-on Istio (se impostato sutrue
) o di non rimuovere l'add-on, ma semplicemente di disattivarlo e di non utilizzarlo (se impostato sufalse
). Se disabiliti il componente aggiuntivo, Oracle non lo aggiorna più automaticamente quando diventano disponibili nuove versioni.Ad esempio:
oci ce cluster disable-addon --addon-name Istio --cluster-id $CLUSTER_ID --is-remove-existing-add-on true
Viene creata una richiesta di lavoro per disabilitare (e facoltativamente rimuovere) il componente aggiuntivo Istio.
- Rimuovere l'Istio CustomResourceDefinitions (CRD), non eliminati per impostazione predefinita, immettendo:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- Rimuovere le risorse mesh Istio (ad esempio il gateway Kubernetes e le risorse VirtualService), non gestite dall'add-on Istio, immettendo:
kubectl delete -f https://raw.githubusercontent.com/istio/istio/release-1.19/samples/bookinfo/networking/bookinfo-gateway.yaml
- Eliminare l'applicazione di esempio Bookinfo immettendo:
Aggiornamento del componente aggiuntivo Istio
In queste istruzioni viene descritto come aggiornare il componente aggiuntivo Istio utilizzando l'interfaccia CLI e un file di configurazione. Puoi anche aggiornare il componente aggiuntivo utilizzando la console e l'API. Per ulteriori informazioni, vedere Aggiornamento di un componente aggiuntivo cluster.
-
Aprire il file di configurazione del componente aggiuntivo Istio in un editor appropriato.
-
Aggiungere, rimuovere o modificare gli argomenti di configurazione nel file di configurazione in base alle esigenze. Per informazioni sugli argomenti che è possibile impostare, vedere Argomenti di configurazione dei componenti aggiuntivi di Istio.
- Se si è specificato che si desidera che Oracle aggiorni automaticamente la versione del componente aggiuntivo Istio e si desidera conservare le modifiche alla configurazione, impostare l'argomento di configurazione
customizeConfigMap
sutrue
(se non è già impostato). - Aggiornare il componente aggiuntivo Istio utilizzando il comando oci ce cluster update-addon, immettendo il seguente comando.
oci ce cluster update-addon --addon-name Istio --from-json file://<path-to-config-file> --cluster-id <cluster-ocid>
Dove:
--cluster-id <cluster-ocid>
è l'OCID del cluster in cui si desidera aggiornare il componente aggiuntivo Istio.--from-json file://<path-to-config-file>
specifica la posizione del file di configurazione dei componenti aggiuntivi Istio da utilizzare durante l'aggiornamento del componente aggiuntivo. Ad esempio,--from-json file://./istio-add-on.json
Ad esempio:
oci ce cluster update-addon --addon-name Istio --from-json file://./istio-add-on.json --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr
Viene creata una richiesta di lavoro per aggiornare il componente aggiuntivo Istio.
- (Facoltativo) Visualizzare lo stato dei pod istiod e istio-ingressgateway per osservare il progresso, immettendo:
kubectl get pods -n istio-system
Disabilitazione (e rimozione) del componente aggiuntivo Istio
In queste istruzioni viene descritto come disabilitare e rimuovere il componente aggiuntivo Istio utilizzando l'interfaccia CLI e un file di configurazione. Puoi anche aggiornare il componente aggiuntivo utilizzando la console e l'API. Per ulteriori informazioni, vedere Disabilitazione (e rimozione) di un componente aggiuntivo del cluster.
-
Disabilitare (e facoltativamente rimuovere) il componente aggiuntivo Istio utilizzando il comando oci ce cluster disable-addon, immettendo:
oci ce cluster disable-addon --addon-name Istio --cluster-id <cluster-ocid> --is-remove-existing-add-on <true|false>
Dove:
--cluster-id <cluster-ocid>
è l'OCID del cluster in cui si desidera disabilitare (e facoltativamente rimuovere) l'add-on Istio.--is-remove-existing-add-on <true|false>
specifica di rimuovere completamente l'add-on Istio (se impostato sutrue
) o di non rimuovere l'add-on, ma semplicemente di disattivarlo e di non utilizzarlo (se impostato sufalse
). Se disattivi il componente aggiuntivo Istio, Oracle non aggiorna più automaticamente la versione del componente aggiuntivo quando diventano disponibili nuove versioni.
Ad esempio:
oci ce cluster disable-addon --addon-name Istio --cluster-id ocid1.cluster.oc1.iad.aaaaaaaam______dfr --is-remove-existing-add-on true
Viene creata una richiesta di lavoro per disabilitare (e facoltativamente rimuovere) il componente aggiuntivo Istio.
- (Facoltativo) Visualizzare lo stato dei pod istiod e istio-ingressgateway per osservare il progresso, immettendo:
kubectl get pods -n istio-system
- (Facoltativo) Rimuovere l'Istio CustomResourceDefinitions (CRD), che non vengono eliminati per impostazione predefinita, immettendo:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
- (Facoltativo) Rimuovere le risorse mesh Istio (ad esempio il gateway Kubernetes e le risorse VirtualService), non gestite dal componente aggiuntivo Istio, utilizzando il comando
kubectl delete
.