Migrazione dal controller Ingress ( NGINX ) al controller Ingress Traefik
Esegui la migrazione della tua configurazione Ingress in modo da utilizzare il controller Traefik al posto del controller Ingress- NGINX.
Prima di iniziare
Verificare questi prerequisiti prima di procedere alla migrazione.
-
Assicurati di disporre delle autorizzazioni necessarie.
- Ruolo di accesso alla piattaforma di amministrazione per il cluster
- Ruolo di accesso al servizio “Manager” in tutti gli spazi dei nomi
-
Esaminare le risorse Ingress esistenti per verificare la presenza di annotazioni o configurazioni specifiche relative a Ingress- NGINX. Consulta la documentazione sulle principali differenze tra i due controller di Ingress.
-
Pianificate la vostra strategia di migrazione in base ai requisiti del carico di lavoro, alla tolleranza ai tempi di inattività e alla disponibilità delle risorse. Entrambi i controller possono funzionare contemporaneamente durante la migrazione.
-
Assicurati che il tuo cluster disponga di almeno due nodi di lavoro per ogni zona, al fine di garantire l'alta disponibilità.
-
Esegui il backup delle tue attuali configurazioni di Ingress prima di apportare modifiche.
Strategia 1: Configurazione separata di Ingress con un dominio diverso
Prova Traefik con una configurazione separata, mantenendo l'ambiente di produzione su Ingress: NGINX. Questa strategia garantisce il massimo isolamento e la massima sicurezza.
Utilizza questa strategia quando:
- È opportuno testare accuratamente Traefik prima di migrare i carichi di lavoro di produzione.
- È possibile distribuire un diverso insieme di applicazioni a scopo di test.
- Hai le risorse necessarie per gestire ulteriori ALB.
- Vuoi che durante i test non vi sia alcun rischio per il tuo ambiente di produzione.
Passi
- Scarica le versioni disponibili di Traefik.
ibmcloud ks ingress alb versions - Crea un nuovo ALB con Traefik.
Gruppi classici
sh {: pre} ibmcloud ks ingress alb create classic --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --vlan VLAN_ID --version TRAEFIK_VERSION
Cluster VPC
sh {: pre} ibmcloud ks ingress alb create vpc-gen2 --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --version TRAEFIK_VERSION
-
Per i cluster VPC, distribuire manualmente un servizio LoadBalancer aggiuntivo a scopo di test. Impostare "
spec.selector" in modo che includa "app.kubernetes.io/vpcComponent: public-cr<cluster_id>-traefik" (oppure "private-cr<cluster_id>-traefik" per gli ALB privati). Nei cluster Classic, viene creato automaticamente un nuovo bilanciatore di carico e non è necessaria alcuna configurazione aggiuntiva. -
Crea un dominio personalizzato per l'ALB di Traefik e indirizzalo al nome host o all'indirizzo IP del bilanciatore di carico. Per istruzioni dettagliate, consulta la sezione " Creazione di domini personalizzati ".
-
Crea una risorsa Ingress per le applicazioni di prova utilizzando la classe Traefik Ingress. Segui il Passo 3: Crea la risorsa Ingress, specificando
ingressClassName: public-iks-traefik(oppureprivate-iks-traefikper gli ALB privati). -
Testare le applicazioni tramite il dominio Traefik e verificarne il corretto funzionamento.
-
Al termine dei test, procedi alla sezione " Effettuare il passaggio " per migrare i tuoi carichi di lavoro di produzione.
Strategia 2: Due bilanciatori di carico con lo stesso carico di lavoro
Prova entrambi i controller con lo stesso carico di lavoro creando due risorse Ingress che puntano allo stesso servizio. È possibile confrontare direttamente il comportamento dei controller senza influire sul traffico di produzione.
Utilizza questa strategia quando:
- Vuoi confrontare il comportamento di Ingress- NGINX e Traefik sullo stesso carico di lavoro.
- È necessario verificare che Traefik gestisca correttamente la vostra applicazione specifica.
- È possibile effettuare dei test utilizzando un dominio non di produzione.
- Si desidera ridurre al minimo il numero di applicazioni di test necessarie.
Passi
- Abilitare un nuovo ALB con una versione basata su Traefik.
Gruppi classici
sh {: pre} ibmcloud ks ingress alb create classic --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --vlan VLAN_ID --version TRAEFIK_VERSION
Cluster VPC
sh {: pre} ibmcloud ks ingress alb create vpc-gen2 --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --version TRAEFIK_VERSION
-
Per i cluster VPC, distribuire manualmente un servizio LoadBalancer aggiuntivo a scopo di test. Impostare "
spec.selector" in modo che includa "app.kubernetes.io/vpcComponent: public-cr<cluster_id>-traefik" (oppure "private-cr<cluster_id>-traefik" per gli ALB privati). Nei cluster Classic, viene creato automaticamente un nuovo bilanciatore di carico e non è necessaria alcuna configurazione aggiuntiva. -
Crea un dominio personalizzato per l'ALB di Traefik e indirizzalo al nome host o all'indirizzo IP del bilanciatore di carico. Per istruzioni dettagliate, consulta la sezione " Creazione di domini personalizzati ".
-
Crea una seconda risorsa Ingress che utilizzi la classe Ingress di Traefik, ma che punti allo stesso servizio della tua risorsa Ingress esistente: NGINX. Segui le istruzioni riportate nel Passaggio 3: Crea la risorsa Ingress, assicurandoti di:
- Specificare
ingressClassName: public-iks-traefik(oppureprivate-iks-traefikper gli ALB privati) - Utilizza lo stesso valore "
service.name" utilizzato dalla tua risorsa Ingress esistente ( NGINX ) - Inserisci il tuo dominio di prova nei campi “
host” e “tls.hosts”
- Specificare
-
Testa la tua applicazione su entrambi i domini.
- Accesso tramite il dominio Ingress- NGINX (produzione)
- Accesso tramite il dominio Traefik (in fase di test)
-
Confronta il comportamento, le prestazioni e le funzionalità dei due controller.
-
Dopo aver effettuato la convalida, passa alla sezione " Effettuare il passaggio " per migrare il tuo dominio di produzione su Traefik.
Strategia 3: Test del DNS frazionato
Utilizza una configurazione DNS split per testare Traefik con il tuo dominio di produzione in un ambiente simile a quello di produzione senza influire sui tuoi utenti.
Utilizza questa strategia quando:
- Vuoi eseguire il test utilizzando il tuo dominio di produzione effettivo.
- Hai il controllo sulla configurazione DNS del tuo ambiente di test.
- È necessario verificare l'esatta configurazione di produzione.
- Vuoi ridurre al minimo le differenze tra l'ambiente di test e quello di produzione.
Passi
- Abilitare un nuovo ALB con una versione basata su Traefik.
Gruppi classici
sh {: pre} ibmcloud ks ingress alb create classic --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --vlan VLAN_ID --version TRAEFIK_VERSION
Cluster VPC
sh {: pre} ibmcloud ks ingress alb create vpc-gen2 --cluster CLUSTER_NAME --type PUBLIC_OR_PRIVATE --zone ZONE --version TRAEFIK_VERSION
-
Per i cluster VPC, distribuire manualmente un servizio LoadBalancer aggiuntivo a scopo di test. Impostare "
spec.selector" in modo che includa "app.kubernetes.io/vpcComponent: public-cr<cluster_id>-traefik" (oppure "private-cr<cluster_id>-traefik" per gli ALB privati). Nei cluster Classic, viene creato automaticamente un nuovo bilanciatore di carico e non è necessaria alcuna configurazione aggiuntiva. -
Recupera l'indirizzo IP (metodo classico) o il nome host (VPC) del nuovo ALB di Traefik.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME -
Configura lo split-DNS nel tuo ambiente di test.
- Per i vostri computer di prova o la vostra rete, configurate il DNS in modo che risolva il vostro dominio di produzione all'IP o al nome host dell'ALB di Traefik
- Gli utenti di produzione continuano a connettersi all'ALB di Ingress- NGINX
- Ciò può essere effettuato tramite file
/etc/hostslocali, server DNS interni o configurazioni DNS specifiche per la VPN
-
Crea una nuova risorsa Ingress utilizzando la classe Traefik Ingress con il tuo dominio di produzione. Segui il Passo 3: Crea la risorsa Ingress, specificando
ingressClassName: public-iks-traefik(oprivate-iks-traefikper gli ALB privati) e il tuo dominio di produzione nei campihostetls.hosts. -
Esegui un test dal tuo ambiente DNS split per verificare il corretto funzionamento di Traefik con il dominio e la configurazione di produzione.
-
Dopo la convalida, passare alla sezione " Effettuare il passaggio " per aggiornare il DNS di produzione in modo che punti a Traefik.
Strategia 4: Migrazione diretta
Passa direttamente da Ingress ( NGINX ) a Traefik con modifiche minime alla configurazione e alla gestione delle risorse.
Questa strategia comporta un'interruzione del servizio durante la migrazione. Prima di iniziare, pianifica una finestra temporale dedicata alla manutenzione.
Utilizza questa strategia quando:
- Il carico di lavoro è ridotto oppure si tratta di applicazioni non critiche.
- È possibile tollerare brevi periodi di inattività durante la migrazione.
- Vuoi ridurre al minimo il numero di risorse da gestire.
- Hai già verificato la compatibilità con Traefik in un altro ambiente.
- In modalità Classic, è necessario mantenere invariati gli indirizzi IP degli ALB, poiché i client si connettono utilizzando gli indirizzi IP anziché i domini DNS.
La disattivazione e la riattivazione di un ALB ne mantengono l'indirizzo IP originale, a meno che tale indirizzo IP non sia stato assegnato nel frattempo ad altri servizi. Per ulteriori informazioni, consultare la sezione " Abilitazione o disabilitazione degli ALB ".
Passi
-
Ottieni l'ID del tuo ALB Ingress- NGINX.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME -
Disattiva l'ALB di Ingress- NGINX.
ibmcloud ks ingress alb disable --alb ALB_ID --cluster CLUSTER_NAMECluster VPC: se si disattiva l'ultimo ALB pubblico o privato, attendere che la distribuzione dell'ALB e la corrispondente risorsa di servizio del bilanciatore di carico vengano eliminate prima di abilitare un ALB Traefik.
-
Abilita l'ALB con una versione di Traefik.
Gruppi classici
sh {: pre} ibmcloud ks ingress alb enable classic --alb ALB_ID --version TRAEFIK_VERSION --cluster CLUSTER_NAME Per utilizzare un indirizzo IP specifico per l'ALB in modalità classica, utilizzare il flag --ip .
Per ulteriori informazioni, consultare la sezione " Attivazione o disattivazione degli ALB ".
[Cluster VPC]{: tag-vpc}
```sh {: pre}
ibmcloud ks ingress alb enable vpc-gen2 --alb ALB_ID --version TRAEFIK_VERSION --cluster CLUSTER_NAME
```
- Per i cluster VPC, impostare Traefik come backend del bilanciatore di carico.
Cluster VPC
sh {: pre} ibmcloud ks ingress load-balancer backend set --cluster CLUSTER-ID --public-backend traefik [--private-backend traefik]
-
Aggiorna le tue risorse Ingress per utilizzare la classe Ingress di Traefik. Se le tue risorse specificano esplicitamente la classe Ingress, aggiorna
spec.ingressClassNamedapublic-iks-k8s-nginxapublic-iks-traefik(oppure daprivate-iks-k8s-nginxaprivate-iks-traefikper gli ALB privati). -
Applica le risorse aggiornate di Ingress.
kubectl apply -f ingress.yaml -
Verifica che le tue applicazioni siano accessibili tramite il controller Traefik.
curl https://<domain>/<app_path>
Passare a Traefik
Al termine dei test, configurare il traffico di produzione in modo che utilizzi il controller Traefik. La procedura varia a seconda che si tratti di cluster classici o VPC. Scegli l'opzione che corrisponde al tipo e alla configurazione del tuo cluster.
Cluster classici
Per i cluster classici, aggiorna il tuo dominio di produzione in modo che punti al bilanciatore di carico che espone Traefik anziché a Ingress: NGINX.
Opzione 1: Aggiornare la mappatura del dominio
- Ottieni l'indirizzo IP del tuo ALB Traefik.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Aggiorna il tuo dominio in modo che punti all'ALB di Traefik.
ibmcloud ks ingress domain update --cluster CLUSTER_NAME --domain DOMAIN_NAME --ip TRAEFIK_ALB_IP - Verifica l'aggiornamento del dominio.
ibmcloud ks ingress domain ls --cluster CLUSTER_NAME - Verificate il funzionamento delle vostre applicazioni sul dominio di produzione per assicurarvi che ora siano gestite da Traefik.
Opzione 2: Disattivare gli ALB di Ingress- NGINX
In alternativa, è possibile disabilitare tutti gli ALB basati su Ingress- NGINX, il che aggiorna automaticamente le mappature dei domini.
- Elencare tutti gli ALB e identificare quelli basati su Ingress- NGINX.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Disattivare ogni ALB Ingress- NGINX.
ibmcloud ks ingress alb disable --alb NGINX_ALB_ID --cluster CLUSTER_NAME - Verifica che il tuo dominio punti ora agli ALB di Traefik.
ibmcloud ks ingress domain ls --cluster CLUSTER_NAME
Opzione 3: Conservare gli indirizzi IP dell'ALB
Se i tuoi clienti si connettono direttamente agli indirizzi IP dell'ALB anziché ai nomi DNS, puoi mantenere tali indirizzi IP durante la migrazione. Per preservare gli indirizzi IP è necessario disattivare temporaneamente gli ALB, il che comporta una breve interruzione del servizio.
La disattivazione e la riattivazione di un ALB ne mantengono l'indirizzo IP originale, a meno che tale indirizzo IP non sia stato assegnato ad altri servizi.
-
Elencare tutti gli ALB e identificare quelli basati su Ingress- NGINX, per ottenere i relativi ID e indirizzi IP.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME -
Disattiva l'ALB di Ingress- NGINX. Ciò provoca una breve interruzione del servizio per il traffico su quell'indirizzo IP.
ibmcloud ks ingress alb disable --alb ALB_ID --cluster CLUSTER_NAME -
Riattivare l'ALB con una versione di Traefik per riutilizzare lo stesso indirizzo IP.
ibmcloud ks ingress alb enable classic --alb ALB_ID --version TRAEFIK_VERSION --cluster CLUSTER_NAMEIn alternativa, creare un nuovo ALB e utilizzare il flag "
--ip" per riutilizzare l'indirizzo IP originale. -
Aggiorna le tue risorse Ingress per utilizzare la classe Ingress di Traefik. Se le tue risorse specificano esplicitamente la classe Ingress, aggiorna
spec.ingressClassNamedapublic-iks-k8s-nginxapublic-iks-traefik(oppure daprivate-iks-k8s-nginxaprivate-iks-traefikper gli ALB privati). -
Applica le risorse aggiornate di Ingress.
kubectl apply -f ingress.yaml -
Verifica che le tue applicazioni siano accessibili tramite il controller Traefik.
curl https://<domain>/<app_path>
Cluster VPC
Per i cluster VPC, aggiorna il backend del bilanciatore di carico in modo da esporre Traefik anziché Ingress: NGINX.
Opzione 1: Aggiornare il backend del bilanciatore di carico
- Aggiornare il bilanciatore di carico in modo che utilizzi il backend Traefik.
ibmcloud ks ingress load-balancer backend set --cluster CLUSTER_NAME --public-backend traefik [--private-backend traefik] - Verificare la configurazione del bilanciatore di carico.
ibmcloud ks ingress load-balancer get --cluster CLUSTER_NAME - Verifica che le tue applicazioni siano ora gestite da Traefik.
Opzione 2: Disattivare gli ALB di Ingress- NGINX
In alternativa, è possibile disattivare tutti gli ALB basati su Ingress- NGINX.
- Elencare tutti gli ALB e identificare quelli basati su Ingress- NGINX.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Disattivare ogni ALB Ingress- NGINX.
ibmcloud ks ingress alb disable --alb NGINX_ALB_ID --cluster CLUSTER_NAME - Verifica che il bilanciatore di carico utilizzi ora gli ALB di Traefik.
ibmcloud ks ingress load-balancer get --cluster CLUSTER_NAME
Attività successive alla migrazione
Dopo aver effettuato la migrazione a Traefik, completare le seguenti operazioni:
-
Controlla che le tue applicazioni non presentino comportamenti imprevisti o errori dopo la migrazione.
-
Aggiornare la documentazione interna per riflettere la nuova configurazione di Ingress con Traefik.
-
Rimuovere eventuali ALB, domini o risorse Ingress di prova che non sono più necessari.
-
Dopo aver verificato che Traefik funzioni come previsto, disattivare gli ALB rimanenti di Ingress- NGINX.
ibmcloud ks ingress alb disable --alb NGINX_ALB_ID --cluster CLUSTER_NAME
Risoluzione dei problemi
Se dovessi riscontrare dei problemi durante o dopo la migrazione, segui i passaggi riportati di seguito per individuarne la causa e risolverli.
- Verifica la classe di Ingress
-
Verificare che le risorse Ingress utilizzino la classe Traefik corretta (
public-iks-traefikoprivate-iks-traefik). - Verifica lo stato dell'ALB
-
Assicurati che i tuoi ALB di Traefik siano in buono stato.
ibmcloud ks ingress alb ls --cluster CLUSTER_NAME - Verifica lo stato di Ingress
-
Verifica lo stato delle tue risorse di Ingress.
kubectl get ingress -A - Registri di revisione
-
Controlla i log del controller Traefik per verificare la presenza di errori.
kubectl logs -n kube-system -l alb-image-type=traefik - Esegui diagnostica
-
Utilizza il rapporto sullo stato di Ingress per individuare eventuali problemi.
ibmcloud ks ingress status-report get --cluster CLUSTER_NAME - Se necessario, tornare indietro
-
Se dovessi riscontrare problemi critici, torna alla versione precedente di Ingress- NGINX disabilitando l'ALB di Traefik e riabilitando l'ALB di Ingress- NGINX con la sua versione originale. Pianificare la risoluzione dei problemi e ripetere la migrazione.
Per ulteriore assistenza, consulta la sezione " Risoluzione dei problemi di Ingress " oppure contatta l'assistenza di IBM Cloud.