Preparazione di una dumanda per Istio

Preparazione di una dumanda per Istio

Istio hè un strumentu convenientu per cunnette, assicurà è monitorà l'applicazioni distribuite. Istio usa una varietà di tecnulugii per eseguisce è gestisce u software à scala, cumpresi cuntenituri per imballà u codice di l'applicazione è dipendenze per a implementazione, è Kubernetes per gestisce quelli cuntenituri. Dunque, per travaglià cù Istio, duvete sapè cumu funziona una applicazione cù parechji servizii basati nantu à sti tecnulugia senza Istio. Sì sti arnesi è cuncetti sò digià familiari per voi, sentite liberu di saltà stu tutoriale è andate direttamente à a sezione Installazione di Istio nantu à Google Kubernetes Engine (GKE) o installendu una estensione Istio nantu à GKE.

Questa hè una guida passo-passu induve andemu in tuttu u prucessu da u codice fonte à u containeru GKE per dà una cunniscenza basica di sti tecnulugii attraversu un esempiu. Puderete ancu vede cumu Istio sfrutta u putere di sti tecnulugia. Questu assume chì ùn sapete nunda di cuntenituri, Kubernetes, maglie di serviziu, o Istio.

fatti

In questu tutoriale, compie e seguenti attività:

  1. Amparate una semplice applicazione salutu mondu cù parechji servizii.
  2. Eseguite l'applicazione da u codice fonte.
  3. Imballaggio di l'applicazione in cuntenituri.
  4. Creazione di un cluster Kubernetes.
  5. Implantazione di cuntenituri in un cluster.

Prima di cumincià

Segui l'istruzzioni per attivà l'API Kubernetes Engine:

  1. À. Ì Pagina di Kubernetes Engine in a cunsola di Google Cloud Platform.
  2. Crea o selezziunate un prughjettu.
  3. Aspetta finu à chì l'API è i servizii cunnessi sò attivati. Questu pò piglià uni pochi di minuti.
  4. Assicuratevi chì a fatturazione hè stallata per u vostru prughjettu Google Cloud Platform. Amparate cumu attivà a fatturazione.

In questu tutoriale, pudete aduprà Cloud Shell, chì prepara a macchina virtuale g1-small in Google Compute Engine cù Linux basatu in Debian, o un computer Linux o macOS.

Opzione A: Utilizà Cloud Shell

Vantaghji di utilizà Cloud Shell:

  • Ambienti di sviluppu Python 2 è Python 3 (cumpresu virtualenv) sò cumpletamente cunfigurati.
  • Strumenti di linea di cummanda gcloud, docker, andà и kubectl, chì avemu aduprà sò digià stallati.
  • Avete parechji da sceglie editori di testu:
    1. Editore di codice, chì si apre cù l'icona di edizione in cima di a finestra Cloud Shell.
    2. Emacs, Vim o Nano, chì si apre da a linea di cummanda in Cloud Shell.

Per aduprà Cloud Shell:

  1. Andà à a cunsola GCP.
  2. Cliccate u buttone Attivate Cloud Shell (Attivate Cloud Shell) in cima di a finestra di a cunsola GCP.

Preparazione di una dumanda per Istio

In a parte bassa Console GCP Una sessione di Cloud Shell cù una linea di cummanda si apre in una nova finestra.

Preparazione di una dumanda per Istio

Opzione B: Utilizà l'Arnesi di a Linea di Command in u locu

Sè vo travaglià nantu à un urdinatore cù Linux o macOS, vi tuccherà à cunfigurà è stallà i seguenti cumpunenti:

  1. Personalizà Ambiente di sviluppu Python 3 è Python 2.

  2. Installa Cloud SDK cù strumentu di linea di cumanda gcloud.

  3. Installa kubectl - Strumenta di linea di cumanda per travaglià cù Kubernetes.

    gcloud components install kubectl

  4. Installa Docker Community Edition (CE). Puderete aduprà u strumentu di linea di cumanda dockerper creà imàgini di cuntainer per l'applicazione di mostra.

  5. Stallà u strumentu cuntrollu di versione Gitper uttene l'applicazione di mostra da GitHub.

Scaricate u codice di mostra

  1. Scaricate u codice fonte ciao servitore:

    git clone https://github.com/GoogleCloudPlatform/istio-samples

  2. Andate à u repertoriu di codice di esempiu:

    cd istio-samples/sample-apps/helloserver

