Dela via


Distribuera en ingresskontrollant

Gäller för: AKS på Azure Local 22H2, AKS på Windows Server

En ingresskontrollant är en Kubernetes-resurs som ger extern åtkomst till tjänster i Kubernetes-klustret. Med ingress kan en operatör exponera en tjänst för externa nätverksbegäranden, vanligtvis HTTP eller HTTPS. Du konfigurerar åtkomst genom att skapa en uppsättning regler som definierar inkommande anslutningar som når specifika tjänster.

En ingresskontrollant är programvara som tillhandahåller konfigurerbar trafikroutning för Kubernetes-tjänster. Kubernetes ingress-resurser används för att konfigurera inkommande regler och vägar för enskilda Kubernetes-tjänster. Genom att använda en ingresskontrollant och ingressregler kan du använda en enda IP-adress för att dirigera trafik till flera tjänster i ett Kubernetes-kluster.

När du har distribuerat kontrollanten i din miljö kan du sedan skapa och distribuera ingressmanifestet. För närvarande använder du ingress i AKS Arc med hjälp av NGINX-ingresskontrollanten. Information om hur du installerar, konfigurerar och använder NGINX-ingresskontrollanten finns i Installation med manifest.

Ingress skiljer sig från NodePort och LoadBalancer på ett unikt sätt, och det förbättrar trafikroutningen till klustret på ett mindre kostsamt sätt. Om du definierar NodePort-tjänster skapas flera slumpmässiga portar, och om du definierar LoadBalancer-tjänster ökar kostnaden för molnresurser mer än du kanske vill. När du definierar en ingresskontrollant konsoliderar du trafikdirigeringsreglerna till en enda resurs som körs som en del av klustret. Med NodePort och LoadBalancer kan du exponera en tjänst genom att ange det värdet i tjänstens typ, medan ingress är en oberoende resurs för tjänsten. Ingress definieras, skapas och förstörs separat från tjänsten.

Du kan distribuera ingress på olika sätt beroende på användningsfallet. Ingressresurser används för att uppdatera konfigurationen i ingresskontrollanten för att avgöra hur den fungerar.

Använda ingress för att exponera tjänster via url:er som kan nås externt

Ett exempel på hur du använder ingress visas i följande YAML-manifest. Visas ingress.class i metadata (i det här exemplet ingress-nginx), och med den här inställningen kan NGINX-ingresskontrollanten veta vad den behöver för att övervaka och uppdatera:

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

Avsnittet spec innehåller information om vad som har konfigurerats. I det här exemplet definieras en regel (eller uppsättning regler) och innehåller följande objekt:

  • Den värd som reglerna tillämpas på.
  • Om trafiken är HTTP eller HTTPS.
  • Den övervakade sökvägen.
  • Den interna tjänsten och porten där trafiken skickas.

Använda inkommande trafik för att belastningsutjäsa trafik

I följande exempel läggs en annan sökväg till i manifestet som tillåter belastningsutjämning mellan olika serverdelar i ett program. I det här exemplet kan operatorn dela trafik och skicka den till olika tjänstslutpunkter och distributioner baserat på sökvägen som beskrivs. Bakom varje sökväg finns en distribution och en tjänst, vilket är användbart för slutpunkter som tar emot mer trafik:

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

Använd ingress för att dirigera HTTP-trafik till flera värdnamn på samma IP-adress

Du kan använda en annan ingressresurs för varje värd, vilket gör att du kan styra trafiken med flera värdnamn. Om du vill använda en annan ingressresurs pekar du flera värdnamn på samma offentliga IP-adress som används för LoadBalancer-tjänsten. I följande manifestfil lades en produktionsversion av hello-world till. Värdnamnet prod.example.com används och trafiken pekar på den nya tjänsten hello-world-prod. Trafiken kommer in via lastbalanserarens IP-adress och dirigeras baserat på värdnamnet och sökvägen som du anger:

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

Nästa steg

Mer information finns på följande länkar: