Esporre un servizio Azure Kubernetes tramite HTTP o HTTPS usando il gateway applicazione
Queste esercitazioni illustrano l'utilizzo delle risorse in ingresso di Kubernetes per esporre un servizio Kubernetes di esempio usando il gateway applicazione di Azure tramite HTTP o HTTPS.
Suggerimento
Vedere anche Che cos'è il Gateway applicativo per contenitori? al momento in anteprima pubblica.
Prerequisiti
- Installare il grafico Helm
ingress-azure
.- Distribuzione Greenfield: se si inizia da zero, fare riferimento a queste istruzioni di installazione che illustrano i passaggi per distribuire un cluster del servizio Azure Kubernetes con il gateway applicazione e per installare il controller in ingresso del gateway applicazione nel cluster del servizio Azure Kubernetes.
- Distribuzione Brownfield: se si dispone di un cluster del servizio Azure Kubernetes e del gateway applicazione esistenti, fare riferimento a queste istruzioni per installare il controller in ingresso del gateway applicazione nel cluster del servizio Azure Kubernetes.
- Se si vuole usare HTTPS in questa applicazione, è necessario un certificato x509 e la relativa chiave privata.
Distribuire l'applicazione guestbook
L'applicazione guestbook è un'applicazione Kubernetes canonica che si compone di un front-end dell'interfaccia utente Web, un back-end e un database Redis. Per impostazione predefinita, guestbook
espone l'applicazione tramite un servizio denominato frontend
sulla porta 80
. Senza una risorsa in ingresso Kubernetes, il servizio non è accessibile dall'esterno del cluster del servizio Azure Kubernetes. Utilizziamo l'applicazione e configuriamo le Risorse in ingresso per accedere all'applicazione tramite HTTP e HTTPS.
Usare le istruzioni seguenti per distribuire l'applicazione guestbook.
- Scaricare
guestbook-all-in-one.yaml
da qui - Distribuire
guestbook-all-in-one.yaml
nel cluster del servizio Azure Kubernetes eseguendo
kubectl apply -f guestbook-all-in-one.yaml
A questo punto, l'applicazione guestbook
è stata distribuita.
Esporre i servizi tramite HTTP
Per esporre l'applicazione guestbook, usare la risorsa in ingresso seguente:
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
Questo ingresso espone il servizio frontend
della distribuzione guestbook-all-in-one
come back-end predefinito del gateway applicazione.
Salvare la risorsa in ingresso precedente come ing-guestbook.yaml
.
Distribuire
ing-guestbook.yaml
eseguendo:kubectl apply -f ing-guestbook.yaml
Controllare il log del controller in ingresso per verificare lo stato della distribuzione.
A questo punto l'applicazione guestbook
dovrebbe essere disponibile. È possibile controllare la disponibilità visitando l'indirizzo pubblico del gateway applicazione.
Esporre i servizi tramite HTTPS
Senza nome host specificato
Senza specificare il nome host, il servizio guestbook è disponibile in tutti i nomi host che puntano al gateway applicazione.
Prima di distribuire l'ingresso, è necessario creare un segreto Kubernetes per ospitare il certificato e la chiave privata. È possibile creare un segreto Kubernetes eseguendo
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Definire l'ingresso seguente. Nell'ingresso, specificare il nome del segreto nella sezione
secretName
.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
Nota
Sostituire
<guestbook-secret-name>
nella risorsa in ingresso precedente con il nome del segreto. Archiviare la risorsa in ingresso precedente in un nome fileing-guestbook-tls.yaml
.Distribuire ing-guestbook-tls.yaml eseguendo
kubectl apply -f ing-guestbook-tls.yaml
Controllare il log del controller in ingresso per verificare lo stato della distribuzione.
A questo punto l'applicazione guestbook
è disponibile sia su HTTP che su HTTPS.
Con il nome host specificato
È anche possibile specificare il nome host in ingresso per configurazioni e servizi TLS multiplex. Specificando hostname, il servizio guestbook è disponibile solo nell'host specificato.
Definire l'ingresso seguente. Nell'ingresso, specificare il nome del segreto nella sezione
secretName
e sostituire di conseguenza il nome host nella sezionehosts
.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
Distribuire
ing-guestbook-tls-sni.yaml
eseguendokubectl apply -f ing-guestbook-tls-sni.yaml
Controllare il log del controller in ingresso per verificare lo stato della distribuzione.
A questo punto l'applicazione guestbook
è ora disponibile sia in HTTP che in HTTPS solo nell'host specificato (<guestbook.contoso.com>
in questo esempio).
Integrazione con altri servizi
L'ingresso seguente consente di aggiungere altri percorsi in questo ingresso e reindirizzare tali percorsi ad altri servizi:
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