Esporre un servizio servizio Azure Kubernetes tramite HTTP o HTTPS tramite gateway applicazione
Questo articolo illustra l'uso delle risorse di ingresso Kubernetes per esporre un servizio di esempio servizio Azure Kubernetes (AKS) tramite app Azure lication Gateway tramite HTTP o HTTPS.
Suggerimento
Prendere in considerazione gateway applicazione per i contenitori per la soluzione di ingresso Kubernetes.
Prerequisiti
- Grafico Helm installato
ingress-azure
:- Distribuzione di Greenfield: se si inizia da zero, vedere queste istruzioni di installazione, che illustrano i passaggi per distribuire un cluster del servizio Azure Kubernetes con gateway applicazione e installare il controller di ingresso gateway applicazione nel cluster del servizio Azure Kubernetes.
- Distribuzione brownfield: se si dispone di un cluster del servizio Azure Kubernetes esistente e gateway applicazione distribuzione, vedere queste istruzioni per installare AGIC nel cluster del servizio Azure Kubernetes.
- Un certificato x509 e la relativa chiave privata, se si vuole usare HTTPS in questa applicazione.
Distribuire l'applicazione guestbook
L'applicazione guestbook
è un'applicazione Kubernetes canonica costituita da un front-end dell'interfaccia utente Web, un back-end e un database Redis.
Per impostazione predefinita, guestbook
espone l'applicazione tramite un servizio con il nome frontend
sulla porta 80
. Senza una risorsa di ingresso Kubernetes, il servizio non è accessibile dall'esterno del cluster del servizio Azure Kubernetes. Si usa l'applicazione e si configurano le risorse di ingresso per accedere all'applicazione tramite HTTP e HTTPS.
Per distribuire l'applicazione guestbook
:
Scaricare
guestbook-all-in-one.yaml
da questa pagina di GitHub.Distribuire
guestbook-all-in-one.yaml
nel cluster del servizio Azure Kubernetes eseguendo questo comando:kubectl apply -f guestbook-all-in-one.yaml
Esporre i servizi tramite HTTP
Per esporre l'applicazione guestbook
, usare la risorsa di 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 frontend
servizio della guestbook-all-in-one
distribuzione come back-end predefinito della distribuzione gateway applicazione.
Salvare la risorsa in ingresso precedente come ing-guestbook.yaml
:
Distribuire
ing-guestbook.yaml
eseguendo questo comando:kubectl apply -f ing-guestbook.yaml
Controllare il log del controller di ingresso per lo stato della distribuzione.
A questo punto l'applicazione guestbook
dovrebbe essere disponibile. È possibile controllare la disponibilità visitando l'indirizzo pubblico della distribuzione gateway applicazione.
Esporre i servizi tramite HTTPS
Senza un nome host specificato
Se non si specifica un nome host, il guestbook
servizio è disponibile in tutti i nomi host che puntano alla distribuzione gateway applicazione.
Prima di distribuire la risorsa di ingresso, creare un segreto Kubernetes per ospitare il certificato e la chiave privata:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Definire la risorsa di ingresso seguente.
secretName
Nella sezione sostituire<guestbook-secret-name>
con il nome del segreto.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
Archiviare la risorsa in ingresso in un file denominato
ing-guestbook-tls.yaml
.Distribuire
ing-guestbook-tls.yaml
eseguendo questo comando:kubectl apply -f ing-guestbook-tls.yaml
Controllare il log del controller di ingresso per lo stato della distribuzione.
A questo punto l'applicazione guestbook
è disponibile sia su HTTP che su HTTPS.
Con un nome host specificato
È anche possibile specificare il nome host nella risorsa di ingresso a configurazioni e servizi TLS multiplex. Quando si specifica un nome host, il guestbook
servizio è disponibile solo nell'host specificato.
Definire la risorsa di ingresso seguente.
secretName
Nella sezione sostituire<guestbook-secret-name>
con il nome del segreto.hosts
Nelle sezioni ehost
sostituire<guestbook.contoso.com>
con il nome host.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
eseguendo questo comando:kubectl apply -f ing-guestbook-tls-sni.yaml
Controllare il log del controller di ingresso per lo stato della distribuzione.
Ora l'applicazione guestbook
è disponibile sia in HTTP che in HTTPS, solo nell'host specificato.
Integrazione con altri servizi
Usare la risorsa di ingresso seguente per aggiungere percorsi 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