Delen via


Een AKS-service beschikbaar maken via HTTP of HTTPS met behulp van Application Gateway

Dit artikel illustreert het gebruik van Kubernetes-toegangsbeheerbronnen om een voorbeeldservice van Azure Kubernetes Service (AKS) beschikbaar te maken via Azure-toepassing Gateway via HTTP of HTTPS.

Tip

Overweeg Application Gateway for Containers voor uw Kubernetes-oplossing voor inkomend verkeer.

Vereisten

  • Een geïnstalleerde ingress-azure Helm-grafiek:
    • Greenfield-implementatie: Als u helemaal opnieuw begint, raadpleegt u deze installatie-instructies, waarin de stappen voor het implementeren van een AKS-cluster met Application Gateway worden beschreven en de AGIC (Application Gateway Ingress Controller) op het AKS-cluster worden geïnstalleerd.
    • Brownfield-implementatie: Als u een bestaand AKS-cluster en Application Gateway-implementatie hebt, raadpleegt u deze instructies voor het installeren van AGIC op het AKS-cluster.
  • Een x509-certificaat en de bijbehorende persoonlijke sleutel als u HTTPS voor deze toepassing wilt gebruiken.

De gastboektoepassing implementeren

De guestbook toepassing is een canonieke Kubernetes-toepassing die bestaat uit een front-end voor de webgebruikersinterface, een back-end en een Redis-database.

De toepassing wordt standaard guestbook beschikbaar gemaakt via een service met de naam frontend op de poort 80. Zonder een Kubernetes-toegangsresource is de service niet toegankelijk van buiten het AKS-cluster. U gebruikt de toepassing en stelt toegangsbeheerobjectbronnen in voor toegang tot de toepassing via HTTP en HTTPS.

De toepassing implementeren guestbook :

  1. Download guestbook-all-in-one.yaml vanaf deze GitHub-pagina.

  2. Implementeer guestbook-all-in-one.yaml in uw AKS-cluster door deze opdracht uit te voeren:

    kubectl apply -f guestbook-all-in-one.yaml
    

Services beschikbaar maken via HTTP

Gebruik de volgende toegangsbeheerobjectresource om de guestbook toepassing beschikbaar te maken:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: guestbook
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: frontend
          servicePort: 80

Met dit toegangsbeheerobject wordt de frontend service van de guestbook-all-in-one implementatie weergegeven als een standaardback-end van de Application Gateway-implementatie.

Sla de voorgaande toegangsbeheerresource op als ing-guestbook.yaml:

  1. Implementeren ing-guestbook.yaml door deze opdracht uit te voeren:

    kubectl apply -f ing-guestbook.yaml
    
  2. Controleer het logboek van de ingangscontroller voor de implementatiestatus.

guestbook De toepassing moet nu beschikbaar zijn. U kunt de beschikbaarheid controleren door naar het openbare adres van de Application Gateway-implementatie te gaan.

Services beschikbaar maken via HTTPS

Zonder een opgegeven hostnaam

Als u geen hostnaam opgeeft, is de guestbook service beschikbaar op alle hostnamen die verwijzen naar de Application Gateway-implementatie.

  1. Voordat u de toegangsbeheerobjectresource implementeert, maakt u een Kubernetes-geheim om het certificaat en de persoonlijke sleutel te hosten:

    kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
    
  2. Definieer de volgende toegangsbeheerobjectresource. Vervang in de secretName sectie door <guestbook-secret-name> de naam van uw geheim.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: guestbook
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
    spec:
      tls:
        - secretName: <guestbook-secret-name>
      rules:
      - http:
          paths:
          - backend:
              serviceName: frontend
              servicePort: 80
    
  3. Sla de toegangsbeheerobjectresource op in een bestand met de naam ing-guestbook-tls.yaml.

  4. Implementeren ing-guestbook-tls.yaml door deze opdracht uit te voeren:

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. Controleer het logboek van de ingangscontroller voor de implementatiestatus.

guestbook De toepassing is nu beschikbaar op zowel HTTP als HTTPS.

Met een opgegeven hostnaam

U kunt ook de hostnaam op de ingangsresource opgeven voor multiplexe TLS-configuraties en -services. Wanneer u een hostnaam opgeeft, is de guestbook service alleen beschikbaar op de opgegeven host.

  1. Definieer de volgende toegangsbeheerobjectresource. Vervang in de secretName sectie door <guestbook-secret-name> de naam van uw geheim. Vervang in de hosts secties host door <guestbook.contoso.com> uw hostnaam.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: guestbook
      annotations:
        kubernetes.io/ingress.class: azure/application-gateway
    spec:
      tls:
        - hosts:
          - <guestbook.contoso.com>
          secretName: <guestbook-secret-name>
      rules:
      - host: <guestbook.contoso.com>
        http:
          paths:
          - backend:
              serviceName: frontend
              servicePort: 80
    
  2. Implementeren ing-guestbook-tls-sni.yaml door deze opdracht uit te voeren:

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. Controleer het logboek van de ingangscontroller voor de implementatiestatus.

guestbook De toepassing is nu beschikbaar op zowel HTTP als HTTPS, alleen op de opgegeven host.

Integreren met andere services

Gebruik de volgende bron voor inkomend verkeer om paden toe te voegen en deze paden om te leiden naar andere services:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: guestbook
  annotations:
    kubernetes.io/ingress.class: azure/application-gateway
spec:
  rules:
  - http:
      paths:
      - path: </other/*>
        backend:
          serviceName: <other-service>
          servicePort: 80
       - backend:
          serviceName: frontend
          servicePort: 80