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

Te samouczki pomagają zilustrować użycie zasobów ruchu przychodzącego kubernetes w celu uwidocznienia przykładowej usługi Kubernetes za pośrednictwem bramy aplikacja systemu Azure za pośrednictwem protokołu HTTP lub HTTPS.

Wymagania wstępne

  • ingress-azure Zainstalowany 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 bramy aplikacji w klastrze usługi AKS.
    • Wdrożenie rozwiązania Brownfield: jeśli masz istniejący klaster usługi AKS i usługę Application Gateway, zapoznaj się z tymi instrukcjami, aby zainstalować kontroler ruchu przychodzącego bramy aplikacji w klastrze usługi AKS.
  • Jeśli chcesz używać protokołu HTTPS w tej aplikacji, potrzebujesz certyfikatu x509 i jego klucza prywatnego.

Wdrażanie guestbook aplikacji

Aplikacja guestbook to kanoniczna aplikacja Kubernetes, która składa 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żywamy aplikacji i konfigurujemy zasoby ruchu przychodzącego w celu uzyskania dostępu do aplikacji za pośrednictwem protokołów HTTP i HTTPS.

Aby wdrożyć aplikację guestbook, wykonaj poniższe instrukcje.

  1. Pobierz guestbook-all-in-one.yaml z tego miejsca
  2. Wdróż guestbook-all-in-one.yaml w klastrze usługi AKS, uruchamiając polecenie
kubectl apply -f guestbook-all-in-one.yaml

guestbook Teraz aplikacja została wdrożona.

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

Aby uwidocznić aplikację book gościa, 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 usługi Application Gateway.

Zapisz powyższy zasób ruchu przychodzącego jako ing-guestbook.yaml.

  1. Wdróż ing-guestbook.yaml , uruchamiając 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 usługi Application Gateway.

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

Bez określonej nazwy hosta

Bez określania nazwy hosta usługa elementu guestbook jest dostępna we wszystkich nazwach hostów wskazujących bramę aplikacji.

  1. Przed wdrożeniem ruchu przychodzącego należy utworzyć wpis tajny kubernetes do hostowania certyfikatu i klucza prywatnego. Wpis tajny kubernetes można utworzyć, uruchamiając polecenie

    kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
    
  2. Zdefiniuj następujący ruch przychodzący. W ruchu przychodzącym określ nazwę wpisu tajnego secretName w sekcji .

    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
    

    Uwaga

    Zastąp element <guestbook-secret-name> w powyższym zasobie ruchu przychodzącego nazwą wpisu tajnego. Zapisz powyższy zasób ruchu przychodzącego w nazwie ing-guestbook-tls.yamlpliku .

  3. Wdróż element ing-guestbook-tls.yaml, uruchamiając polecenie

    kubectl apply -f ing-guestbook-tls.yaml
    
  4. 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żna również określić nazwę hosta na ruchu przychodzącym w celu multipleksowania konfiguracji i usług TLS. Określając nazwę hosta, usługa elementu guestbook jest dostępna tylko na określonym hoście.

  1. Zdefiniuj następujący ruch przychodzący. W ruchu przychodzącym określ nazwę wpisu tajnego w secretName sekcji i zastąp odpowiednio nazwę hosta w hosts sekcji.

    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 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 (<guestbook.contoso.com> w tym przykładzie).

Integracja z innymi usługami

Następujący ruch przychodzący umożliwia dodanie innych ścieżek do tego ruchu przychodzącego i przekierowanie tych ścieżek 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