Esplora una applicazione cù parechji servizii

L'applicazione di mostra hè scritta in Python è si compone di dui cumpunenti chì interagiscenu cù l'usu REST:

  • servore: servitore simplice cù un puntu finale GET, /, chì stampa "hello world" à a cunsola.
  • loadgen: script chì manda u trafficu à servore, cù un numeru configurabile di richieste per seconda.

Preparazione di una dumanda per Istio

Esecuzione di una applicazione da u codice fonte

Per scopra l'applicazione di mostra, eseguite in Cloud Shell o in u vostru urdinatore.
1) In u catalogu istio-samples/sample-apps/helloserver corre servore:

python3 server/server.py

À l'iniziu servore u seguente hè visualizatu:

INFO:root:Starting server...

2) Aprite una altra finestra di terminal per mandà richieste servore. Sè vo aduprate Cloud Shell, cliccate nantu à l'icona aghjunghje per apre una altra sessione.
3) Mandate una dumanda à servore:

curl http://localhost:8080

u servitore risponde:

Hello World!

4) Da u repertoriu induve avete scaricatu u codice di mostra, andate à u repertoriu chì cuntene loadgen:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen

5) Crea e seguenti variabili d'ambiente:

export SERVER_ADDR=http://localhost:8080
export REQUESTS_PER_SECOND=5

6) Corri virtualenv:

virtualenv --python python3 env

7) Attivate l'ambiente virtuale:

source env/bin/activate

8) Definite esigenze per loadgen:

pip3 install -r requirements.txt

9) Corri loadgen:

python3 loadgen.py

À l'iniziu loadgen mostra qualcosa cum'è u missaghju seguente:

Starting loadgen: 2019-05-20 10:44:12.448415
5 request(s) complete to http://localhost:8080

In una altra finestra di terminal servore produce i seguenti missaghji à a cunsola:

