Utilizza questa guida per eseguire la migrazione dei carichi di lavoro in modo da eseguirli 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 poi eseguire nuovamente il deployment di ciascuno dei tuoi servizi nel cluster Knative.
L'utilizzo, la gestione e il supporto di Knative open source sono una tua scelta e una tua responsabilità, ma la migrazione a Knative ti offre l'opportunità di continuare a eseguire i tuoi carichi di lavoro sulla piattaforma Google Kubernetes Engine.
Differenze significative:
- L'assistenza è limitata a Google Kubernetes Engine. Puoi contattare la community Knative per ricevere assistenza per Knative.
- Google Cloud CLI (
gcloud
) è supportato solo da Google Kubernetes Engine. Knative supporta i comandikubectl
ekn
. Scopri come installarekn
Prima di iniziare
- Devi avere accesso a un nuovo cluster GKE.
- Puoi creare un nuovo cluster nello stesso progetto Google Cloud o in uno nuovo.
- Il cluster deve soddisfare i requisiti di Knative.
- Scopri come creare un cluster:
- Devi trasferire manualmente qualsiasi configurazione di cluster al nuovo cluster Knative, inclusi, a titolo esemplificativo:
- Devi creare e configurare nuovi controlli dell'accesso IAM e RBAC:
Installazione di Knative su Google Kubernetes Engine
Knative offre diverse opzioni di installazione e livelli di networking tra cui scegliere. I seguenti passaggi di installazione di Knative utilizzano il metodo Knative Operator e il livello di networking 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.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
Imposta l'interfaccia a riga di comando
kubectl
per utilizzare lo spazio dei nomidefault
:kubectl config set-context --current --namespace=default
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
Installa il componente Knative Serving:
Crea un file YAML con il seguente codice, 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
Esegui il deployment del file YAML nel cluster:
kubectl apply -f SERVING_FILENAME.yaml
Sostituisci SERVING_FILENAME con il file YAML che hai creato.
Installa Istio con l'iniezione di file collaterali come livello di rete:
Puoi scegliere di eseguire e configurare un'installazione alternativa di Istio. Vedi tutte le opzioni di installazione di Istio sul sito web di Knative. Tieni presente che questa installazione può richiedere più di 30 minuti.
Installa Istio eseguendo il comando seguente con il flag
--set hub=gcr.io/istio-release
per evitare la limitazione della frequenza Docker:istioctl install --set hub=gcr.io/istio-release
Esegui questo comando per abilitare l'inserimento di file collaterali:
kubectl label namespace default istio-injection=enabled
(Facoltativo) Per impostazione predefinita, Istio è installato nello spazio dei nomi
istio-system
. Se vuoi configurare uno spazio dei nomi diverso, puoi seguire questi passaggi: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 è 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 tuo cluster Knative:
kubectl apply -f SERVING_FILENAME.yaml
Verifica l'installazione di Istio confermando che
istio-ingressgateway
risiede nello spazio dei nomi specificato:kubectl get svc istio-ingressgateway -n ISTIO_NAMESPACE
Sostituisci ISTIO_NAMESPACE con lo 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
Migrazione di un servizio
Per eseguire la migrazione di un servizio, devi eseguire il deployment del file di configurazione YAML del tuo servizio nel cluster Knative.
Esporta il tuo servizio di pubblicazione Knative in un file YAML locale eseguendo questo comando:
gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yaml
Sostituisci:
SERVICE
con il nome del tuo servizio di pubblicazione Knative.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 a tua scelta.
Modifica il file
FILENAME.yaml
esportato per rimuovere le configurazioni di pubblicazione 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: {} ...
Esegui il deployment del file
.yaml
modificato nel cluster Knative:kubectl apply -f SERVICE.yaml
Sostituisci 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 questo comando.
Tieni presente che puoi anche usare direttamente sslip.io.
kubectl apply -f https://github.com/knative/serving/releases/download/knative-vVERSION/serving-default-domain.yaml
Sostituisci 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
Migrazione del traffico al servizio
Dopo che avrai testato i nuovi servizi di cui hai eseguito il deployment e sarai pronto a 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 in Configurazione di domini personalizzati.