Condividi tramite


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 :

  1. Scaricare guestbook-all-in-one.yaml da questa pagina di GitHub.

  2. 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:

  1. Distribuire ing-guestbook.yaml eseguendo questo comando:

    kubectl apply -f ing-guestbook.yaml
    
  2. 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.

  1. 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>
    
  2. 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
    
  3. Archiviare la risorsa in ingresso in un file denominato ing-guestbook-tls.yaml.

  4. Distribuire ing-guestbook-tls.yaml eseguendo questo comando:

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. 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.

  1. Definire la risorsa di ingresso seguente. secretName Nella sezione sostituire <guestbook-secret-name> con il nome del segreto. hosts Nelle sezioni e host 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
    
  2. Distribuire ing-guestbook-tls-sni.yaml eseguendo questo comando:

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. 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