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: