Bagikan melalui


Mengekspos layanan AKS melalui HTTP atau HTTPS dengan menggunakan Application Gateway

Artikel ini menggambarkan penggunaan sumber daya ingress Kubernetes untuk mengekspos contoh layanan Azure Kubernetes Service (AKS) melalui Azure Application Gateway melalui HTTP atau HTTPS.

Tip

Pertimbangkan Application Gateway untuk Kontainer untuk solusi ingress Kubernetes Anda.

Prasyarat

  • Bagan Helm yang terinstal ingress-azure :
    • Penyebaran Greenfield: Jika Anda memulai dari awal, lihat instruksi penginstalan ini, yang menguraikan langkah-langkah untuk menyebarkan kluster AKS dengan Application Gateway dan menginstal Application Gateway Ingress Controller (AGIC) pada kluster AKS.
    • Penyebaran Brownfield: Jika Anda memiliki kluster AKS dan penyebaran Application Gateway yang ada, lihat instruksi ini untuk menginstal AGIC pada kluster AKS.
  • Sertifikat x509 dan kunci privatnya, jika Anda ingin menggunakan HTTPS pada aplikasi ini.

Menyebarkan aplikasi buku tamu

Aplikasi ini guestbook adalah aplikasi Kubernetes kanonis yang terdiri dari frontend UI web, backend, dan database Redis.

Secara default, guestbook mengekspos aplikasinya melalui layanan dengan nama frontend pada port 80. Tanpa sumber daya ingress Kubernetes, layanan tidak dapat diakses dari luar kluster AKS. Anda menggunakan aplikasi, dan menyiapkan sumber daya ingress untuk mengakses aplikasi, melalui HTTP dan HTTPS.

Untuk menyebarkan guestbook aplikasi:

  1. Unduh guestbook-all-in-one.yaml dari halaman GitHub ini.

  2. Sebarkan guestbook-all-in-one.yaml ke kluster AKS Anda dengan menjalankan perintah ini:

    kubectl apply -f guestbook-all-in-one.yaml
    

Mengekspos layanan melalui HTTP

Untuk mengekspos guestbook aplikasi, gunakan sumber daya ingress berikut:

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

Ingress ini mengekspos frontend layanan guestbook-all-in-one penyebaran sebagai backend default penyebaran Application Gateway.

Simpan sumber daya ingress sebelumnya sebagai ing-guestbook.yaml:

  1. Sebarkan ing-guestbook.yaml dengan menjalankan perintah ini:

    kubectl apply -f ing-guestbook.yaml
    
  2. Periksa log pengontrol ingress untuk status penyebaran.

Sekarang aplikasi guestbook sudah tersedia. Anda dapat memeriksa ketersediaan dengan mengunjungi alamat publik penyebaran Application Gateway.

Mengekspos layanan melalui HTTPS

Tanpa nama host tertentu

Jika Anda tidak menentukan nama host, guestbook layanan tersedia di semua nama host yang menunjuk ke penyebaran Application Gateway.

  1. Sebelum Anda menyebarkan sumber daya ingress, buat rahasia Kubernetes untuk menghosting sertifikat dan kunci privat:

    kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
    
  2. Tentukan sumber daya ingress berikut. Di bagian , secretName ganti <guestbook-secret-name> dengan nama rahasia Anda.

    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. Simpan sumber daya ingress dalam file bernama ing-guestbook-tls.yaml.

  4. Sebarkan ing-guestbook-tls.yaml dengan menjalankan perintah ini:

    kubectl apply -f ing-guestbook-tls.yaml
    
  5. Periksa log pengontrol ingress untuk status penyebaran.

guestbook Sekarang aplikasi tersedia di HTTP dan HTTPS.

Dengan nama host yang ditentukan

Anda juga dapat menentukan nama host pada sumber daya ingress ke konfigurasi dan layanan multipleks TLS. Saat Anda menentukan nama host, guestbook layanan hanya tersedia pada host yang ditentukan.

  1. Tentukan sumber daya ingress berikut. Di bagian , secretName ganti <guestbook-secret-name> dengan nama rahasia Anda. Di bagian hosts dan host , ganti <guestbook.contoso.com> dengan nama host Anda.

    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. Sebarkan ing-guestbook-tls-sni.yaml dengan menjalankan perintah ini:

    kubectl apply -f ing-guestbook-tls-sni.yaml
    
  3. Periksa log pengontrol ingress untuk status penyebaran.

guestbook Sekarang aplikasi tersedia di HTTP dan HTTPS, hanya pada host yang ditentukan.

Integrasi dengan layanan lain

Gunakan sumber daya ingress berikut untuk menambahkan jalur dan mengalihkan jalur tersebut ke layanan lain:

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