Migrazione dei carichi di lavoro a Knative OSS

Utilizza questa guida per eseguire la migrazione dei tuoi carichi di lavoro in modo che vengano eseguiti sull'offerta Knative open source con Google Kubernetes Engine. In generale, la migrazione dei carichi di lavoro richiede l'installazione del componente Knative Serving in un nuovo cluster GKE e il successivo redeployment di ciascun servizio in quel cluster Knative.

Sebbene l'utilizzo, la gestione e il supporto di Knative open source siano una tua scelta e una tua responsabilità, la migrazione a Knative ti offre l'opportunità di continuare a eseguire i tuoi carichi di lavoro sulla piattaforma Google Kubernetes Engine.

Differenze principali:

  • L'assistenza è limitata a Google Kubernetes Engine. Puoi contattare la community Knative per ricevere assistenza su Knative.
  • Google Cloud CLI (gcloud) è supportato solo da Google Kubernetes Engine. Knative supporta i comandi kubectl e kn. Scopri come installare kn

Prima di iniziare

Installazione di Knative su Google Kubernetes Engine

Knative fornisce diversi livelli di rete e opzioni di installazione che puoi scegliere di utilizzare. I seguenti passaggi di installazione di Knative utilizzano il metodo dell'operatore Knative e il livello di rete Istio.

  1. Installa l'operatore Knative:

    1. Esegui il deployment dell'operatore nel tuo cluster:

      kubectl apply -f https://github.com/knative/operator/releases/download/knative-vVERSION/operator.yaml
      

      Sostituisci VERSION con una versione dell'operatore Knative.

      Esempio:

      kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.3.1/operator.yaml
      
    2. Imposta l'interfaccia a riga di comando kubectl in modo da utilizzare lo spazio dei nomi default:

      kubectl config set-context --current --namespace=default
      
    3. Verifica che l'operatore sia stato creato correttamente:

      kubectl get deployment knative-operator
      

      Risultato:

      NAME               READY   UP-TO-DATE   AVAILABLE   AGE
      knative-operator   1/1     1            1           6m43s
      
  2. Installa il componente Knative Serving:

    1. Crea un file YAML con quanto segue, ad esempio SERVING_FILENAME.yaml:

      apiVersion: v1
      kind: Namespace
      metadata:
        name: knative-serving
      ---
      apiVersion: operator.knative.dev/v1alpha1
      kind: KnativeServing
      metadata:
        name: knative-serving
        namespace: knative-serving
      
    2. Esegui il deployment del file YAML nel cluster:

      kubectl apply -f SERVING_FILENAME.yaml
      

      Sostituisci SERVING_FILENAME con il file YAML che hai creato.

  3. Installa Istio con l'iniezione di sidecar come livello di rete:

    Hai la possibilità di eseguire e configurare un'installazione alternativa di Istio. Consulta tutte le opzioni di installazione di Istio sul sito web di Knative. Tieni presente che questa installazione può richiedere più di 30 minuti.

    1. Scarica Istio dalla pagina della release.

    2. Installa Istio eseguendo il seguente comando con il flag --set hub=gcr.io/istio-release per evitare il limite di frequenza di Docker:

      istioctl install --set hub=gcr.io/istio-release
      
    3. Esegui il comando seguente per abilitare l'iniezione di sidecar:

      kubectl label namespace default istio-injection=enabled
      
    4. (Facoltativo) Per impostazione predefinita, Istio è installato nello spazio dei nomi istio-system. Se vuoi configurare uno spazio dei nomi diverso, puoi seguire i seguenti passaggi:

      1. Per configurare uno spazio dei nomi personalizzato per Istion, aggiungi gli attributi spec.config.istio al file di configurazione SERVING_FILENAME.yaml. Ad esempio:

        apiVersion: operator.knative.dev/v1alpha1
        kind: KnativeServing
        metadata:
          name: knative-serving
          namespace: knative-serving
        spec:
          # ...
          config:
            istio:
              local-gateway.LOCAL_GATEWAY_NAMESPACE.knative-local-gateway: "knative-local-gateway.ISTIO_NAMESPACE.svc.cluster.local"
        

        Sostituisci:

        • LOCAL_GATEWAY_NAMESPACE è il nome del namespace in cui hai installato Knative Serving. Valore predefinito: knative-serving
        • ISTIO_NAMESPACE è lo spazio dei nomi in cui è installato Istio. Valore predefinito: istio-system
      2. Esegui il deployment del servizio SERVING_FILENAME.yaml aggiornato nel tuo cluster Knative:

        kubectl apply -f SERVING_FILENAME.yaml
        
      3. Verifica l'installazione di Istio verificando che istio-ingressgateway si trovi nello spazio dei nomi specificato:

        kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACE
        

        Sostituisci ISTIO_NAMESPACE con il nome dello spazio dei nomi in cui hai installato Istio. Valore predefinito: istio-system

        Risultato:

        NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)                                      AGE
        istio-ingressgateway   LoadBalancer   10.232.10.190   34.123.5.116   15021:30337/TCP,80:32549/TCP,443:31210/TCP   119m
        

Eseguire la migrazione di un servizio

Per eseguire la migrazione di un servizio, esegui il deployment del file di configurazione YAML del servizio nel cluster Knative.

  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 rimuovere le configurazioni di servizio Knative indesiderate eliminando uno dei seguenti attributi e i 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 nel tuo cluster Knative:

    kubectl apply -f SERVICE.yaml
    

    Sostituisci SERVICE con il nome del file di configurazione del servizio.

  4. Accedi al servizio di cui è stato eseguito il deployment utilizzando un dominio di test o i comandi cURL. Puoi utilizzare un servizio DNS jolly per testare l'accesso esterno al tuo servizio. Per altre opzioni, consulta la sezione sulla configurazione del DNS nella documentazione di Knative.

    Per utilizzare Magic DNS (sslip.io), esegui il seguente comando.

    Tieni presente che puoi anche utilizzare direttamente sslip.io.

    kubectl apply -f https://github.com/knative/serving/releases/download/knative-vVERSION/serving-default-domain.yaml
    

    Sostituisci VERSION con la versione di Knative Serving in uso.

    Esempio:

    kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.3.0/serving-default-domain.yaml
    

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 Configurare i domini personalizzati.