127.0.0.1 - - [21/Jun/2019 14:22:01] "GET / HTTP/1.1" 200 -
INFO:root:GET request,
Path: /
Headers:
Host: localhost:8080
User-Agent: python-requests/2.22.0
Accept-Encoding: gzip, deflate
Accept: */*

Da una perspettiva di rete, tutta l'applicazione funziona nantu à un unicu host (urdinatore locale o macchina virtuale Cloud Shell). Dunque, pudete aduprà localhostper mandà richieste à servore.
10) Per piantà loadgen и servore, entre Ctrl-c in ogni finestra di terminal.
11) In a finestra di u terminal loadgen disattivà l'ambiente virtuale:

deactivate

Imballaggio di una applicazione in cuntenituri

Per eseguisce l'applicazione nantu à GKE, avete bisognu di pacchettu l'applicazione di mostra - servore и loadgen - in cuntenenu. Un cuntainer hè un modu per imballà una applicazione per isolà da u so ambiente.

Per imballà una applicazione in un containeru, avete bisognu dockerfile. dockerfile hè un schedariu di testu chì definisce cumandamenti per custruisce u codice fonte di l'applicazione è e so dipendenze Image Docker. Una volta custruitu, caricate l'imaghjini à un registru di cuntainer cum'è Docker Hub o Registru di Container.

L'esempiu hà digià dockerfile di servore и loadgen cù tutti i cumandamenti necessarii per cullà imagine. Sottu - dockerfile di servore:

FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        g++ 
    && rm -rf /var/lib/apt/lists/*

# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1

RUN apt-get -qq update 
    && apt-get install -y --no-install-recommends 
        wget

WORKDIR /helloserver

# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/

# Add the application
COPY . .

EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]

  • squadra FROM python: 3-slim cum'è basa dice à Docker di utilizà l'ultime Immagine Python 3 cum'è una basa.
  • squadra COPIA. . copia i fugliali fonte à u cartulare di travagliu attuale (in u nostru casu solu server.py) à u sistema di fugliale di u containeru.
  • PUNTU DI ENTRATA definisce u cumandamentu chì hè utilizatu per inizià u cuntinuu. In u nostru casu, stu cumandamentu hè quasi u listessu cum'è quellu chì avete usatu per eseguisce server.py da u codice fonte.
  • squadra ESPOSTI indica chì servore aspetta i dati attraversu u portu 8080. Questa squadra ùn hè micca furnisce i porti. Questu hè un tipu di documentazione chì hè necessariu per apre u portu 8080 quandu principia u cuntinuu.

Preparazione per cuntene a vostra applicazione

1) Definite e seguenti variabili di l'ambiente. Sustituisce PROJECT_ID à u vostru ID di prughjettu GCP.

export PROJECT_ID="PROJECT_ID"

export GCR_REPO="preparing-istio"

Utilizà i valori PROJECT_ID и GCR_REPO taggate l'imaghjini di Docker quandu a custruite è u spinghje à un Registru di Container privatu.

2) Definite u prughjettu GCP predeterminatu per l'uttellu di linea di cummanda gcloud.

gcloud config set project $PROJECT_ID

3) Definite a zona predeterminata per l'uttellu di linea di cumanda gcloud.

gcloud config set compute/zone us-central1-b

4) Assicuratevi chì u serviziu di u Registru di Container hè attivatu in u prughjettu GCP.

gcloud services enable containerregistry.googleapis.com

Servitore di containerizazione

  1. Andà à u cartulare induve si trova l'esempiu servore:

    cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

  2. Assembla l'imaghjini usendu dockerfile è e variabili di l'ambiente chì avete definitu prima:

    docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1 .

Parameter -t rapprisenta u tag Docker. Questu hè u nome di l'imaghjini chì aduprate quandu implementate u containeru.

  1. Caricate l'imaghjini à u Registru di Container:
    docker push gcr.io/$PROJECT_ID/$GCR_REPO/helloserver:v0.0.1

Containerization di loadgen

1) Andate à u repertoriu induve si trova l'esempiu loadgen:

cd ../loadgen

2) Cullate l'imaghjini:

docker build -t gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1 .

3) Caricate l'imaghjini à u Registru di Container:

docker push gcr.io/$PROJECT_ID/$GCR_REPO/loadgen:v0.0.1

Vede una lista di imagine

Verificate a lista di l'imaghjini in u repositoriu è verificate chì l'imaghjini sò stati caricati:

gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio

U cumandamentu mostra i nomi di l'imaghjini appena caricate:

NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen

Creazione di un cluster GKE.

Questi cuntenituri puderanu esse eseguiti nantu à una macchina virtuale Cloud Shell o in un computer cù u cumandimu docker run. Ma in un ambiente di produzzione, avete bisognu di un modu per orchestrate cintrali cuntenituri. Per esempiu, avete bisognu di un sistema chì assicura chì i cuntenituri sò sempre in esecuzione, è avete bisognu di un modu per scala è spin up istanze di cuntainer supplementari se u trafficu aumenta.

Per eseguisce l'applicazioni containerizzate pudete aduprà G.K.E.. GKE hè una piattaforma di orchestrazione di container chì aggrega e macchine virtuali in un cluster. Ogni macchina virtuale hè chjamata node. I clusters GKE sò basati nantu à u sistema di gestione di cluster Kubernetes open source. Kubernetes furnisce miccanismi per interagisce cù u cluster.

Creazione di un cluster GKE:

1) Crea un cluster:

gcloud container clusters create istioready 
  --cluster-version latest 
  --machine-type=n1-standard-2 
  --num-nodes 4

squadra gcloud crea un cluster istioready in u prughjettu GCP è a zona predeterminata chì avete specificatu. Per eseguisce Istio, ricumandemu di avè almenu 4 nodi è una macchina virtuale n1-standard-2.

A squadra crea u cluster in pochi minuti. Quandu u cluster hè prontu, u cumandimu pruduce qualcosa cusì u missaghju.

2) Fornite credenziali in u strumentu di linea di cummanda kubectlper aduprà per gestisce u cluster:

gcloud container clusters get-credentials istioready

3) Avà pudete cumunicà cù Kubernetes via kubectl. Per esempiu, u cumandimu seguitu pò truvà u statutu di i nodi:

kubectl get nodes

U cumandimu pruduce una lista di nodi:

NAME                                       STATUS   ROLES    AGE    VERSION
gke-istoready-default-pool-dbeb23dc-1vg0   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5   Ready    <none>   100s   v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s   Ready    <none>   99s    v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw   Ready    <none>   99s    v1.13.6-gke.13

I cuncetti chjave di Kubernetes

U diagramma mostra una applicazione nantu à GKE:

Preparazione di una dumanda per Istio

Prima di implementà i cuntenituri in GKE, amparate i cuncetti chjave di Kubernetes. Ci sò ligami à a fine se vulete amparà di più.

  • Nodi è clusters. In GKE, un node hè una macchina virtuale. Nant'à altre plataforme Kubernetes, un node pò esse un computer o una macchina virtuale. Un cluster hè una cullizzioni di nodi chì ponu esse cunsiderate una sola unità induve implementate una applicazione containerizzata.
  • Pods. In Kubernetes, i cuntenituri scorri in pods. Un Pod in Kubernetes hè una unità indivisibile. Un Pod cuntene unu o più cuntenituri. Implantate cuntenituri di u servitore è loadgen in baccelli separati. Quandu ci sò parechji cuntenituri in un pod (per esempiu, un servitore d'applicazioni è servitore proxy), i cuntenituri sò gestiti cum'è una sola entità è sparte risorse pod.
  • Impiegazioni. In Kubernetes, una implementazione hè un oggettu chì hè una cullizzioni di pods identici. A implementazione lancia parechje repliche di pods distribuiti in i nodi di cluster. L'implementazione rimpiazza automaticamente i pods chì anu fiascatu o ùn rispundenu.
  • serviziu Kubernetes. Quandu eseguisce u codice di l'applicazione in GKE, a cunnessione trà loadgen и servore. Quandu avete iniziatu i servizii nantu à una macchina virtuale Cloud Shell o desktop, avete mandatu richieste à servore ì à localhost: 8080. Una volta implementati in GKE, i pods sò eseguiti nantu à i nodi dispunibili. Per automaticamente, ùn avete micca un cuntrollu nantu à quale nodu u pod hè in esecuzione, cusì voi baccelli senza indirizzi IP permanenti.
    Per ottene un indirizzu IP per servore, avete bisognu di definisce una astrazione di rete in cima di i pods. Hè ciò chì hè serviziu Kubernetes. U serviziu Kubernetes furnisce un endpoint persistente per un set di pods. Ci sò uni pochi tippi di servizii. servore usi LoadBalancer, chì furnisce un indirizzu IP esternu per cuntattà servore da fora di u cluster.
    Kubernetes hà ancu un sistema DNS integratu chì assigna nomi DNS (per esempiu, helloserver.default.cluster.local) servizii. Grazie à questu, i pods in u cluster cumunicanu cù altri pods in u cluster à un indirizzu permanente. U nome DNS ùn pò esse usatu fora di u cluster, cum'è in Cloud Shell o in un computer.

Kubernetes si manifesta

Quandu avete eseguitu l'applicazione da a fonte, avete utilizatu u cumandamentu imperativu python3

server.py

L'imperativu implica un verbu: "fate questu".

Kubernetes usa mudellu dichjarazione. Questu significa chì ùn dicemu micca à Kubernetes esattamente ciò chì deve fà, ma piuttostu discrittendu u statu desideratu. Per esempiu, Kubernetes principia è ferma i pods quantu necessariu per assicurà chì u statu propiu di u sistema currisponde à u statu desideratu.

Indicà u statu desideratu in manifesti o schedari YAML. Un schedariu YAML cuntene specificazioni per unu o più oggetti Kubernetes.

L'esempiu cuntene un schedariu YAML per servore и loadgen. Ogni schedariu YAML specifica u statu desideratu di l'ughjettu di implementazione è u serviziu Kubernetes.

server.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloserver
spec:
  selector:
    matchLabels:
      app: helloserver
  replicas: 1
  template:
    metadata:
      labels:
        app: helloserver
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/helloserver:v0.0.1
        imagePullPolicy: Always

  • Bona indica u tipu di l'ughjettu.
  • metadata.name specifica u nome di implementazione.
  • Primu campu spec cuntene una descrizzione di u statu desideratu.
  • spec.repliche indica u numeru desideratu di baccelli.
  • Sezione spec.template definisce un mudellu di pod. Ci hè un campu in a specificazione di pod imaghjini, chì specifica u nome di l'imaghjini chì deve esse estratti da u Registru di Container.

U serviziu hè definitu cusì:

apiVersion: v1
kind: Service
metadata:
  name: hellosvc
spec:
  type: LoadBalancer
  selector:
    app: helloserver
  ports:
  - name: http
    port: 80
    targetPort: 8080

  • LoadBalancer: I clienti mandanu dumande à l'indirizzu IP di u balancer di carica, chì hà un indirizzu IP persistente è hè accessibile da fora di u cluster.
  • targetPort: cum'è vi ricordate, a squadra EXPOSE 8080 в dockerfile ùn hà micca furnitu porti. Fornite u portu 8080cusì chì pudete cuntattà u cuntinuu servore fora di u cluster. In u nostru casu hellosvc.default.cluster.local:80 (nome cortu: ciao vc) currisponde à u portu 8080 Pod l'indirizzi IP ciao servitore.
  • portu: Questu hè u numeru di portu induve altri servizii in u cluster mandaranu e dumande.

loadgen.yaml

Oggettu di implementazione à loadgen.yaml parè server.yaml. A diferenza hè chì l'ughjettu di implementazione cuntene una sezione env. Definisce e variabili di l'ambiente chì sò necessarii loadgen è chì avete installatu quandu eseguite l'applicazione da a fonte.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: loadgenerator
spec:
  selector:
    matchLabels:
      app: loadgenerator
  replicas: 1
  template:
    metadata:
      labels:
        app: loadgenerator
    spec:
      terminationGracePeriodSeconds: 5
      restartPolicy: Always
      containers:
      - name: main
        image: gcr.io/google-samples/istio/loadgen:v0.0.1
        imagePullPolicy: Always
        env:
        - name: SERVER_ADDR
          value: "http://hellosvc:80/"
        - name: REQUESTS_PER_SECOND
          value: "10"
        resources:
          requests:
            cpu: 300m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 512Mi

Time loadgen ùn accetta micca richieste entrate, per u campu activité indicatu ClusterIP. Stu tipu furnisce un indirizzu IP persistente chì i servizii in u cluster ponu utilizà, ma questu indirizzu IP ùn hè micca espostu à i clienti esterni.

apiVersion: v1
kind: Service
metadata:
  name: loadgensvc
spec:
  type: ClusterIP
  selector:
    app: loadgenerator
  ports:
  - name: http
    port: 80
    targetPort: 8080

Implementazione di Containers in GKE

1) Andate à u repertoriu induve si trova l'esempiu servore:

cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/server/

2) Apertura server.yaml in un editore di testu.
3) Sustituisce u nome in u campu imaghjini à u nome di a vostra imagine Docker.

image: gcr.io/PROJECT_ID/preparing-istio/helloserver:v0.0.1

Sustituisce PROJECT_ID à u vostru ID di prughjettu GCP.
4) Salvà è chjude server.yaml.
5) Implementa u schedariu YAML à Kubernetes:

kubectl apply -f server.yaml

Dopu à u cumpletu successu, u cumandimu pruduce u codice seguente:

deployment.apps/helloserver created
service/hellosvc created

6) Andà à u cartulare induve loadgen:

cd ../loadgen

7) Apertura loadgen.yaml in un editore di testu.
8) Sustituisce u nome in u campu imaghjini à u nome di a vostra imagine Docker.

image: gcr.io/PROJECT_ID/preparing-istio/loadgenv0.0.1

Sustituisce PROJECT_ID à u vostru ID di prughjettu GCP.
9) Salvà è chjude loadgen.yaml, chjude l'editore di testu.
10) Implementa u schedariu YAML à Kubernetes:

kubectl apply -f loadgen.yaml

Dopu à u cumpletu successu, u cumandimu pruduce u codice seguente:

deployment.apps/loadgenerator created
service/loadgensvc created

11) Verificate u statutu di i pods:

kubectl get pods

U cumandimu mostra u statu:

NAME                             READY   STATUS    RESTARTS   AGE
helloserver-69b9576d96-mwtcj     1/1     Running   0          58s
loadgenerator-774dbc46fb-gpbrz   1/1     Running   0          57s

12) Estrae i logs di l'applicazione da u pod loadgen. Sustituisce POD_ID à l'identificatore da a risposta precedente.

kubectl logs loadgenerator-POD_ID

13) Ottene indirizzi IP esterni ciao vc:

kubectl get service

A risposta di u cumandimu pare cusì cusì:

NAME         TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
hellosvc     LoadBalancer   10.81.15.158   192.0.2.1       80:31127/TCP   33m
kubernetes   ClusterIP      10.81.0.1      <none>          443/TCP        93m
loadgensvc   ClusterIP      10.81.15.155   <none>          80/TCP         4m52s

14) Mandate una dumanda à ciao vc: rimpiazzà EXTERNAL_IP à l'indirizzu IP esternu ciao vc.

curl http://EXTERNAL_IP

Prendemu Istio

Avete digià una applicazione implementata à GKE. loadgen pò aduprà Kubernetes DNS (ciao: 80) per mandà richieste à servoreè pudete mandà richieste à servore per indirizzu IP esternu. Ancu se Kubernetes hà parechje caratteristiche, ci hè qualchì infurmazione chì manca nantu à i servizii:

  • Cumu interagisce i servizii? Chì sò e relazioni trà i servizii ? Cumu si passa u trafficu trà i servizii? Sapete chì loadgen manda richieste à servore, ma imaginate chì ùn sapete nunda di l'applicazione. Per risponde à queste dumande, fighjemu a lista di pods in esecuzione in GKE.
  • Metriche. Quantu tempu servore risponde à una dumanda in entrata? Quante richieste per seconda sò ricevute da u servitore? Dà missaghji d'errore?
  • Informazioni di sicurezza. U trafficu trà loadgen и servore passa solu HTTP o da mTLS?

Istio risponde à tutte queste dumande. Per fà questu, Istio mette un proxy sidecar imbasciata in ogni poda. U proxy Envoy intercepta tuttu u trafficu entrante è in uscita à i cuntenituri di l'applicazioni. Significa chì servore и loadgen riceve via proxy sidecar Envoy, è tuttu u trafficu da loadgen к servore passa per u proxy Envoy.

I cunnessione trà i proxy Envoy formanu una rete di serviziu. L'architettura di maglia di serviziu furnisce una strata di cuntrollu nantu à Kubernetes.

Preparazione di una dumanda per Istio

Siccomu i proxy Envoy funzionanu in i so cuntenituri, Istio pò esse installatu nantu à un cluster GKE senza quasi cambiamenti à u codice di l'applicazione. Ma avete fattu qualchì travagliu per preparà a vostra applicazione per esse gestita da Istio:

  • Servizi per tutti i container. À i dispiegamenti servore и loadgen ligatu à u serviziu Kubernetes. Ancu loadgen, chì ùn riceve micca richieste entrate, ci hè un serviziu.
  • I porti in i servizii devenu avè nomi. Ancu se i porti di serviziu ponu esse lasciati senza nome in GKE, Istio richiede di specificà nome di u portu in cunfurmità cù u so protocolu. In u schedariu YAML u portu per servore hè chjamatu situ httpperchè u servitore usa u protocolu HTTP... Se sirvizziu usatu gRPC, tu avissi a nomu lu portu grpc.
  • I dispiegamenti sò marcati. Dunque, pudete aduprà e funzioni di gestione di u trafficu d'Istio, cum'è splitting trafficu trà versioni di u stessu serviziu.

Installazione

Ci hè duie manere di stallà Istio. Can attivate Istio nantu à l'estensione GKE o installate a versione open source di Istio nantu à u cluster. Cù Istio nantu à GKE, pudete gestisce facilmente l'installazione è l'aghjurnamenti Istio in tuttu u ciclu di vita di u cluster GKE. Se vulete l'ultima versione di Istio o più cuntrollu nantu à a cunfigurazione di u vostru pannellu di cuntrollu Istio, installate a versione open source invece di l'estensione Istio in GKE. Per decide di l'approcciu, leghjite l'articulu Aghju bisognu di Istio nantu à GKE?.

Selezziunate una opzione, rivedete a guida adattata, è seguite l'istruzzioni per installà Istio in u vostru cluster. Se vulete utilizà Istio cù a vostra applicazione appena implementata, permette l'implementazione di sidecar per u spaziu di nomi automaticamente.

Pulizia

Per evità di esse caricatu à u vostru contu Google Cloud Platform per e risorse chì avete utilizatu in stu tutoriale, sguassate u cluster di cuntainer una volta installatu Istio è ghjucatu cù l'applicazione di mostra. Questu eliminerà tutte e risorse di cluster, cum'è istanze di compute, dischi è risorse di rete.

Chi c'è vicinu?

Source: www.habr.com

Add a comment