Utilizza questa guida per eseguire la migrazione dei 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 nuovo deployment di ciascuno dei tuoi servizi in quel cluster Knative.
Sebbene l'utilizzo, la gestione e l'assistenza per Knative open source siano a tua discrezione e responsabilità, la migrazione a Knative ti offre l'opportunità di continuare a eseguire i carichi di lavoro sulla piattaforma Google Kubernetes Engine.
Differenze importanti:
- L'assistenza è limitata a Google Kubernetes Engine. Puoi contattare la community di Knative per ricevere assistenza per Knative.
- Google Cloud CLI (
gcloud) è supportata solo da Google Kubernetes Engine. Knative supporta i comandikubectlekn. Scopri come installarekn
Prima di iniziare
- Devi avere accesso a un nuovo cluster GKE.
- Puoi creare il nuovo cluster nello stesso progetto o in un nuovo Google Cloud progetto.
- Il cluster deve soddisfare i requisiti di Knative.
- Scopri come creare un cluster:
- Devi eseguire manualmente il porting di tutte le configurazioni del cluster nel nuovo cluster Knative, tra cui, a titolo esemplificativo:
- Devi creare e configurare nuovi controlli dell'accesso IAM e RBAC:
Installare Knative su Google Kubernetes Engine
Knative offre diverse opzioni di installazione e livelli di rete che puoi scegliere di utilizzare. I seguenti passaggi di installazione di Knative utilizzano il metodo dell'operatore Knative e il livello di rete Istio.
Installa l'operatore Knative:
Esegui il deployment dell'operatore nel cluster:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-vVERSION/operator.yamlSostituisci VERSION con una versione dell'operatore Knative.
Esempio:
kubectl apply -f https://github.com/knative/operator/releases/download/knative-v1.3.1/operator.yamlImposta l'interfaccia a riga di comando
kubectlin modo che utilizzi lo spazio dei nomidefault:kubectl config set-context --current --namespace=defaultVerifica che l'operatore sia stato creato correttamente:
kubectl get deployment knative-operatorRisultato:
NAME READY UP-TO-DATE AVAILABLE AGE knative-operator 1/1 1 1 6m43s
Installa il componente Knative Serving:
Crea un file YAML con i seguenti contenuti, 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-servingEsegui il deployment del file YAML nel cluster:
kubectl apply -f SERVING_FILENAME.yamlSostituisci SERVING_FILENAME con il file YAML che hai creato.
Installa Istio con l'inserimento 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 30 minuti o più.
Installa Istio eseguendo il seguente comando con il
--set hub=gcr.io/istio-releaseflag per evitare la limitazione della frequenza di Docker:istioctl install --set hub=gcr.io/istio-releaseEsegui il seguente comando per abilitare l'inserimento di sidecar:
kubectl label namespace default istio-injection=enabled(Facoltativo) Per impostazione predefinita, Istio viene installato nello spazio dei nomi
istio-system. Se vuoi configurare un altro spazio dei nomi, puoi seguire questi passaggi:Per configurare uno spazio dei nomi personalizzato per Istio, aggiungi gli
spec.config.istioattributi al tuo SERVING_FILENAME.yaml file di configurazione. 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 è lo spazio dei nomi
in cui hai installato Knative Serving. Valore predefinito:
knative-serving - ISTIO_NAMESPACE è lo spazio dei nomi in cui
è installato Istio. Valore predefinito:
istio-system
- LOCAL_GATEWAY_NAMESPACE è lo spazio dei nomi
in cui hai installato Knative Serving. Valore predefinito:
Esegui il deployment del servizio SERVING_FILENAME.yaml aggiornato nel cluster Knative:
kubectl apply -f SERVING_FILENAME.yamlVerifica l'installazione di Istio assicurandoti che
istio-ingressgatewaysi trovi nello spazio dei nomi specificato:kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACESostituisci ISTIO_NAMESPACE con lo spazio dei nomi in cui hai installato Istio. Valore predefinito:
istio-systemRisultato:
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.
Esporta il servizio Knative Serving in un file YAML locale eseguendo il seguente comando:
gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yamlSostituisci:
SERVICEcon il nome del servizio Knative Serving.NAMESPACEcon lo spazio dei nomi in cui è in esecuzione il servizio.CLUSTERcon il nome del cluster in cui è in esecuzione il servizio.FILENAMEcon un nome file univoco a tua scelta.
Modifica il file
FILENAME.yamlesportato per rimuovere le configurazioni di Knative Serving indesiderate eliminando uno qualsiasi dei seguenti attributi e i relativi valori:metadata.annotations.kubectl.kubernetes.io/last-applied-configurationmetadata.managedFieldsspec.template.spec.containers.readinessProbesspec.template.spec.enableServiceLinksAd esempio, potresti dover rimuovere la seguente configurazione dagli attributi
spec:>template:>spec:>containers::... readinessProbe: successThreshold: 1 tcpSocket: {} ...
Esegui il deployment del file
.yamlmodificato nel cluster Knative:kubectl apply -f SERVICE.yamlSostituisci SERVICE con il nome del file di configurazione del servizio.
Accedi al servizio di cui hai eseguito il deployment utilizzando un dominio di test o i comandi
cURL. Puoi utilizzare un servizio DNS con caratteri jolly per testare l'accesso esterno al tuo servizio. Per ulteriori 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.yamlSostituisci VERSION con la tua versione di Knative Serving.
Esempio:
kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.3.0/serving-default-domain.yaml
Eseguire la migrazione del traffico al servizio
Dopo aver testato i servizi di cui hai eseguito il deployment di recente e quando sei pronto per eseguire la migrazione di tutto il traffico di produzione, puoi configurare il dominio personalizzato e aggiornare i record DNS con il registrar. Segui le istruzioni riportate in Configurare domini personalizzati.