Scelta di un servizio di esposizione delle applicazioni
Esponi in modo sicuro le tue app al traffico esterno utilizzando Red Hat OpenShift Ingress controller o IBM Cloud® Kubernetes ServiceNodePort, o il bilanciatore di carico di rete.
Comprensione delle opzioni per esporre le applicazioni
Per rendere accessibili le tue app al traffico esterno in modo sicuro, puoi scegliere tra i seguenti servizi.
- Red Hat OpenShift Controller Ingress
-
Esponi più applicazioni nel cluster configurando l'instradamento con il controller Ingress Red Hat OpenShift. Il controller Ingress utilizza il dominio secondario Ingress come punto di ingresso pubblico o privato protetto e univoco per instradare le richieste in entrata. Puoi usare un dominio secondario per esporre più applicazioni nel tuo cluster come servizi. La soluzione del controller Ingress utilizza tre componenti.
- L'operatore Ingress che gestisce i controller Ingress nel cluster.
- Il controller Ingress è un servizio Kubernetes basato su HAProxy che gestisce tutto il traffico in entrata per le applicazioni nel tuo cluster implementando le regole di instradamento per le applicazioni. Questo controller è gestito dall'operatore Ingress. Il controller Ingress ascolta le richieste in entrata rivolte ai servizi HTTP o HTTPS e, successivamente, inoltra le richieste ai pod relativi a quella specifica applicazione, esclusivamente in base alle regole definite nella risorsa Ingress e implementate dal controller Ingress.
- La risorsa Route definisce le regole relative all'instradamento e al bilanciamento del carico delle richieste in entrata per un'app.
-
Una Route espone un servizio sotto forma di nome host nel formato
<service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud. Nel cluster viene distribuito per impostazione predefinita un controller Ingress, che consente ai client esterni di utilizzare le Routes. Il controller di Ingress utilizza il selettore di servizi per individuare il servizio e gli endpoint ad esso associati. Puoi configurare il selettore di servizi per indirizzare il traffico attraverso un instradamento a più servizi. È inoltre possibile creare route non protette o protette utilizzando il certificato TLS assegnato dal controller Ingress al proprio nome host. Si noti che il controller Ingress supporta solo i protocolli HTTP e HTTPS. - NodePort
-
Quando esponi le applicazioni con un servizio NodePort, al servizio vengono assegnati una NodePort compresa nell'intervallo 30000 - 32767 e un indirizzo IP del cluster interno. Per accedere al servizio dall'esterno del cluster, occorre utilizzare l'indirizzo IP pubblico o privato di un qualsiasi nodo di lavoro e l' NodePort, nel formato
<IP_address>:<nodeport>. Tuttavia, gli indirizzi IP pubblici e privati del nodo di rete non sono permanenti. Quando un nodo di lavoro viene rimosso o ricreato, vengono assegnati al nodo di lavoro un nuovo indirizzo IP pubblico e uno nuovo privato. Le NodePort sono ideali per testare l'accesso pubblico o privato o fornire l'accesso solo per un breve periodo di tempo. - LoadBalancer
-
Il tipo di servizio LoadBalancer viene implementato in modo diverso a seconda del fornitore dell'infrastruttura del tuo cluster.
- Cluster classici: NLB (network load balancer). Ogni cluster standard viene fornito con quattro indirizzi IP pubblici portatili e quattro indirizzi IP privati portatili che puoi utilizzare per creare un NLB (network load balancer) TCP/UDP di livello 4 per la tua applicazione. Puoi personalizzare il tuo NLB esponendo una qualsiasi porta richiesta dalla tua applicazione. Gli indirizzi IP pubblici e privati portabili assegnati all'NLB sono permanenti e non cambiano quando un nodo di lavoro viene ricreato nel cluster. Se crei degli NLB pubblici, puoi creare un dominio secondario per la tua applicazione che registra gli indirizzi IP degli NLB pubblici con una voce DNS. Puoi anche abilitare monitoraggi del controllo dell'integrità sugli IP dell'NLB per ciascun dominio secondario.
- Cluster VPC: Programma di bilanciamento del carico per VPC. Quando crei un servizio LoadBalancer Kubernetes per un'applicazione nel tuo cluster, un programma di bilanciamento del carico VPC di livello 7 viene creato automaticamente nel tuo VPC fuori dal tuo cluster. Il programma di bilanciamento del carico VPC è multizonale e instrada le richieste per la tua applicazione tramite le NodePort private che vengono aperte automaticamente sui tuoi nodi di lavoro. Per impostazione predefinita, il programma di bilanciamento del carico viene creato anche con un nome host che puoi utilizzare per accedere alla tua applicazione, ma puoi anche creare un dominio secondario per la tua applicazione che crea una voce DNS.
- Ingress
-
Puoi utilizzare Ingress per esporre la tua applicazione al traffico esterno tramite il controller Ingress Red Hat OpenShift. Il Gestore controller Red Hat OpenShift converte le tue risorse Ingress in risorse di instradamento e il controller Ingress Red Hat OpenShift elabora tali instradamenti.
Scelta tra le soluzioni di bilanciamento del carico
Ora che hai compreso quali opzioni hai a disposizione per rendere accessibili le applicazioni nel tuo cluster Red Hat OpenShift, scegli la soluzione più adatta al tuo carico di lavoro.
La seguente tabella confronta le funzioni di ciascun metodo di esposizione delle applicazioni.
| Caratteristiche | NodePort | LoadBalancer (Classico - NLB) | LoadBalancer (Programma di bilanciamento del carico VPC) | Controller Ingress |
|---|---|---|---|---|
| IP esterno stabile | Sì | Sì | ||
| Nome host esterno | Sì | Sì | Sì | |
| Terminazione SSL | Sì * | Sì * | Sì | |
| Bilanciamento del carico HTTP/HTTPS | Sì | |||
| Regole di instradamento personalizzate | Sì | |||
| Più applicazioni per instradamento o servizio | Sì | |||
| Distribuzione multicloud ibrida coerente | Sì |
La terminazione SSL * viene fornita dai comandi ibmcloud oc nlb-dns. Nei cluster classici, questi comandi sono supportati solo per gli NLB pubblici.
Pianificazione del bilanciamento del carico esterno pubblico
Esponi pubblicamente un'applicazione nel tuo cluster su Internet.
Nei cluster classici, i tuoi nodi di lavoro sono connessi a una VLAN pubblica. La VLAN pubblica determina l'indirizzo IP pubblico che viene assegnato a ciascun nodo di lavoro, che fornisce a ciascun nodo di lavoro un'interfaccia di rete pubblica. I servizi di rete pubblica si collegano a questa interfaccia di rete pubblica fornendo alla tua applicazione un indirizzo IP pubblico e, facoltativamente, un URL pubblico.
Nei cluster VPC, i tuoi nodi di lavoro sono connessi solo alle sottoreti VPC private. Tuttavia, quando crei i servizi di rete pubblici, viene creato automaticamente un programma di bilanciamento del carico VPC. Il programma di bilanciamento del carico VPC può instradare le richieste pubbliche alla tua applicazione fornendo alla tua applicazione un URL pubblico. Quando un'applicazione è esposta pubblicamente, chiunque abbia l'URL pubblico può inviare una richiesta alla tua applicazione.
Quando un'applicazione viene esposta pubblicamente, chiunque disponga dell'indirizzo IP del servizio pubblico o dell'URL che hai configurato per la tua applicazione può inviare una richiesta a tale applicazione. Per questo motivo, esponi meno applicazioni possibile. Esponi un'applicazione al pubblico solo quando la tua applicazione è pronta ad accettare il traffico da utenti o client web esterni.
L'interfaccia di rete pubblica per i nodi di rete è protetta dalle impostazioni della politica di rete Calico predefinite configurate su ogni nodo di lavoro durante la creazione del cluster. Per impostazione predefinita, tutto il traffico di rete in uscita è consentito per tutti i nodi di lavoro. Il traffico di rete in entrata è bloccato, fatta eccezione per alcune porte. Queste porte sono aperte in modo che IBM possa monitorare il traffico di rete e installare automaticamente gli aggiornamenti di sicurezza per il master Kubernetes e per poter stabilire le connessioni ai servizi di rete pubblica. Per ulteriori informazioni su queste politiche, incluso su come modificarle, vedi Politiche di rete.
Rete di applicazioni pubblica per i cluster classici
Per rendere un'applicazione pubblicamente disponibile su Internet in un cluster classico, scegli un metodo di esposizione delle applicazioni che utilizza instradamenti, NodePort, NLB oppure configura Ingress. La seguente tabella descrive ogni possibile metodo, i motivi per cui potresti utilizzarlo e come configurarlo. Per le informazioni di base sui servizi di rete elencati, vedi Descrizione dei tipi di servizio Kubernetes.
Non è possibile utilizzare più metodi di esposizione per una singola app.
| Nome | Metodo di bilanciamento del carico | Caso d'uso | Implementazione |
|---|---|---|---|
| Instradamento | Bilanciamento del carico HTTP(S) che espone l'applicazione con un dominio secondario e utilizza regole di instradamento personalizzate |
Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. Scegli questo metodo per continuare a utilizzare l'interfaccia nativa di Red Hat OpenShift; ad esempio, puoi utilizzare la console web Red Hat OpenShift per creare e gestire i percorsi.
|
|
| NodePort | Porta di un nodo di lavoro che espone l'applicazione sull'indirizzo IP pubblico del nodo di lavoro | Verifica l'accesso pubblico a un'unica applicazione o fornisce l'accesso solo per un breve periodo di tempo. | Crea un servizio NodePort pubblico. |
| NLB v1.0 (+ dominio secondario) | Bilanciamento di carico di base che rende accessibile l'applicazione tramite un indirizzo IP o un sottodominio. | Esponi rapidamente un'applicazione al pubblico con un indirizzo IP o un dominio secondario che supporta la terminazione SSL. | Crea un programma di bilanciamento del carico di rete pubblico (NLB) 1.0 in un cluster singolo o multizona. Facoltativamente, registra un dominio secondario e controlli di integrità. |
| NLB v2.0 (+ dominio secondario) | Bilanciamento del carico DSR che rende accessibile l'applicazione tramite un indirizzo IP o un sottodominio. |
Rendere pubblica un'applicazione che potrebbe ricevere livelli elevati di traffico utilizzando un indirizzo IP o un sottodominio che supporti la terminazione SSL.
|
|
| Controller Ingress | Bilanciamento del carico HTTP(S) che espone l'applicazione con un dominio secondario e utilizza regole di instradamento personalizzate | Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. | Crea una risorsa Ingress per il controller Ingress pubblico predefinito. |
Rete di applicazioni pubblica per i cluster VPC
Per rendere un'applicazione pubblicamente disponibile su Internet in un cluster VPC, scegli un metodo di esposizione delle applicazioni che utilizza instradamenti, programmi di bilanciamento del carico VPC oppure configura Ingress. La seguente tabella descrive ogni possibile metodo, i motivi per cui potresti utilizzarlo e come configurarlo. Per le informazioni di base sui servizi di rete elencati, vedi Descrizione dei tipi di servizio Kubernetes.
Non è possibile utilizzare più metodi di esposizione per una singola app.
| Nome | Metodo di bilanciamento del carico | Caso d'uso | Implementazione |
|---|---|---|---|
| Instradamento | Bilanciamento del carico HTTP(S) che espone l'applicazione con un dominio secondario e utilizza regole di instradamento personalizzate | Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. Scegli questo metodo per continuare a utilizzare la versione nativa di Red Hat OpenShift; ad esempio, puoi utilizzare la console web Red Hat OpenShift per creare e gestire i percorsi. | Creare una rotta utilizzando il controller Ingress pubblico predefinito nei cluster con un endpoint di servizio cloud pubblico, oppure creare una rotta utilizzando un controller Ingress pubblico personalizzato nei cluster con un endpoint di servizio cloud esclusivamente privato. |
| Programma di bilanciamento del carico VPC | Bilanciamento di carico di base che rende accessibile l'applicazione tramite un nome host. | Esponi rapidamente un'applicazione al pubblico con un nome host assegnato dal programma di bilanciamento del carico VPC. | Crea un servizio LoadBalancer pubblico nel tuo cluster. Nella tua VPC viene creato automaticamente un bilanciatore di carico multizona
che assegna un nome host al servizio LoadBalancer della tua app. |
| Ingress | HTTP (S) bilanciamento del carico che rende accessibile l'app tramite un sottodominio e utilizza regole di instradamento personalizzate. | Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. | Creare una risorsa Ingress per il controller Ingress pubblico predefinito nei cluster con un endpoint di servizio cloud pubblico, oppure creare una risorsa Ingress per un controller Ingress pubblico personalizzato nei cluster con un endpoint di servizio cloud esclusivamente privato. |
Pianificazione del bilanciamento del carico esterno privato
Esponi privatamente un'applicazione del tuo cluster solo sulla rete privata.
Quando distribuisci un'applicazione in un cluster Kubernetes in IBM Cloud Kubernetes Service, potresti voler rendere l'applicazione accessibile solo agli utenti e ai servizi che si trovano sulla stessa rete privata del tuo cluster. Il bilanciamento del carico privato è ideale per rendere la tua applicazione disponibile alle richieste provenienti dall'esterno del cluster, senza esporre l'applicazione al pubblico generale. Puoi anche utilizzare il bilanciamento del carico privato per testare l'accesso, l'instradamento delle richieste e altre configurazioni della tua applicazione, prima di esporla al pubblico tramite servizi di rete pubblica.
Ad esempio, poni di aver creato un programma di bilanciamento privato per la tua applicazione. A questo programma di bilanciamento del carico privato possono accedere:
- Qualsiasi pod dello stesso cluster.
- Qualsiasi pod in qualsiasi cluster dello stesso account IBM Cloud.
- Se non sei nell'account IBM Cloud ma ancora dietro il firewall aziendale, qualsiasi sistema tramite una connessione VPN alla sottorete su cui si trova l'IP del programma di bilanciamento del carico.
- Se sei in un account IBM Cloud differente, qualsiasi sistema tramite una connessione VPN alla sottorete su cui si trova l'IP del programma di bilanciamento del carico.
- In un account classico, se hai lo spanning della VLAN o VRF abilitati, qualsiasi sistema connesso a una qualsiasi delle VLAN private nello stesso account IBM Cloud.
- Nei cluster VPC:
- Se il traffico è consentito tra le sottoreti VPC, qualsiasi sistema nello stesso VPC.
- Se il traffico è consentito tra i VPC, qualsiasi sistema che abbia accesso al VPC in cui si trova il cluster.
Rete di applicazioni privata per i cluster classici
Quando i tuoi nodi di lavoro sono connessi sia a una VLAN pubblica che a una VLAN privata, puoi rendere accessibile la tua applicazione da una rete privata solo creando NodePort, NLB, instradamenti privati oppure configurando Ingress. Puoi quindi creare delle politiche Calico per bloccare il traffico pubblico ai servizi.
L'interfaccia di rete pubblica per i nodi di rete è protetta dalle impostazioni della politica di rete Calico predefinite configurate su ogni nodo di lavoro durante la creazione del cluster. Per impostazione predefinita, tutto il traffico di rete in uscita è consentito per tutti i nodi di lavoro. Il traffico di rete in entrata è bloccato, fatta eccezione per alcune porte. Queste porte sono aperte in modo che IBM possa monitorare il traffico di rete e installare automaticamente gli aggiornamenti di sicurezza per il master Kubernetes e per poter stabilire le connessioni ai servizi NodePort, LoadBalancer e Ingress.
Poiché le politiche di rete Calico predefinite consentono il traffico pubblico in entrata a questi servizi, puoi creare politiche Calico per bloccare invece tutto il traffico pubblico verso i servizi. Ad esempio, un servizio NodePort apre una porta su un nodo di lavoro sia sull'indirizzo IP privato che su quello pubblico del nodo di lavoro. Un servizio NLB con un indirizzo IP privato portatile apre una NodePort pubblica su ciascun nodo di lavoro. Devi creare una politica di rete preDNAT Calico per bloccare le NodePort pubbliche.
Controlla i seguenti metodi per la rete di applicazioni privata:
| Nome | Metodo di bilanciamento del carico | Caso d'uso | Implementazione |
|---|---|---|---|
| Instradamento | Bilanciamento del carico HTTP(S) che espone l'applicazione con un dominio secondario e utilizza regole di instradamento personalizzate | Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. Scegli questo metodo per continuare a utilizzare la versione nativa di Red Hat OpenShift; ad esempio, puoi utilizzare la console web Red Hat OpenShift per creare e gestire i percorsi. |
|
| NodePort | Porta di un nodo di lavoro che espone l'applicazione sull'indirizzo IP privato del nodo di lavoro | Verifica l'accesso privato a un'unica applicazione o fornisce l'accesso solo per un breve periodo di tempo. |
|
| NLB 1.0 | Bilanciamento del carico di base che espone l'applicazione con un indirizzo IP privato | Esponi rapidamente un'applicazione su una rete privata con un indirizzo IP privato. |
|
| NLB v2.0 | Bilanciamento del carico DSR che espone l'applicazione con un indirizzo IP privato | Esponi un'applicazione che potrebbe ricevere livelli elevati di traffico verso una rete privata con un indirizzo IP. |
|
| Ingress | Bilanciamento del carico HTTP(S) che espone l'applicazione con un dominio secondario e utilizza regole di instradamento personalizzate | Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. | Vedi Esposizione pubblica di applicazioni con Ingress |
Rete di applicazioni privata per i cluster VPC
Per rendere un'app disponibile solo su una rete privata all'interno di un cluster VPC, scegli un modello di distribuzione con bilanciamento del carico in base alla configurazione degli endpoint di servizio del tuo cluster: endpoint di servizio su cloud pubblico e privato oppure solo endpoint di servizio su cloud privato. Per ogni configurazione dell'endpoint del servizio, la seguente tabella descrive ogni possibile metodo di esposizione delle applicazioni, i motivi per cui potresti utilizzarlo e come configurarlo.
| Nome | Metodo di bilanciamento del carico | Caso d'uso | Implementazione |
|---|---|---|---|
| Instradamento | Bilanciamento del carico HTTP(S) che espone l'applicazione con un dominio secondario e utilizza regole di instradamento personalizzate | Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. Scegli questo metodo per continuare a utilizzare la versione nativa di Red Hat OpenShift; ad esempio, puoi utilizzare la console web Red Hat OpenShift per creare e gestire i percorsi. | Crea un controller Ingress utilizzando il controllore Ingress privato predefinito nei cluster solo con un endpoint del servizio cloud privato o crea una rotta utilizzando un controllore Ingress privato personalizzato nei cluster con un endpoint del servizio cloud pubblico. |
| NodePort | Porta di un nodo di lavoro che espone l'applicazione sull'indirizzo IP privato del nodo di lavoro | Verifica l'accesso privato a un'unica applicazione o fornisce l'accesso solo per un breve periodo di tempo. | Crea un servizio NodePort privato. |
| Programma di bilanciamento del carico VPC | Bilanciamento del carico di base che espone l'applicazione con un nome host privato | Esponi rapidamente un'applicazione a una rete privata con un nome host privato assegnato dal programma di bilanciamento del carico VPC. | Crea un servizio LoadBalancer privato nel tuo cluster. Un programma di bilanciamento del carico VPC multizonale viene creato automaticamente nel tuo VPC che assegna
un nome host al tuo servizio LoadBalancer per la tua applicazione. |
| Ingress | Bilanciamento del carico HTTP(S) che espone l'applicazione con un dominio secondario e utilizza regole di instradamento personalizzate | Implementa le regole di instradamento personalizzate e la terminazione SSL per più applicazioni. | Creare una risorsa Ingress per il controller Ingress privato predefinito nei cluster che dispongono solo di un endpoint di servizio cloud privato, oppure creare una risorsa Ingress per un controller Ingress privato personalizzato nei cluster che dispongono di un endpoint di servizio cloud pubblico. |