Ingress di Azure Container Apps
Azure Container Apps memungkinkan Anda mengekspos aplikasi kontainer ke web publik, jaringan virtual (VNET), dan aplikasi kontainer lainnya dalam lingkungan Anda dengan mengaktifkan ingress. Pengaturan Ingress diberlakukan melalui sekumpulan aturan yang mengontrol perutean lalu lintas eksternal dan internal ke aplikasi kontainer Anda. Saat mengaktifkan ingress, Anda tidak perlu membuat Azure Load Balancer, alamat IP publik, atau sumber daya Azure lainnya untuk mengaktifkan permintaan HTTP masuk atau lalu lintas TCP.
Ingress mendukung:
- ingress eksternal dan internal
- Jenis ingress HTTP dan TCP
- Nama domain
- Pembatasan IP
- Autentikasi
- Pemisahan lalu lintas di antara revisi
- Afinitas sesi
Contoh konfigurasi ingress yang menunjukkan pemisahan ingress antara dua revisi:
Untuk detail konfigurasi, lihat Mengonfigurasi ingress.
ingress eksternal dan internal
Saat mengaktifkan ingress, Anda dapat memilih antara dua jenis ingress:
- Eksternal: Menerima lalu lintas dari internet publik dan lingkungan internal aplikasi kontainer Anda.
- Internal: Hanya memungkinkan akses internal dari dalam lingkungan aplikasi kontainer Anda.
Setiap aplikasi kontainer dalam lingkungan dapat dikonfigurasi dengan pengaturan ingress yang berbeda. Misalnya, dalam skenario dengan beberapa aplikasi layanan mikro, untuk meningkatkan keamanan, Anda mungkin memiliki satu aplikasi kontainer yang menerima permintaan publik dan meneruskan permintaan ke layanan latar belakang. Dalam skenario ini, Anda akan mengonfigurasi aplikasi kontainer yang menghadap publik dengan ingress eksternal dan aplikasi kontainer yang menghadap internal dengan ingress internal.
Jenis protokol
Container Apps mendukung dua protokol untuk masuk: HTTP dan TCP.
HTTP
Dengan ingress HTTP diaktifkan, aplikasi kontainer Anda memiliki:
- Dukungan untuk penghentian TLS
- Dukungan untuk HTTP/1.1 dan HTTP/2
- Dukungan untuk WebSocket dan gRPC
- Titik akhir HTTPS yang selalu menggunakan TLS 1.2 atau 1.3, dihentikan pada titik masuk
- Titik akhir yang mengekspos port 80 (untuk HTTP) dan 443 (untuk HTTPS)
- Secara default, permintaan HTTP ke port 80 secara otomatis dialihkan ke HTTPS pada 443
- Nama domain yang sepenuhnya memenuhi syarat (FQDN)
- Batas waktu permintaan adalah 240 detik
Header HTTP
Ingress HTTP menambahkan header untuk meneruskan metadata tentang permintaan klien ke aplikasi kontainer Anda. Misalnya, X-Forwarded-Proto
header digunakan untuk mengidentifikasi protokol yang digunakan klien untuk terhubung dengan layanan Container Apps. Tabel berikut mencantumkan header HTTP yang relevan dengan ingress di Container Apps:
Header | Deskripsi | Values |
---|---|---|
X-Forwarded-Proto |
Protokol yang digunakan oleh klien untuk terhubung dengan layanan Container Apps. |
http atau https |
X-Forwarded-For |
Alamat IP klien yang mengirim permintaan. | |
X-Forwarded-Host |
Nama host yang digunakan klien untuk terhubung dengan layanan Container Apps. | |
X-Forwarded-Client-Cert |
Sertifikat klien jika clientCertificateMode diatur. |
Daftar Hash, Cert, dan Chain yang dipisahkan titik koma. Misalnya: Hash=....;Cert="...";Chain="..."; |
TCP
Container Apps mendukung protokol berbasis TCP selain HTTP atau HTTPS. Misalnya, Anda dapat menggunakan ingress TCP untuk mengekspos aplikasi kontainer yang menggunakan protokol Redis.
Catatan
Ingress TCP eksternal hanya didukung untuk lingkungan Container Apps yang menggunakan VNET kustom. Ingress TCP tidak didukung untuk aplikasi yang menerima lalu lintas masuk melalui titik akhir privat.
Dengan ingress TCP diaktifkan, aplikasi kontainer Anda:
- Dapat diakses oleh aplikasi kontainer lain di lingkungan yang sama melalui namanya (ditentukan oleh
name
properti di sumber daya Container Apps) dan nomor port yang diekspos. - Dapat diakses secara eksternal melalui nama domain yang sepenuhnya memenuhi syarat (FQDN) dan nomor port yang diekspos jika ingress diatur ke
external
.
Port TCP tambahan
Selain port HTTP/TCP utama untuk aplikasi kontainer, Anda mungkin mengekspos port TCP tambahan untuk mengaktifkan aplikasi yang menerima koneksi TCP pada beberapa port.
Catatan
Untuk menggunakan fitur ini, Anda harus memiliki ekstensi CLI aplikasi kontainer. Jalankan az extension add -n containerapp
untuk menginstal versi terbaru ekstensi CLI aplikasi kontainer.
Berikut ini berlaku untuk port TCP tambahan:
- Port TCP tambahan hanya dapat berada di luar jika aplikasi itu sendiri diatur sebagai eksternal dan aplikasi kontainer menggunakan VNet kustom.
- Setiap port TCP tambahan yang diekspos secara eksternal harus unik di seluruh lingkungan Container Apps. Ini termasuk semua port TCP tambahan eksternal, port TCP utama eksternal, dan port 80/443 yang digunakan oleh ingress HTTP bawaan. Jika port tambahan bersifat internal, port yang sama dapat dibagikan oleh beberapa aplikasi.
- Jika port yang diekspos tidak disediakan, port yang diekspos akan default agar sesuai dengan port target.
- Setiap port target harus unik, dan port target yang sama tidak dapat diekspos pada port yang diekspos yang berbeda.
- Ada maksimal lima port tambahan per aplikasi. Jika port tambahan diperlukan, buka permintaan dukungan.
- Hanya port ingress utama yang mendukung fitur HTTP bawaan seperti CORS dan afinitas sesi. Saat menjalankan HTTP di atas port TCP tambahan, fitur bawaan ini tidak didukung.
Kunjungi artikel cara membuat artikel tentang masuk untuk informasi selengkapnya tentang cara mengaktifkan port tambahan untuk aplikasi kontainer Anda.
Nama domain
Anda dapat mengakses aplikasi dengan cara berikut:
- Nama domain default yang sepenuhnya memenuhi syarat (FQDN): Setiap aplikasi di lingkungan Container Apps secara otomatis diberi FQDN berdasarkan akhiran DNS lingkungan. Untuk mengkustomisasi akhiran DNS lingkungan, lihat Akhiran DNS lingkungan kustom.
- Nama domain kustom: Anda dapat mengonfigurasi domain DNS kustom untuk lingkungan Container Apps Anda. Untuk informasi selengkapnya, lihat Nama domain kustom dan sertifikat.
- Nama aplikasi: Anda dapat menggunakan nama aplikasi untuk komunikasi antar aplikasi di lingkungan yang sama.
Untuk mendapatkan FQDN untuk aplikasi Anda, lihat Lokasi.
Batasan IP
Container Apps mendukung pembatasan IP untuk ingress. Anda dapat membuat aturan untuk mengonfigurasi alamat IP yang diizinkan atau ditolak akses ke aplikasi kontainer Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi pembatasan IP.
Autentikasi
Azure Container Apps menyediakan fitur autentikasi dan otorisasi bawaan untuk mengamankan aplikasi kontainer eksternal yang mendukung ingress Anda. Untuk informasi selengkapnya, lihat Autentikasi dan otorisasi di Azure Container Apps.
Anda dapat mengonfigurasi aplikasi untuk mendukung sertifikat klien (mTLS) untuk autentikasi dan enkripsi lalu lintas. Untuk informasi selengkapnya, lihat Mengonfigurasi sertifikat klien.
Untuk detail tentang cara menggunakan enkripsi jaringan tingkat lingkungan peer-to-peer, lihat gambaran umum jaringan.
Pemisahan lalu lintas
Containers Apps memungkinkan Anda membagi lalu lintas masuk antara revisi aktif. Saat Anda menentukan aturan pemisahan, Anda menetapkan persentase lalu lintas masuk untuk masuk ke revisi yang berbeda. Untuk informasi selengkapnya, lihat Pemisahan lalu lintas.
Afinitas Sesi
Afinitas sesi, juga dikenal sebagai sesi lengket, adalah fitur yang memungkinkan Anda merutekan semua permintaan HTTP dari klien ke replika aplikasi kontainer yang sama. Fitur ini berguna untuk aplikasi stateful yang memerlukan koneksi yang konsisten ke replika yang sama. Untuk informasi selengkapnya, lihat Afinitas sesi.
Cross origin resource sharing (CORS)
Secara default, setiap permintaan yang dibuat melalui browser dari halaman ke domain yang tidak cocok dengan domain asal halaman diblokir. Untuk menghindari pembatasan ini untuk layanan yang disebarkan ke Container Apps, Anda dapat mengaktifkan berbagi sumber daya lintas asal (CORS).
Untuk informasi selengkapnya, lihat Mengonfigurasi CORS di Azure Container Apps.