Udostępnij za pośrednictwem


Uwidacznianie usługi AKS za pośrednictwem protokołu HTTP lub HTTPS przy użyciu usługi Application Gateway

W tym artykule przedstawiono użycie zasobów przychodzących platformy Kubernetes w celu uwidocznienia przykładowej usługi Azure Kubernetes Service (AKS) za pośrednictwem usługi aplikacja systemu Azure Gateway za pośrednictwem protokołu HTTP lub HTTPS.

Napiwek

Rozważ użycie usługi Application Gateway dla kontenerów dla rozwiązania ruchu przychodzącego Kubernetes.

Wymagania wstępne

  • Zainstalowany ingress-azure pakiet Helm:
    • Wdrożenie greenfield: jeśli zaczynasz od podstaw, zapoznaj się z tymi instrukcjami instalacji, które przedstawiają kroki wdrażania klastra usługi AKS za pomocą usługi Application Gateway i instalowania kontrolera ruchu przychodzącego usługi Application Gateway (AGIC) w klastrze usługi AKS.
    • Wdrożenie rozwiązania Brownfield: jeśli masz istniejący klaster usługi AKS i wdrożenie usługi Application Gateway, zapoznaj się z tymi instrukcjami, aby zainstalować usługę AGIC w klastrze usługi AKS.
  • Certyfikat x509 i jego klucz prywatny, jeśli chcesz użyć protokołu HTTPS w tej aplikacji.

Wdrażanie aplikacji elementu guestbook

Aplikacja guestbook to kanoniczna aplikacja Kubernetes składająca się z frontonu internetowego interfejsu użytkownika, zaplecza i bazy danych Redis.

Domyślnie guestbook aplikacja jest uwidaczniana za pośrednictwem usługi o nazwie frontend na porcie 80. Bez zasobu ruchu przychodzącego Kubernetes usługa nie jest dostępna spoza klastra usługi AKS. Używasz aplikacji i konfigurujesz zasoby ruchu przychodzącego w celu uzyskania dostępu do aplikacji za pośrednictwem protokołów HTTP i HTTPS.

Aby wdrożyć aplikację guestbook :

  1. Pobierz guestbook-all-in-one.yaml z tej strony usługi GitHub.

  2. Wdróż guestbook-all-in-one.yaml w klastrze usługi AKS, uruchamiając następujące polecenie:

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

Uwidacznianie usług za pośrednictwem protokołu HTTP

Aby uwidocznić aplikację guestbook , użyj następującego zasobu ruchu przychodzącego:

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

Ten ruch przychodzący uwidacznia frontend usługę guestbook-all-in-one wdrożenia jako domyślne zaplecze wdrożenia usługi Application Gateway.

Zapisz poprzedni zasób ruchu przychodzącego jako ing-guestbook.yaml:

  1. Wdróż ing-guestbook.yaml , uruchamiając następujące polecenie:

    kubectl apply -f ing-guestbook.yaml
    
  2. Sprawdź dziennik kontrolera ruchu przychodzącego pod kątem stanu wdrożenia.

guestbook Teraz aplikacja powinna być dostępna. Dostępność można sprawdzić, odwiedzając publiczny adres wdrożenia usługi Application Gateway.

Uwidacznianie usług za pośrednictwem protokołu HTTPS

Bez określonej nazwy hosta

Jeśli nie określisz nazwy hosta, guestbook usługa będzie dostępna we wszystkich nazwach hostów wskazujących wdrożenie usługi Application Gateway.

  1. Przed wdrożeniem zasobu ruchu przychodzącego utwórz wpis tajny Kubernetes do hostowania certyfikatu i klucza prywatnego:

    kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
    
  2. Zdefiniuj następujący zasób ruchu przychodzącego. secretName W sekcji zastąp <guestbook-secret-name> ciąg nazwą wpisu tajnego.

    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. Zapisz zasób ruchu przychodzącego w pliku o nazwie ing-guestbook-tls.yaml.

  4. Wdróż ing-guestbook-tls.yaml , uruchamiając następujące polecenie:

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. Sprawdź dziennik kontrolera ruchu przychodzącego pod kątem stanu wdrożenia.

guestbook Teraz aplikacja jest dostępna zarówno w protokole HTTP, jak i HTTPS.

Z określoną nazwą hosta

Możesz również określić nazwę hosta w zasobie ruchu przychodzącego na multipleks konfiguracje i usługi TLS. Po określeniu nazwy guestbook hosta usługa jest dostępna tylko na określonym hoście.

  1. Zdefiniuj następujący zasób ruchu przychodzącego. secretName W sekcji zastąp <guestbook-secret-name> ciąg nazwą wpisu tajnego. W sekcjach hosts i host zastąp <guestbook.contoso.com> ciąg nazwą hosta.

    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. Wdróż ing-guestbook-tls-sni.yaml , uruchamiając następujące polecenie:

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. Sprawdź dziennik kontrolera ruchu przychodzącego pod kątem stanu wdrożenia.

guestbook Teraz aplikacja jest dostępna zarówno na protokole HTTP, jak i HTTPS, tylko na określonym hoście.

Integracja z innymi usługami

Użyj następującego zasobu ruchu przychodzącego, aby dodać ścieżki i przekierować te ścieżki do innych usług:

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