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
:
Pobierz
guestbook-all-in-one.yaml
z tej strony usługi GitHub.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
:
Wdróż
ing-guestbook.yaml
, uruchamiając następujące polecenie:kubectl apply -f ing-guestbook.yaml
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.
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>
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
Zapisz zasób ruchu przychodzącego w pliku o nazwie
ing-guestbook-tls.yaml
.Wdróż
ing-guestbook-tls.yaml
, uruchamiając następujące polecenie:kubectl apply -f ing-guestbook-tls.yaml
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.
Zdefiniuj następujący zasób ruchu przychodzącego.
secretName
W sekcji zastąp<guestbook-secret-name>
ciąg nazwą wpisu tajnego. W sekcjachhosts
ihost
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
Wdróż
ing-guestbook-tls-sni.yaml
, uruchamiając następujące polecenie:kubectl apply -f ing-guestbook-tls-sni.yaml
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