Delen via


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-prodverwezen. 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: