Zveřejnění služby AKS přes PROTOKOL HTTP nebo HTTPS pomocí služby Application Gateway

Tento článek ukazuje použití prostředků příchozího přenosu dat Kubernetes k zveřejnění ukázkové služby Azure Kubernetes Service (AKS) prostřednictvím služby Azure Application Gateway přes HTTP nebo HTTPS.

Tip

Zvažte službu Application Gateway pro kontejnery pro vaše řešení příchozího přenosu dat Kubernetes.

Prerequisites

  • Nainstalovaný ingress-azure Helm chart:
    • Nasazení Greenfieldu: Pokud začínáte úplně od začátku, projděte si tyto pokyny k instalaci, které popisují postup nasazení clusteru AKS se službou Application Gateway a instalaci kontroleru příchozího přenosu dat služby Application Gateway (AGIC) do clusteru AKS.
    • Nasazení Brownfieldu: Pokud máte existující cluster AKS a nasazení služby Application Gateway, přečtěte si tyto pokyny k instalaci AGIC v clusteru AKS.
  • Pokud chcete pro tuto aplikaci použít HTTPS, certifikát x509 a jeho privátní klíč.

Nasazení aplikace guestbooku

Aplikace guestbook je kanonická aplikace Kubernetes, která se skládá z front-endu webového uživatelského rozhraní, back-endu a databáze Redis.

Ve výchozím nastavení guestbook zpřístupňuje aplikaci prostřednictvím služby s názvem frontend na portu 80. Bez prostředku příchozího přenosu dat Kubernetes není služba přístupná mimo cluster AKS. Použijete aplikaci a nastavíte prostředky příchozího přenosu dat pro přístup k aplikaci prostřednictvím protokolu HTTP a HTTPS.

guestbook Nasazení aplikace:

  1. Stáhněte si guestbook-all-in-one.yamlz této stránky GitHubu.

  2. Nasazení guestbook-all-in-one.yaml do clusteru AKS spuštěním tohoto příkazu:

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

Zveřejnění služeb přes PROTOKOL HTTP

Pokud chcete aplikaci guestbook zpřístupnit, použijte následující ingress zdroj:

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

Tento ingres zpřístupňuje službu frontend z deploymentu guestbook-all-in-one jako výchozí backend nasazení Application Gateway.

Uložte předchozí prostředek příchozího přenosu dat jako ing-guestbook.yaml:

  1. Nasazení ing-guestbook.yaml spuštěním tohoto příkazu:

    kubectl apply -f ing-guestbook.yaml
    
  2. Zkontrolujte protokol ingress kontroléru pro stav nasazení.

guestbook Aplikace by teď měla být dostupná. Dostupnost můžete zkontrolovat tak, že navštívíte veřejnou adresu nasazení služby Application Gateway.

Zveřejnění služeb přes HTTPS

Bez zadaného názvu hostitele

Pokud nezadáte název hostitele, guestbook bude služba dostupná ve všech názvech hostitelů, které odkazují na nasazení služby Application Gateway.

  1. Před nasazením prostředku příchozího přenosu dat vytvořte tajný klíč Kubernetes pro hostování certifikátu a privátního klíče:

    kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
    
  2. Definujte následující prostředek příchozího přenosu dat. secretName V části nahraďte <guestbook-secret-name> názvem tajného kódu.

    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. Uložte prostředek příchozího přenosu dat do souboru s názvem ing-guestbook-tls.yaml.

  4. Nasazení ing-guestbook-tls.yaml spuštěním tohoto příkazu:

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. Zkontrolujte protokol ingress kontroléru pro stav nasazení.

guestbook Aplikace je teď dostupná na HTTP i HTTPS.

Se zadaným názvem hostitele

Můžete také zadat název hostitele pro prostředek ingress k multiplexování konfigurací TLS a služeb. Když zadáte název hostitele, guestbook bude služba dostupná pouze na zadaném hostiteli.

  1. Definujte následující prostředek příchozího přenosu dat. secretName V části nahraďte <guestbook-secret-name> názvem tajného kódu. V částech hosts a host nahraďte <guestbook.contoso.com> názvem hostitele.

    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. Nasazení ing-guestbook-tls-sni.yaml spuštěním tohoto příkazu:

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. Zkontrolujte protokol ingress kontroléru pro stav nasazení.

guestbook Aplikace je teď dostupná na http i HTTPS, pouze na zadaném hostiteli.

Integrace s ostatními službami

Pomocí následujícího ingress prostředku přidejte cesty a přesměrujte je na jiné služby:

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