Migrazione di un servizio di pubblicazione Knative a Cloud Run

Utilizza questa guida per eseguire la migrazione dei tuoi carichi di lavoro in Cloud Run. In generale, la migrazione dei carichi di lavoro richiede di eseguire il porting di qualsiasi funzionalità basata su Kubernetes e poi di eseguire nuovamente il deployment di ciascuno dei servizi esistenti in Cloud Run.

Vantaggi principali della migrazione a Cloud Run:

  • Prodotto serverless completamente gestito che implementa la specifica dell'API Knative Serving e rispetta il contratto del contenitore.

  • L'API Admin v1 di Cloud Run è progettata per massimizzare la portabilità con il servizio Knative.

  • L'esperienza utente è simile per Cloud Run e il servizio Knative:

    • Il gruppo di comandi gcloud run viene utilizzato in entrambi i prodotti.
    • Layout e comportamento simili dell'interfaccia utente nella console Google Cloud .

Prima di iniziare

Le seguenti funzionalità di Google Kubernetes Engine non sono supportate in Cloud Run, tra cui:

Considerazioni sulla migrazione

Devi esaminare e comprendere le seguenti differenze tra i prodotti per assicurarti di poter eseguire il porting di tutte le dipendenze e i requisiti.

Secret

In Cloud Run, puoi scegliere di montare i secret come variabili di ambiente o volumi, ma i secret con informazioni sensibili devono essere archiviati in Secret Manager.

Differenze importanti tra i secret in Secret Manager e i secret di Kubernetes:

Funzionalità Secret di Secret Manager Secret Kubernetes
Caratteri consentiti nei nomi [a-zA-Z0-9_-]{1,255} [a-z0-9-.]{1,253}
Controllo delle versioni I secret sono sottoposti a controllo della versione Nessun supporto
Secret Payload Singolo []byte Mappa: <string, string>

Scopri come utilizzare Secret Manager per creare secret con versione per le chiavi segrete dei tuoi servizi Knative serving.

Networking

Utilizza le seguenti informazioni per eseguire il porting della configurazione di rete esistente su Cloud Run.

Endpoint di servizio
Gli endpoint Kubernetes dei tuoi servizi di pubblicazione Knative non sono supportati in Cloud Run. Scopri di più sugli endpoint univoci in Cloud Run.
Mappature di domini
L'API DomainMapping di Cloud Run è compatibile con il servizio Knative. Tuttavia, Cloud Run offre la mappatura dei domini in un sottoinsieme delle località Cloud Run disponibili. Un'alternativa consigliata è sfruttare il bilanciatore del carico HTTP(S) globale per i tuoi domini personalizzati.
Connettività VPC
I servizi Cloud Run si trovano all'esterno del tuo VPC. Per comunicare con le risorse all'interno di una VPC, devi utilizzare il connettore di accesso VPC serverless.
Controlli Ingress
Se il servizio di pubblicazione Knative è configurato per una rete interna privata e utilizza un bilanciatore del carico interno (ILB), puoi configurare il servizio Cloud Run su Ingress = Internal. La configurazione dei servizi su internal limita l'accesso all'interno del VPC o ad altri servizi Cloud Run. Scopri di più sulla comunicazione tra servizi.

Eseguire la migrazione di un servizio

Per eseguire la migrazione di un servizio, devi esportare il servizio Knative serving, modificare il file YAML esportato e poi eseguire il deployment del servizio riconfigurato su Cloud Run.

  1. Esporta il servizio di pubblicazione Knative in un file YAML locale eseguendo il seguente comando:

    gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yaml
    

    Sostituisci:

    • SERVICE con il nome del servizio Knative serving.
    • NAMESPACE con lo spazio dei nomi in cui è in esecuzione il servizio.
    • CLUSTER con il nome del cluster in cui è in esecuzione il servizio.
    • FILENAME con un nome file univoco di tua scelta.
  2. Modifica il file FILENAME.yaml esportato per Cloud Run:

    • Devi cercare e sostituire lo spazio dei nomi Kubernetes con l'ID del tuo progettoGoogle Cloud . Ad esempio, devi sostituire namespace:default con namespace:my-unique-id.
    • Devi aggiornare tutte le configurazioni per le funzionalità non supportate.
    • Devi eliminare uno qualsiasi dei seguenti attributi e dei relativi valori:

      • metadata.annotations.kubectl.kubernetes.io/last-applied-configuration
      • metadata.managedFields
      • spec.template.spec.containers.readinessProbes
      • spec.template.spec.enableServiceLinks

      Ad esempio, potrebbe essere necessario rimuovere la seguente configurazione dagli attributi spec: > template: > spec: > containers::

      ...
       readinessProbe:
         successThreshold: 1
         tcpSocket: {}
      ...
      
  3. Esegui il deployment del file .yaml modificato in Cloud Run utilizzando il flag --platform managed. Scopri di più sul deployment.

    Tieni presente che puoi utilizzare lo stesso progetto Google Cloud per Cloud Run.

    gcloud run services replace FILENAME.yaml --platform managed --region REGION
    

    Sostituisci:

  4. Configura l'accesso al tuo servizio Cloud Run:

  5. Nella console Google Cloud , nella pagina dei servizi, puoi fare clic sul link dell'URL visualizzato per aprire l'endpoint univoco e stabile del servizio di cui è stato eseguito il deployment.

    Vai a Cloud Run

Migrazione del traffico al tuo servizio

Dopo aver testato i servizi appena implementati e aver completato la migrazione di tutto il traffico di produzione, puoi configurare il tuo dominio personalizzato e aggiornare i record DNS con il tuo registrar. Segui le istruzioni riportate in Mappatura di domini personalizzati.