Een ingangscontroller implementeren
Van toepassing op: AKS op Azure Stack HCI 22H2, AKS op Windows Server
Een toegangsbeheerobjectcontroller is een Kubernetes-resource die externe toegang tot services binnen het Kubernetes-cluster toestaat. Met inkomend verkeer kan een operator een service beschikbaar maken voor externe netwerkaanvragen, meestal HTTP of HTTPS. U configureert de toegang door een set regels te maken waarmee de binnenkomende verbindingen worden gedefinieerd die specifieke services bereiken.
Een toegangsbeheerobjectcontroller is software die configureerbare verkeersroutering biedt voor Kubernetes-services. Kubernetes-resources voor inkomend verkeer worden gebruikt om de regels en routes voor uitgaand verkeer worden geconfigureerd voor individuele Kubernetes-services. Met behulp van een ingangscontroller en regels voor inkomend verkeer kunt u één IP-adres gebruiken om verkeer naar meerdere services in een Kubernetes-cluster te routeren.
Nadat u de controller in uw omgeving hebt geïmplementeerd, kunt u het toegangsbeheerobjectmanifest maken en implementeren. Op dit moment gebruikt u inkomend verkeer in AKS Arc met behulp van de NGINX-ingangscontroller. Zie Installatie met manifesten voor informatie over het installeren, configureren en gebruiken van de NGINX-ingangscontroller.
Inkomend verkeer verschilt van nodePort en LoadBalancer op een unieke manier en verbetert de verkeersroutering naar uw cluster op een goedkopere manier. Als u NodePort-services definieert, worden er talloze willekeurige poorten gemaakt en worden de kosten voor cloudresources groter dan u wilt. Wanneer u een ingangscontroller definieert, voegt u de regels voor verkeersroutering samen in één resource die wordt uitgevoerd als onderdeel van uw cluster. Met NodePort en LoadBalancer kunt u een service beschikbaar maken door die waarde op te geven in het type service, terwijl inkomend verkeer een onafhankelijke resource voor de service is. Inkomend verkeer wordt afzonderlijk van de service gedefinieerd, gemaakt en vernietigd.
U kunt inkomend verkeer op verschillende manieren implementeren, afhankelijk van de use-case. Inkomende resources worden gebruikt om de configuratie binnen de ingangscontroller bij te werken om te bepalen hoe deze werkt.
Toegangsbeheerobject gebruiken om services beschikbaar te maken via extern bereikbare URL's
Een voorbeeld van het gebruik van inkomend verkeer wordt weergegeven in het volgende YAML-manifest. Het ingress.class
wordt weergegeven in de metagegevens (in dit voorbeeld ingress-nginx
) en met deze instelling kan de NGINX-ingangscontroller weten wat er moet worden bewaakt en bijgewerkt:
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
De spec
sectie bevat informatie over wat er is geconfigureerd. In dit voorbeeld wordt een regel (of set regels) gedefinieerd en bevat de volgende items:
- De host waarop de regels worden toegepast.
- Of het verkeer NU HTTP of HTTPS is.
- Het bewaakte pad.
- De interne service en poort waar het verkeer wordt verzonden.
Inkomend verkeer verdelen
In het volgende voorbeeld wordt een ander pad toegevoegd aan het manifest dat taakverdeling tussen verschillende back-ends van een toepassing toestaat. In dit voorbeeld kan de operator verkeer splitsen en verzenden naar verschillende service-eindpunten en implementaties op basis van het beschreven pad. Achter elk pad bevinden zich een implementatie en een service, wat handig is voor eindpunten die meer verkeer ontvangen:
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
Inkomend verkeer gebruiken om HTTP-verkeer te routeren naar meerdere hostnamen op hetzelfde IP-adres
U kunt voor elke host een andere toegangsbeheerresource gebruiken, waarmee u het verkeer met meerdere hostnamen kunt beheren. Als u een andere bron voor inkomend verkeer wilt gebruiken, wijst u meerdere hostnamen aan op hetzelfde openbare IP-adres dat wordt gebruikt voor de LoadBalancer-service. In het volgende manifestbestand is een productieversie van hello-world
toegevoegd. De hostnaam prod.example.com
wordt gebruikt en verkeer wordt naar de nieuwe service hello-world-prod
verwezen. Verkeer komt binnen via het IP-adres van de load balancer en wordt gerouteerd op basis van de hostnaam en het pad dat u opgeeft:
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
Volgende stappen
Zie de volgende koppelingen voor meer informatie: