Questa pagina descrive come eseguire il deployment di nuovi servizi e nuove revisioni in Knative Serving.
Prima di iniziare
Per utilizzare Google Cloud CLI, devi prima configurare e configurare gli strumenti a riga di comando.
Connessione ai cluster GKE
Prima di poter eseguire il deployment dei servizi in Knative Serving, devi accedere per connetterti al tuo cluster GKE.
Per saperne di più sulla connessione ai cluster GKE, incluse opzioni aggiuntive, consulta:
Autorizzazioni richieste per il deployment
Devi disporre delle autorizzazioni per creare, aggiornare ed eliminare apiGroup serving.knative.dev
e kind Service
e, inoltre, devi disporre di UNO dei seguenti ruoli Identity and Access Management:
Immagini di cui puoi eseguire il deployment
Non esiste un limite di dimensioni applicabile all'immagine container di cui puoi eseguire il deployment.
Puoi utilizzare i container di qualsiasi registro container, ad esempio Docker Hub. Per informazioni sul deployment di immagini private da registri diversi da Container Registry o Artifact Registry, vedi Deployment di immagini container private da altri container registry.
Deployment di un nuovo servizio
Puoi specificare un'immagine container con un tag
(ad esempio gcr.io/my-project/my-image:latest
) o con un digest esatto
(ad esempio gcr.io/my-project/my-image@sha256:41f34ab970ee...
).
Eseguendo il deployment in un servizio per la prima volta viene creata la prima revisione. Tieni presente che le revisioni sono immutabili. Se esegui il deployment dal tag di un'immagine container, verrà risolto in un digest e la revisione gestirà sempre questo particolare digest.
Puoi eseguire il deployment di un container utilizzando la console Google Cloud , Google Cloud CLI o da un file di configurazione YAML.
Fai clic sulla scheda per visualizzare le istruzioni relative all'utilizzo dello strumento che preferisci.
Configurazione della posizione gcloud
predefinita
Se in precedenza hai configurato una località nella
configurazione default
di Google Cloud CLI, i comandi gcloud
utilizzano questi valori per impostazione predefinita, tra cui:
compute/region
compute/zone
run/cluster
run/cluster_location
run/platform
run/region
Esegui il comando di configurazione
gcloud
per visualizzare le impostazioni per la configurazione default
:
gcloud config configurations describe default
Console
Per eseguire il deployment di un'immagine container:
Vai a Knative Serving nella console Google Cloud :
Fai clic su Crea servizio per visualizzare la pagina Crea servizio.
Nel modulo:
Dal menu a discesa, seleziona uno dei cluster GKE disponibili per il tuo servizio.
Inserisci il nome del servizio che preferisci. I nomi dei servizi devono essere univoci per regione e progetto o per cluster. Il nome di un servizio non può essere modificato in un secondo momento.
In Connettività:
- Seleziona Interno se vuoi limitare l'accesso solo ad altri servizi Knative o servizi nel tuo cluster che utilizzano Istio.
- Seleziona Esterno per consentire l'accesso esterno al tuo servizio.
Tieni presente che puoi modificare l'opzione di connettività in qualsiasi momento, come descritto in Modificare le impostazioni di connettività del servizio.
Fai clic su Avanti per passare alla seconda pagina del modulo di creazione del servizio.
Nel modulo:
Nella casella di testo URL immagine container, fornisci l'URL di un'immagine di un registro supportato, ad esempio:
us-docker.pkg.dev/cloudrun/container/hello:latest
(Facoltativo) Fai clic su Mostra impostazioni avanzate e sulle schede successive per impostare:
Fai clic su Crea per eseguire il deployment dell'immagine in Knative Serving e attendi il completamento del deployment.
Hai appena eseguito il deployment di un servizio in un cluster in cui è abilitato Knative serving.
Riga di comando
Per eseguire il deployment di un'immagine container:
Esegui il comando
gcloud run deploy
:gcloud run deploy SERVICE --image IMAGE_URL
Sostituisci SERVICE con il nome del servizio di cui vuoi eseguire il deployment. Se il servizio specificato non esiste, ne viene creato uno nuovo.
Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio
gcr.io/cloudrun/hello
.Opzioni di deployment aggiuntive:
Per eseguire il deployment in uno spazio dei nomi diverso da default, devi specificare lo spazio dei nomi utilizzando il parametro
--namespace
.Per eseguire il deployment in una posizione diversa dalla configurazione predefinita, devi specificare
name
elocation
del cluster con i parametri--cluster
e--cluster-location
:gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
Puoi impostare le opzioni di connettività con il flag
--connectivity
come descritto in Modificare le impostazioni di connettività del servizio per specificare l'accesso interno o esterno.Per Knative serving su VMware, devi includere il parametro
--kubeconfig
e specificare il file di configurazione:gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
Attendi il completamento del deployment. Al completamento dell'operazione, viene visualizzato un messaggio di operazione riuscita insieme all'URL del servizio di cui è stato eseguito il deployment.
YAML
Puoi archiviare la specifica del servizio in un file YAML
e poi
deployarlo utilizzando Google Cloud CLI.
Crea un nuovo file
service.yaml
con questi contenuti:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
Sostituisci
- SERVICE con il nome del servizio Knative serving
- IMAGE con l'URL dell'immagine container.
Puoi anche specificare una configurazione più dettagliata, ad esempio variabili di ambiente o limiti di memoria.
Esegui il deployment del nuovo servizio utilizzando questo comando:
gcloud run services replace service.yaml
Deployment di una nuova revisione di un servizio esistente
Puoi eseguire il deployment di una nuova revisione utilizzando la console Google Cloud , la riga di comando gcloud
o un file di configurazione YAML.
Tieni presente che la modifica di qualsiasi impostazione di configurazione comporta la creazione di una nuova revisione, anche se non viene apportata alcuna modifica all'immagine container. Ogni revisione creata è immutabile.
Fai clic sulla scheda per visualizzare le istruzioni relative all'utilizzo dello strumento che preferisci.
Console
Per eseguire il deployment di una nuova revisione di un servizio esistente:
Vai a Knative Serving nella console Google Cloud :
Individua il servizio che vuoi aggiornare nell'elenco dei servizi e fai clic per aprire i relativi dettagli.
Fai clic su MODIFICA ED ESEGUI IL DEPLOYMENT DI UNA NUOVA REVISIONE. Viene visualizzato il modulo di deployment della revisione:
Se necessario, fornisci l'URL della nuova immagine del container di cui vuoi eseguire il deployment.
(Facoltativo) Imposta:
Per inviare tutto il traffico alla nuova revisione, seleziona la casella di controllo Pubblica questa revisione immediatamente. Per eseguire il deployment graduale di una nuova revisione, deseleziona la casella di controllo: in questo modo, nessun traffico viene inviato alla nuova revisione. Segui le istruzioni per i deployment graduali dopo il deployment.
Fai clic su ESEGUI IL DEPLOYMENT e attendi il completamento del deployment.
Riga di comando
Per eseguire il deployment di un'immagine container:
Esegui il comando
gcloud run services update
:gcloud run services update SERVICE --image IMAGE_URL
- A ogni revisione viene assegnato automaticamente un suffisso di revisione. Se vuoi specificare il tuo suffisso di revisione, aggiungi il parametro --revision-suffix.
Sostituisci SERVICE con il nome del servizio di cui vuoi eseguire il deployment. Se il servizio specificato non esiste, ne viene creato uno nuovo.
Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio
gcr.io/cloudrun/hello
.Opzioni di deployment aggiuntive:
Per eseguire il deployment in uno spazio dei nomi diverso da default, devi specificare lo spazio dei nomi utilizzando il parametro
--namespace
.Per eseguire il deployment in una posizione diversa dalla configurazione predefinita, devi specificare
name
elocation
del cluster con i parametri--cluster
e--cluster-location
:gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
Puoi impostare le opzioni di connettività con il flag
--connectivity
come descritto in Modificare le impostazioni di connettività del servizio per specificare l'accesso interno o esterno.Per Knative serving su VMware, devi includere il parametro
--kubeconfig
e specificare il file di configurazione:gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE
Attendi il completamento del deployment. Al completamento dell'operazione, viene visualizzato un messaggio di operazione riuscita insieme all'URL del servizio di cui è stato eseguito il deployment.
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 le impostazioni di revisione in qualsiasi attributo secondario di
spec.template
.Esegui il deployment della nuova revisione:
gcloud run services replace service.yaml
Deployment di immagini da altri Google Cloud progetti
Puoi eseguire il deployment di immagini container da altri progetti Google Cloud se imposti le autorizzazioni IAM corrette:
Nella console Google Cloud , apri il progetto per il tuo servizio Knative.
Ottieni i dati del account di servizio:
Per i cluster su Google Cloud, copia l'indirizzo email del service account predefinito di Compute Engine. Ha il suffisso @developer.gserviceaccount.com
Per gli altri cluster, crea un service account e scarica le credenziali. Google Cloud Aggiungi queste credenziali come
imagePullSecrets
predefinito del service account Kubernetes.
Apri il progetto proprietario del registro dei container che vuoi utilizzare.
Fai clic su Aggiungi per aggiungere una nuova entità.
Nella casella di testo Nuove entità, incolla l'email del account di servizio che hai copiato in precedenza.
Nell'elenco a discesa Seleziona un ruolo, seleziona il ruolo da leggere dal registro:
- Artifact Registry, inclusi i repository gcr.io in Artifact Registry: Artifact Registry -> Artifact Registry Reader
- Container Registry: Storage -> Storage Object Viewer
Esegui il deployment dell'immagine container nel progetto che contiene il servizio Knative serving.
Per una maggiore sicurezza, puoi limitare l'accesso alla concessione:
- Artifact Registry: concedi il ruolo nel repository che archivia le tue immagini container.
- Container Registry: concedi il ruolo nel bucket Cloud Storage che archivia le immagini container.
Deployment di immagini container private da altri registri container
Questa sezione descrive l'impostazione delle autorizzazioni corrette per eseguire il deployment di immagini container da un registro privato arbitrario a Knative serving. Un Container Registry privato richiede le credenziali per accedere all'immagine del container. Tieni presente che non devi seguire questi passaggi per eseguire il deployment di immagini container private da Container Registry (ritirato) o Artifact Registry nello stesso progetto del cluster.
Per poter eseguire il deployment di un'immagine container privata, devi creare un
secret Kubernetes di tipo imagePullSecret
e associarlo a unaccount di serviziot:
Crea un secret
imagePullSecret
denominatocontainer-registry
:kubectl create secret docker-registry container-registry \ --docker-server=DOCKER_REGISTRY_SERVER \ --docker-email=REGISTRY_EMAIL \ --docker-username=REGISTRY_USER \ --docker-password=REGISTRY_PASSWORD
- Sostituisci DOCKER_REGISTRY_SERVER con l'FQDN del tuo registro privato (ad es. https://gcr.io/ per Container Registry o https://hub.docker.com per DockerHub).
- Sostituisci REGISTRY_EMAIL con la tua email.
Sostituisci REGISTRY_USER con il nome utente del tuo registro dei container.
Se utilizzi Container Registry o Artifact Registry e vuoi archiviare ed estrarre credenziali a lunga durata anziché passare token di accesso di breve durata, consulta Metodi di autenticazione: file chiave JSON.
Sostituisci REGISTRY_PASSWORD con la password del registro dei container.
Apri il account di servizio predefinito:
kubectl edit serviceaccount default --namespace default
Ogni spazio dei nomi nel tuo cluster Kubernetes ha un account di servizio predefinito chiamato
default
. Questo account di servizio predefinito viene utilizzato per eseguire il pull dell'immagine container, a meno che non sia specificato diversamente durante il deployment del servizio Knative Serving.Aggiungi il segreto
imagePullSecret
appena creato al tuo service account predefinito:imagePullSecrets: - name: container-registry
Il tuo account di servizio dovrebbe ora avere questo aspetto:
apiVersion: v1 kind: ServiceAccount metadata: name: default namespace: default ... secrets: - name: default-token-zd84v # The secret we just created: imagePullSecrets: - name: container-registry
Ora, tutti i nuovi pod creati nello spazio dei nomi default
corrente avranno il
secret imagePullSecret
definito.
Deployment con l'inserimento automatico di sidecar abilitato
Per eseguire il deployment del servizio con l'inserimento del sidecar Istio abilitato, consulta la sezione Inserimento automatico del sidecar abilitato nella documentazione di Cloud Service Mesh.
Deployment di servizi su una rete interna
Per eseguire il deployment dei servizi su una rete interna, devi configurare una rete interna privata.
Passaggi successivi
Dopo aver eseguito il deployment di un nuovo servizio, puoi:
- Implementazioni graduali, rollback delle revisioni, migrazione del traffico
- Visualizza i log di servizio
- Monitorare il rendimento dei servizi
- Configura i tuoi servizi. Ad esempio, imposta limiti di memoria, imposta variabili di ambiente o modifica la concorrenza.
- Gestisci:
Puoi automatizzare le build e i deployment dei tuoi servizi Knative Serving utilizzando i trigger di Cloud Build: