Een AKS-service beschikbaar maken via HTTP of HTTPS met behulp van Application Gateway
Dit artikel illustreert het gebruik van Kubernetes-toegangsbeheerbronnen om een voorbeeldservice van Azure Kubernetes Service (AKS) beschikbaar te maken via Azure-toepassing Gateway via HTTP of HTTPS.
Tip
Overweeg Application Gateway for Containers voor uw Kubernetes-oplossing voor inkomend verkeer.
Vereisten
- Een geïnstalleerde
ingress-azure
Helm-grafiek:- Greenfield-implementatie: Als u helemaal opnieuw begint, raadpleegt u deze installatie-instructies, waarin de stappen voor het implementeren van een AKS-cluster met Application Gateway worden beschreven en de AGIC (Application Gateway Ingress Controller) op het AKS-cluster worden geïnstalleerd.
- Brownfield-implementatie: Als u een bestaand AKS-cluster en Application Gateway-implementatie hebt, raadpleegt u deze instructies voor het installeren van AGIC op het AKS-cluster.
- Een x509-certificaat en de bijbehorende persoonlijke sleutel als u HTTPS voor deze toepassing wilt gebruiken.
De gastboektoepassing implementeren
De guestbook
toepassing is een canonieke Kubernetes-toepassing die bestaat uit een front-end voor de webgebruikersinterface, een back-end en een Redis-database.
De toepassing wordt standaard guestbook
beschikbaar gemaakt via een service met de naam frontend
op de poort 80
. Zonder een Kubernetes-toegangsresource is de service niet toegankelijk van buiten het AKS-cluster. U gebruikt de toepassing en stelt toegangsbeheerobjectbronnen in voor toegang tot de toepassing via HTTP en HTTPS.
De toepassing implementeren guestbook
:
Download
guestbook-all-in-one.yaml
vanaf deze GitHub-pagina.Implementeer
guestbook-all-in-one.yaml
in uw AKS-cluster door deze opdracht uit te voeren:kubectl apply -f guestbook-all-in-one.yaml
Services beschikbaar maken via HTTP
Gebruik de volgende toegangsbeheerobjectresource om de guestbook
toepassing beschikbaar te maken:
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
Met dit toegangsbeheerobject wordt de frontend
service van de guestbook-all-in-one
implementatie weergegeven als een standaardback-end van de Application Gateway-implementatie.
Sla de voorgaande toegangsbeheerresource op als ing-guestbook.yaml
:
Implementeren
ing-guestbook.yaml
door deze opdracht uit te voeren:kubectl apply -f ing-guestbook.yaml
Controleer het logboek van de ingangscontroller voor de implementatiestatus.
guestbook
De toepassing moet nu beschikbaar zijn. U kunt de beschikbaarheid controleren door naar het openbare adres van de Application Gateway-implementatie te gaan.
Services beschikbaar maken via HTTPS
Zonder een opgegeven hostnaam
Als u geen hostnaam opgeeft, is de guestbook
service beschikbaar op alle hostnamen die verwijzen naar de Application Gateway-implementatie.
Voordat u de toegangsbeheerobjectresource implementeert, maakt u een Kubernetes-geheim om het certificaat en de persoonlijke sleutel te hosten:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Definieer de volgende toegangsbeheerobjectresource. Vervang in de
secretName
sectie door<guestbook-secret-name>
de naam van uw geheim.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
Sla de toegangsbeheerobjectresource op in een bestand met de naam
ing-guestbook-tls.yaml
.Implementeren
ing-guestbook-tls.yaml
door deze opdracht uit te voeren:kubectl apply -f ing-guestbook-tls.yaml
Controleer het logboek van de ingangscontroller voor de implementatiestatus.
guestbook
De toepassing is nu beschikbaar op zowel HTTP als HTTPS.
Met een opgegeven hostnaam
U kunt ook de hostnaam op de ingangsresource opgeven voor multiplexe TLS-configuraties en -services. Wanneer u een hostnaam opgeeft, is de guestbook
service alleen beschikbaar op de opgegeven host.
Definieer de volgende toegangsbeheerobjectresource. Vervang in de
secretName
sectie door<guestbook-secret-name>
de naam van uw geheim. Vervang in dehosts
sectieshost
door<guestbook.contoso.com>
uw hostnaam.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
Implementeren
ing-guestbook-tls-sni.yaml
door deze opdracht uit te voeren:kubectl apply -f ing-guestbook-tls-sni.yaml
Controleer het logboek van de ingangscontroller voor de implementatiestatus.
guestbook
De toepassing is nu beschikbaar op zowel HTTP als HTTPS, alleen op de opgegeven host.
Integreren met andere services
Gebruik de volgende bron voor inkomend verkeer om paden toe te voegen en deze paden om te leiden naar andere services:
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