Condividi tramite


Distribuire un controller di ingresso

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: