Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: AKS su Windows Server
Un controller di ingresso è una risorsa Kubernetes che consente l'accesso esterno ai servizi all'interno del cluster Kubernetes. L'ingresso consente a un operatore di esporre un servizio a richieste di rete esterne, in genere HTTP o HTTPS. Per configurare l'accesso, creare un set di regole che definiscono le connessioni in ingresso che raggiungono servizi specifici.
Un controller di ingresso è un software che fornisce il routing del traffico configurabile per i servizi Kubernetes. Le risorse di ingresso Kubernetes vengono usate per configurare le regole di ingresso e le route per i singoli servizi Kubernetes. Usando un controller per l'ingresso e regole di ingresso, è possibile usare un singolo indirizzo IP per instradare il traffico verso più servizi in un cluster Kubernetes.
Dopo aver distribuito il controller nell'ambiente, è possibile creare e distribuire il manifesto in ingresso. Attualmente si usa l'ingresso in AKS Arc usando il controller di ingresso NGINX. Per informazioni su come installare, configurare e usare il controller di ingresso NGINX, vedere Installazione con manifesti.
Ingress differisce da NodePort e LoadBalancer in modo univoco e migliora il routing del traffico verso il cluster in modo meno costoso. La definizione dei servizi NodePort crea numerose porte casuali e la definizione dei servizi LoadBalancer aumenta il costo per le risorse cloud più di quanto si voglia. Quando si definisce un controller di ingresso, si consolidano le regole di routing del traffico in una singola risorsa eseguita come parte del cluster. NodePort e LoadBalancer consentono di esporre un servizio specificando tale valore nel tipo del servizio, mentre l'ingresso è una risorsa indipendente per il servizio. Ingress è definito, creato e distrutto separatamente dal servizio.
È possibile distribuire l'ingresso in vari modi a seconda del caso d'uso. Le risorse di ingresso vengono usate per aggiornare la configurazione all'interno del controller di ingresso per determinare come funziona.
Usare il traffico in ingresso per esporre i servizi tramite URL raggiungibili esternamente
Un esempio di utilizzo dell'ingress è illustrato nel seguente manifest YAML. L'oggetto ingress.class
viene visualizzato all'interno dei metadati (in questo esempio, ingress-nginx
) e questa impostazione consente al controller di ingresso NGINX di sapere cosa deve monitorare e aggiornare:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world
port:
number: 8080
La spec
sezione fornisce informazioni su ciò che è configurato. In questo esempio viene definita una regola (o un set di regole) e include gli elementi seguenti:
- Host a cui vengono applicate le regole.
- Indica se il traffico è HTTP o HTTPS.
- Percorso monitorato.
- Servizio interno e porta in cui viene inviato il traffico.
Usare l'ingresso per bilanciare il carico del traffico
Nell'esempio seguente viene aggiunto un altro percorso al manifesto che consente il bilanciamento del carico tra diversi back-end di un'applicazione. In questo esempio l'operatore può suddividere il traffico e inviarlo a diversi endpoint di servizio e distribuzioni in base al percorso descritto. Dietro ogni percorso c'è una distribuzione e un servizio, che è utile per gli endpoint che ricevono più traffico:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-and-earth
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world
port:
number: 8080
- path: /hello-earth
pathType: Prefix
backend:
service:
name: hello-earth
port:
number: 8080
Usare ingress per instradare il traffico HTTP mediante più nomi host nello stesso indirizzo IP
È possibile usare una risorsa di ingresso diversa per ogni host, che consente di controllare il traffico con più nomi host. Per usare una risorsa di ingresso diversa, puntare più nomi host allo stesso indirizzo IP pubblico usato per il servizio LoadBalancer. Nel file manifesto seguente è stata aggiunta una versione di produzione di hello-world
. Viene usato il nome prod.example.com
host e il traffico punta al nuovo servizio hello-world-prod
. Il traffico passa attraverso l'indirizzo IP del servizio di bilanciamento del carico e viene indirizzato in base al nome host e al percorso specificato:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: hello-world-prod
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: test.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world-test
port:
number: 8080
- host: prod.example.com
http:
paths:
- path: /hello-world
pathType: Prefix
backend:
service:
name: hello-world-prod
port:
number: 8080
Passaggi successivi
Per altre informazioni, consultare i collegamenti seguenti: