Exponera en AKS-tjänst via HTTP eller HTTPS med hjälp av Application Gateway
Den här artikeln illustrerar användningen av Kubernetes-ingressresurser för att exponera en exempeltjänst för Azure Kubernetes Service (AKS) via Azure Application Gateway via HTTP eller HTTPS.
Dricks
Överväg Application Gateway för containrar för din Kubernetes-ingresslösning.
Förutsättningar
- Ett installerat
ingress-azure
Helm-diagram:- Greenfield-distribution: Om du börjar från början läser du de här installationsanvisningarna, som beskriver steg för att distribuera ett AKS-kluster med Application Gateway och installera Application Gateway Ingress Controller (AGIC) i AKS-klustret.
- Distribution av Brownfield: Om du har ett befintligt AKS-kluster och en Application Gateway-distribution läser du de här anvisningarna för att installera AGIC i AKS-klustret.
- Ett x509-certifikat och dess privata nyckel om du vill använda HTTPS i det här programmet.
Distribuera gästboksprogrammet
Programmet guestbook
är ett kanoniskt Kubernetes-program som består av en klientdel för webbgränssnittet, en serverdel och en Redis-databas.
Som standard guestbook
exponerar programmet via en tjänst med namnet frontend
på porten 80
. Utan en Kubernetes-ingressresurs är tjänsten inte tillgänglig utanför AKS-klustret. Du använder programmet och konfigurerar inkommande resurser för att komma åt programmet via HTTP och HTTPS.
Så här distribuerar guestbook
du programmet:
Ladda ned
guestbook-all-in-one.yaml
från den här GitHub-sidan.Distribuera
guestbook-all-in-one.yaml
till ditt AKS-kluster genom att köra det här kommandot:kubectl apply -f guestbook-all-in-one.yaml
Exponera tjänster via HTTP
Om du vill exponera guestbook
programmet använder du följande ingressresurs:
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
Den här ingressen frontend
exponerar distributionstjänsten guestbook-all-in-one
som en standardserverdel för Application Gateway-distributionen.
Spara föregående ingressresurs som ing-guestbook.yaml
:
Distribuera
ing-guestbook.yaml
genom att köra det här kommandot:kubectl apply -f ing-guestbook.yaml
Kontrollera distributionsstatusen i loggen för ingresskontrollanten.
guestbook
Nu ska programmet vara tillgängligt. Du kan kontrollera tillgängligheten genom att besöka den offentliga adressen för Application Gateway-distributionen.
Exponera tjänster via HTTPS
Utan ett angivet värdnamn
Om du inte anger ett värdnamn guestbook
är tjänsten tillgänglig för alla värdnamn som pekar på Application Gateway-distributionen.
Innan du distribuerar ingressresursen skapar du en Kubernetes-hemlighet som värd för certifikatet och den privata nyckeln:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Definiera följande ingressresurs. I avsnittet
secretName
ersätter du<guestbook-secret-name>
med namnet på din hemlighet.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
Lagra ingressresursen i en fil med namnet
ing-guestbook-tls.yaml
.Distribuera
ing-guestbook-tls.yaml
genom att köra det här kommandot:kubectl apply -f ing-guestbook-tls.yaml
Kontrollera distributionsstatusen i loggen för ingresskontrollanten.
Nu är programmet guestbook
tillgängligt på både HTTP och HTTPS.
Med ett angivet värdnamn
Du kan också ange värdnamnet på ingressresursen för multiplex-TLS-konfigurationer och -tjänster. När du anger ett värdnamn guestbook
är tjänsten endast tillgänglig på den angivna värden.
Definiera följande ingressresurs. I avsnittet
secretName
ersätter du<guestbook-secret-name>
med namnet på din hemlighet. I avsnittenhosts
ochhost
ersätter du<guestbook.contoso.com>
med värdnamnet.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
Distribuera
ing-guestbook-tls-sni.yaml
genom att köra det här kommandot:kubectl apply -f ing-guestbook-tls-sni.yaml
Kontrollera distributionsstatusen i loggen för ingresskontrollanten.
Nu är programmet guestbook
tillgängligt på både HTTP och HTTPS, endast på den angivna värden.
Integrera med andra tjänster
Använd följande ingressresurs för att lägga till sökvägar och omdirigera dessa sökvägar till andra tjänster:
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