Dela via


Exponera en AKS-tjänst via HTTP eller HTTPS med hjälp av Application Gateway

Den här artikeln illustrerar användningen av Kubernetes-ingressresurser för att exponera en exempeltjänst för Azure Kubernetes Service (AKS) via Azure Application Gateway via HTTP eller HTTPS.

Dricks

Överväg Application Gateway för containrar för din Kubernetes-ingresslösning.

Förutsättningar

  • Ett installerat ingress-azure Helm-diagram:
    • Greenfield-distribution: Om du börjar från början läser du de här installationsanvisningarna, som beskriver steg för att distribuera ett AKS-kluster med Application Gateway och installera Application Gateway Ingress Controller (AGIC) i AKS-klustret.
    • Distribution av Brownfield: Om du har ett befintligt AKS-kluster och en Application Gateway-distribution läser du de här anvisningarna för att installera AGIC i AKS-klustret.
  • Ett x509-certifikat och dess privata nyckel om du vill använda HTTPS i det här programmet.

Distribuera gästboksprogrammet

Programmet guestbook är ett kanoniskt Kubernetes-program som består av en klientdel för webbgränssnittet, en serverdel och en Redis-databas.

Som standard guestbook exponerar programmet via en tjänst med namnet frontend på porten 80. Utan en Kubernetes-ingressresurs är tjänsten inte tillgänglig utanför AKS-klustret. Du använder programmet och konfigurerar inkommande resurser för att komma åt programmet via HTTP och HTTPS.

Så här distribuerar guestbook du programmet:

  1. Ladda ned guestbook-all-in-one.yaml från den här GitHub-sidan.

  2. Distribuera guestbook-all-in-one.yaml till ditt AKS-kluster genom att köra det här kommandot:

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

Exponera tjänster via HTTP

Om du vill exponera guestbook programmet använder du följande ingressresurs:

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

Den här ingressen frontend exponerar distributionstjänsten guestbook-all-in-one som en standardserverdel för Application Gateway-distributionen.

Spara föregående ingressresurs som ing-guestbook.yaml:

  1. Distribuera ing-guestbook.yaml genom att köra det här kommandot:

    kubectl apply -f ing-guestbook.yaml
    
  2. Kontrollera distributionsstatusen i loggen för ingresskontrollanten.

guestbook Nu ska programmet vara tillgängligt. Du kan kontrollera tillgängligheten genom att besöka den offentliga adressen för Application Gateway-distributionen.

Exponera tjänster via HTTPS

Utan ett angivet värdnamn

Om du inte anger ett värdnamn guestbook är tjänsten tillgänglig för alla värdnamn som pekar på Application Gateway-distributionen.

  1. Innan du distribuerar ingressresursen skapar du en Kubernetes-hemlighet som värd för certifikatet och den privata nyckeln:

    kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
    
  2. Definiera följande ingressresurs. I avsnittet secretName ersätter du <guestbook-secret-name> med namnet på din hemlighet.

    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. Lagra ingressresursen i en fil med namnet ing-guestbook-tls.yaml.

  4. Distribuera ing-guestbook-tls.yaml genom att köra det här kommandot:

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. Kontrollera distributionsstatusen i loggen för ingresskontrollanten.

Nu är programmet guestbook tillgängligt på både HTTP och HTTPS.

Med ett angivet värdnamn

Du kan också ange värdnamnet på ingressresursen för multiplex-TLS-konfigurationer och -tjänster. När du anger ett värdnamn guestbook är tjänsten endast tillgänglig på den angivna värden.

  1. Definiera följande ingressresurs. I avsnittet secretName ersätter du <guestbook-secret-name> med namnet på din hemlighet. I avsnitten hosts och host ersätter du <guestbook.contoso.com> med värdnamnet.

    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. Distribuera ing-guestbook-tls-sni.yaml genom att köra det här kommandot:

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. Kontrollera distributionsstatusen i loggen för ingresskontrollanten.

Nu är programmet guestbook tillgängligt på både HTTP och HTTPS, endast på den angivna värden.

Integrera med andra tjänster

Använd följande ingressresurs för att lägga till sökvägar och omdirigera dessa sökvägar till andra tjänster:

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