Knative Serving ti consente di specificare quali revisioni devono ricevere traffico e le percentuali di traffico ricevute da una revisione. Questa funzionalità consente di eseguire il rollback a una revisione precedente, implementare gradualmente una revisione (nota anche come deployment blu/verde) e dividere il traffico tra più revisioni. Questa pagina descrive come utilizzare questa funzionalità per gestire il traffico verso le revisioni di Knative Serving.
Eseguire il rollback a una revisione precedente
Per eseguire il rollback a una revisione precedente:
Console
Vai a Knative Serving nella console Google Cloud :
Individua il servizio nell'elenco dei servizi e fai clic su di esso.
Fai clic sulla scheda Revisioni per visualizzare l'elenco delle revisioni correnti per quel servizio.
Nell'elenco delle revisioni, fai clic sull'icona con tre puntini a destra della revisione che stai ripristinando:
Fai clic su Gestisci traffico per visualizzare il modulo di gestione del traffico:
- Seleziona la revisione precedente a cui vuoi eseguire il rollback nell'elenco a discesa.
- Imposta la percentuale di traffico della revisione precedente su 100.
- Imposta la percentuale della revisione attualmente pubblicata su 0.
- Fai clic su Salva.
Riga di comando
Utilizza questo comando:
gcloud run services update-traffic SERVICE --to-revisions REVISION=100
- Sostituisci SERVICE con il nome del servizio.
- Sostituisci REVISION con il nome della revisione a cui stai eseguendo il rollback.
YAML
Puoi scaricare la configurazione di un servizio esistente in un file YAML con il comando gcloud run services describe
utilizzando il flag --format=export
.
Puoi quindi modificare il file YAML e implementare
le modifiche con il comando gcloud run services replace
.
Devi assicurarti di modificare solo gli attributi specificati.
Scarica la configurazione del servizio in un file denominato
service.yaml
nello spazio di lavoro locale:gcloud run services describe SERVICE --format export > service.yaml
Sostituisci SERVICE con il nome del tuo servizio Knative.
Nel file locale, aggiorna l'attributo
traffic
che si trova inspec
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION percent: 100
Sostituisci
- REVISION con il nome della revisione a cui stai eseguendo il rollback.
Sostituisci il servizio con la sua nuova configurazione utilizzando il seguente comando:
gcloud run services replace service.yaml
Implementazione graduale di una revisione
Per implementare gradualmente una nuova revisione (deployment blu/verde):
Console
Vai a Knative Serving nella console Google Cloud :
Individua il servizio nell'elenco dei servizi e fai clic su di esso.
Fai clic su Esegui il deployment di una nuova revisione.
Compila il modulo di deployment in base alle esigenze, ma assicurati che la casella di controllo con l'etichetta Pubblica questa revisione immediatamente NON sia selezionata.
Fai clic su Esegui il deployment.
Fai clic su Gestisci traffico.
La nuova revisione è elencata, ma con una percentuale impostata su 0: attualmente non gestisce alcun traffico. Nel modulo:
- Imposta la percentuale desiderata, ad esempio 5. Tieni presente che la percentuale della versione attualmente pubblicata viene ridotta automaticamente dello stesso importo.
- Fai clic su Salva.
- Ripeti questi passaggi per Gestisci traffico, ma con percentuali modificate, aumentando la percentuale in base alle necessità per la nuova revisione. Non devi eseguire nuovamente il deployment per modificare le percentuali di traffico.
Riga di comando
Per eseguire il deployment della revisione che vuoi implementare gradualmente, impostandola inizialmente in modo che non riceva traffico, utilizza il comando
update
con il parametro--no-traffic
:gcloud run deploy --image IMAGE --no-traffic
Sostituisci IMAGE con l'immagine che stai eseguendo il deployment.
Specifica la percentuale di traffico che vuoi che gestisca la nuova revisione, ad esempio il 5%:
gcloud run services update-traffic SERVICE --to-revisions REVISION=PERCENTAGE
- Sostituisci SERVICE con il nome del servizio.
- Sostituisci REVISION con il nome della revisione che stai
implementando gradualmente. Per specificare l'ultima revisione, puoi utilizzare
LATEST
, ad esempioLATEST=5
. - Sostituisci PERCENTAGE con la percentuale di traffico che vuoi inviare alla nuova revisione, ad esempio
5
per inviare il 5% del traffico.
Una volta che il rendimento della revisione è soddisfacente, ripeti il passaggio
update-traffic
precedente, ma aumenta il valore percentuale come preferisci.
YAML
Puoi scaricare la configurazione di un servizio esistente in un file YAML con il comando gcloud run services describe
utilizzando il flag --format=export
.
Puoi quindi modificare il file YAML e implementare
le modifiche con il comando gcloud run services replace
.
Devi assicurarti di modificare solo gli attributi specificati.
Scarica la configurazione del servizio in un file denominato
service.yaml
nello spazio di lavoro locale:gcloud run services describe SERVICE --format export > service.yaml
Sostituisci SERVICE con il nome del tuo servizio Knative.
Apporta le modifiche di configurazione desiderate al servizio come descritto nelle varie pagine di configurazione e specifica il nome della revisione che vuoi per la nuova revisione:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE template: metadata: annotations: ... name: REVISION-NAME ``` Replace
- REVISION-NAME con il nome che vuoi assegnare alla nuova revisione.
Sotto l'attributo
spec
, individua e aggiorna l'attributotraffic
in modo che la nuova revisione gestisca solo una piccola quantità di traffico:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-NEW percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
Tieni presente che la somma delle percentuali deve essere pari a 100. Sostituisci
- REVISION-NEW con il nome della revisione che stai implementando gradualmente.
- REVISION-FORMER con il nome della revisione attualmente in pubblicazione.
- PERCENT-NEW con la percentuale di traffico che vuoi inviare alla nuova revisione,
ad esempio utilizza
10
per inviare il 10% del traffico a quella revisione. - PERCENT-FORMER con la percentuale di traffico che vuoi inviare alla revisione precedente
Suddivisione del traffico tra più revisioni
Per suddividere il traffico tra due o più revisioni:
Console
Vai a Knative Serving nella console Google Cloud :
Individua il servizio nell'elenco dei servizi e fai clic su di esso.
Fai clic su Gestisci traffico.
Viene visualizzata la nuova revisione attualmente in pubblicazione. Nel modulo:
- Imposta la percentuale di revisione attualmente pubblicata sulla suddivisione desiderata.
- Seleziona una delle revisioni precedenti utilizzando l'elenco a discesa e impostala sulla suddivisione percentuale desiderata.
- Per suddividere il traffico tra più revisioni, fai clic su Aggiungi revisione, seleziona la revisione che ti interessa e imposta la percentuale di suddivisione desiderata.
- Fai clic su Salva.
Riga di comando
Specifica le revisioni e la percentuale di traffico per ciascuna revisione in un elenco delimitato da virgole:
gcloud run services update-traffic SERVICE --to-revisions LIST
Sostituisci:
- SERVICE con il nome del servizio.
- LIST con un elenco delimitato da virgole delle revisioni a cui vuoi
indirizzare il traffico e la percentuale corrispondente di traffico,
per un totale del 100%:
REVISION1=PERCENTAGE1,REVISION2=PERCENTAGE2,REVISIONn=PERCENTAGEn
ad esempio,hello2-00005-red=25,hello2-00001-bod=25,hello2-00002-nan=50
.
YAML
Puoi scaricare la configurazione di un servizio esistente in un file YAML con il comando gcloud run services describe
utilizzando il flag --format=export
.
Puoi quindi modificare il file YAML e implementare
le modifiche con il comando gcloud run services replace
.
Devi assicurarti di modificare solo gli attributi specificati.
Scarica la configurazione del servizio in un file denominato
service.yaml
nello spazio di lavoro locale:gcloud run services describe SERVICE --format export > service.yaml
Sostituisci SERVICE con il nome del tuo servizio Knative.
Nel file locale, aggiorna l'attributo
traffic
in modo che la nuova revisione pubblichi solo una piccola quantità di traffico:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION-A percent: PERCENT-A - revisionName: REVISION-B percent: PERCENT-B - revisionName: REVISION-C percent: PERCENT-C
Tieni presente che la somma delle percentuali deve essere pari a 100. Sostituisci
- REVISION-A, REVISION-B, REVISION-C con le revisioni a cui stai assegnando il traffico.
- PERCENT-A, PERCENT-B, PERCENT-C con la percentuale per la revisione corrispondente.
Sostituisci il servizio con la sua nuova configurazione utilizzando il seguente comando:
gcloud run services replace service.yaml
Invio di tutto il traffico all'ultima revisione
Quando esegui il deployment di una nuova revisione, puoi fare in modo che questa e tutte le revisioni future servano il 100% del traffico il prima possibile, sostituendo qualsiasi suddivisione del traffico stabilita:
Console
Vai a Knative Serving nella console Google Cloud :
Individua il servizio nell'elenco dei servizi e fai clic su di esso.
Fai clic su Esegui il deployment di una nuova revisione.
Compila il modulo di implementazione in base alle tue esigenze, assicurandoti di selezionare la casella di controllo con l'etichetta Pubblica questa revisione immediatamente. In questo modo viene eseguito l'override di qualsiasi suddivisione del traffico esistente e la nuova revisione gestisce il 100% del traffico.
Fai clic su Esegui il deployment.
Riga di comando
Per inviare tutto il traffico alla revisione di cui è stato eseguito il deployment più recente:
gcloud run services update-traffic SERVICE --to-latest
Sostituisci SERVICE con il nome del servizio.
YAML
Puoi scaricare la configurazione di un servizio esistente in un file YAML con il comando gcloud run services describe
utilizzando il flag --format=export
.
Puoi quindi modificare il file YAML e implementare
le modifiche con il comando gcloud run services replace
.
Devi assicurarti di modificare solo gli attributi specificati.
Scarica la configurazione del servizio in un file denominato
service.yaml
nello spazio di lavoro locale:gcloud run services describe SERVICE --format export > service.yaml
Sostituisci SERVICE con il nome del tuo servizio Knative.
Nel file locale, aggiorna l'attributo
traffic
che si trova inspec
:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - latestRevision: true percent: 100
Sostituisci il servizio con la sua nuova configurazione utilizzando il seguente comando:
gcloud run services replace service.yaml
Utilizzare i tag per test, migrazione del traffico e rollback
Dopo aver eseguito il deployment di un servizio, puoi creare una nuova revisione e assegnare un tag che ti consenta di accedere alla revisione a un URL specifico senza attivare il traffico. Puoi quindi utilizzare questo tag per eseguire gradualmente la migrazione del traffico alla revisione taggata e per eseguire il rollback di una revisione taggata.
Un caso d'uso comune per questa funzionalità è quello di utilizzarla per testare e valutare una nuova revisione del servizio prima che gestisca il traffico, in questa sequenza tipica:
- Esegui test di integrazione su un container durante lo sviluppo.
- Esegui il deployment del container in un progetto Google Cloud che utilizzi solo per lo staging, senza pubblicare traffico, ed esegui il test su una revisione taggata.
- Esegui il deployment in produzione, senza gestire il traffico, e testa rispetto a una revisione taggata in produzione.
- Esegui la migrazione del traffico alla revisione taggata.
Deployment di una nuova revisione con tag
Per eseguire il deployment di una nuova revisione di un servizio esistente in produzione:
gcloud run deploy myservice --image IMAGE_URL --no-traffic --tag TAG_NAME
Sostituisci:
- IMAGE_URL con l'URL dell'immagine
- TAG_NAME con il nome del tag in minuscolo
Il tag ti consente di testare direttamente la nuova revisione a un URL specifico, senza
attivare il traffico. L'URL di test inizia con il
nome del tag che hai fornito:
http://{TAG_NAME}---{SERVICE_NAME}.{NAMESPACE}.kuberun.{EXTERNAL_IP}.nip.io
Ad esempio, se hai utilizzato il nome del tag green
sul
servizio myservice
, devi testare la revisione con tag all'URL:
https://green---myservice.default.kuberun.11.111.11.111.nip.io
Migrazione del traffico a una revisione taggata
Dopo aver verificato che la nuova revisione funzioni correttamente, puoi iniziare a eseguire la migrazione del traffico utilizzando la console Google Cloud , la riga di comando gcloud o un file YAML:
Console
Vai a Knative Serving nella console Google Cloud :
Individua il servizio nell'elenco dei servizi e fai clic su di esso:
Seleziona la revisione taggata a cui vuoi inviare il traffico:
Fai clic su Gestisci traffico.
Individua il nome della revisione taggata: è elencato, ma con una percentuale impostata su 0: al momento non gestisce traffico. Nel modulo Gestisci traffico*:
- Imposta la percentuale desiderata, ad esempio 5. Tieni presente che la percentuale della versione attualmente pubblicata viene ridotta automaticamente dello stesso importo.
- Fai clic su Salva.
- Nell'arco di ore o giorni, a seconda delle necessità, ripeti questi passaggi della sezione Gestisci il traffico, ma con percentuali diverse, aumentando la percentuale in base alle necessità per la revisione taggata. Non devi eseguire nuovamente il deployment per modificare le percentuali di traffico.
Riga di comando
Per eseguire la migrazione del traffico a un tag di revisione specifico:
gcloud run deploy update-traffic myservice --tag TAG_NAME=TRAFFIC_PERCENT
Sostituisci
- TAG_NAME con il nome del tag a cui stai eseguendo la migrazione del traffico
- TRAFFIC_PERCENT con la percentuale di traffico che vuoi
che la revisione taggata pubblichi, ad esempio
1
.
YAML
Puoi scaricare la configurazione di un servizio esistente in un file YAML con il comando gcloud run services describe
utilizzando il flag --format=export
.
Puoi quindi modificare il file YAML e implementare
le modifiche con il comando gcloud run services replace
.
Devi assicurarti di modificare solo gli attributi specificati.
Scarica la configurazione del servizio in un file denominato
service.yaml
nello spazio di lavoro locale:gcloud run services describe SERVICE --format export > service.yaml
Sostituisci SERVICE con il nome del tuo servizio Knative.
Apporta le modifiche alla configurazione del servizio che preferisci, come descritto nelle varie pagine di configurazione.
Sotto l'attributo
spec
, individua e aggiorna l'attributotraffic
per la revisione taggata in modo che la revisione taggata generi solo una piccola quantità di traffico:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: ... traffic: - revisionName: REVISION tag: TAG_NAME percent: PERCENT-NEW - revisionName: REVISION-FORMER percent: PERCENT-FORMER
Tieni presente che la somma delle percentuali deve essere pari a 100. Sostituisci
- REVISION con il nome della revisione taggata.
- TAG_NAME con il nome del tag che stai implementando gradualmente.
- PERCENT-NEW con la percentuale di traffico che vuoi inviare alla revisione taggata, ad esempio utilizza
10
per inviare il 10% del traffico a quella revisione. - REVISION-FORMER con il nome della revisione attualmente in pubblicazione.
- PERCENT-FORMER con la percentuale di traffico che vuoi inviare alla revisione precedente
Sostituisci il servizio con la sua nuova configurazione utilizzando il seguente comando:
gcloud run services replace service.yaml