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:
Unduh
guestbook-all-in-one.yaml
dari halaman GitHub ini.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
:
Sebarkan
ing-guestbook.yaml
dengan menjalankan perintah ini:kubectl apply -f ing-guestbook.yaml
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.
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>
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
Simpan sumber daya ingress dalam file bernama
ing-guestbook-tls.yaml
.Sebarkan
ing-guestbook-tls.yaml
dengan menjalankan perintah ini:kubectl apply -f ing-guestbook-tls.yaml
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.
Tentukan sumber daya ingress berikut. Di bagian ,
secretName
ganti<guestbook-secret-name>
dengan nama rahasia Anda. Di bagianhosts
danhost
, 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
Sebarkan
ing-guestbook-tls-sni.yaml
dengan menjalankan perintah ini:kubectl apply -f ing-guestbook-tls-sni.yaml
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