Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 pengarahan 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 (Protokol Kontrol Transmisi).
Ingress mendukung:
- Akses eksternal dan internal
- Jenis ingress HTTP dan TCP
- Nama domain
- Pembatasan IP
- Autentikasi
- Pemecahan trafik 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: Mengekspos aplikasi melalui alamat IP masuk lingkungan Container Apps. Jika lingkungan menggunakan IP masuk publik, aplikasi dapat menerima lalu lintas dari internet publik, dan juga dapat dijangkau dari aplikasi kontainer lain di lingkungan yang sama.
Internal: Membuat nama domain lengkap (FQDN) aplikasi hanya dapat diakses dari lingkungan Container Apps yang sama, seperti dari aplikasi kontainer lainnya. FQDN aplikasi ini tidak dapat diakses langsung dari internet publik. Namun, aplikasi masih dapat menerima lalu lintas eksternal jika dirujuk sebagai target dalam konfigurasi rute HTTP tingkat lingkungan. Untuk sepenuhnya mengisolasi aplikasi dari lalu lintas eksternal, pastikan aplikasi tersebut tidak dimasukkan sebagai target dalam konfigurasi rute HTTP manapun, atau tempatkan di lingkungan terpisah. Untuk informasi lebih lanjut, lihat Gunakan routing berbasis aturan dengan Azure Container Apps.
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 menggunakan ingress eksternal, sementara aplikasi kontainer yang menghadap internal dengan ingress internal.
Bagaimana visibilitas ingress berinteraksi dengan tipe lingkungan
Dua pengaturan terpisah menentukan siapa yang dapat mengakses aplikasi kontainer Anda:
Tingkat aksesibilitas lingkungan: Atur saat Anda membuat lingkungan. Lingkungan internal (dibuat dengan
--internal-only) sama sekali tidak memiliki titik akhir publik. Fitur ini hanya dapat diakses melalui load balancer internal di jaringan virtual Anda. Untuk informasi lebih lanjut, lihat Tingkat Aksesibilitas.Visibilitas masuk aplikasi: Properti per-aplikasi
external, diatur dengan--type externalatau--type internal, dan ditampilkan di portal sebagai lalu lintas Ingress.
Tingkat aksesibilitas lingkungan menentukan batas jaringan luar. Visibilitas masuk aplikasi menentukan apakah aplikasi dipublikasikan di batas tersebut, atau disimpan di dalam lingkungan.
| Tingkat aksesibilitas lingkungan | Akses aplikasi eksternal (Menerima lalu lintas dari mana saja) |
Masuk aplikasi internal (Terbatas pada Lingkungan Aplikasi Kontainer) |
|---|---|---|
| Eksternal | Dapat diakses dari internet publik, dan dari aplikasi lain di lingkungan. | Hanya dapat diakses dari aplikasi lain dalam lingkungan yang sama. |
| Internal | Dapat dijangkau dari jaringan virtual melalui penyeimbang beban internal, dan dari aplikasi lain di lingkungan tersebut. Tidak dapat diakses dari internet publik. | Hanya dapat diakses dari aplikasi lain dalam lingkungan yang sama. Klien di bagian lain dalam jaringan virtual menerima respons HTTP 404. |
Important
Pengaturan masuk aplikasi menggambarkan hubungan aplikasi dengan lingkungannya, bukan dengan internet. Di lingkungan internal, menerima lalu lintas dari mana saja tidak mempublikasikan aplikasi Anda ke internet, karena lingkungan tersebut tidak memiliki titik akhir publik. Sebagai gantinya, aplikasi dipublikasikan melalui penyeimbang beban internal lingkungan agar klien di jaringan virtual Anda dapat mengaksesnya.
Memilih Terbatas Lingkungan Aplikasi Kontainer di lingkungan internal lebih membatasi dari yang Anda kira. Aplikasi ini menyembunyikan aplikasi dari jaringan virtual Anda serta dari internet.
Nota
Aplikasi dengan internal ingress masih dapat menerima lalu lintas dari luar lingkungan jika dirujuk sebagai target dalam konfigurasi rute HTTP tingkat lingkungan. Untuk informasi lebih lanjut, lihat Gunakan routing berbasis aturan dengan Azure Container Apps.
Batasi aplikasi hanya untuk akses jaringan virtual
Persyaratan umum adalah aplikasi yang tidak dapat dijangkau oleh internet publik, tetapi dapat dijangkau oleh mesin virtual, titik akhir privat, jaringan peered, dan jaringan on-premises yang terhubung melalui VPN atau Azure ExpressRoute. Konfigurasi ini mengharuskan Anda mengatur baik tingkat aksesibilitas lingkungan maupun visibilitas masuk aplikasi.
Atur lingkungan sebagai internal, sehingga lingkungan tidak memiliki endpoint publik. Isolasi internet berasal dari pengaturan ini, dan Anda tidak bisa mengubahnya setelah menciptakan lingkungan. Untuk informasi lebih lanjut, lihat Gunakan jaringan virtual dengan Azure Container Apps.
az containerapp env create \ --name <ENVIRONMENT_NAME> \ --resource-group <RESOURCE_GROUP> \ --infrastructure-subnet-resource-id <SUBNET_RESOURCE_ID> \ --internal-only trueAtur ingres aplikasi menjadi eksternal, sehingga aplikasi dipublikasikan pada load balancer internal lingkungan dan klien di jaringan virtual dapat menjangkaunya.
az containerapp ingress enable \ --name <APP_NAME> \ --resource-group <RESOURCE_GROUP> \ --target-port <PORT_NUMBER> \ --type external
Gunakan internal app ingress hanya untuk aplikasi yang dipanggil oleh aplikasi kontainer lain dalam lingkungan yang sama, seperti layanan backend dalam aplikasi microservices.
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 (Keamanan Lapisan Transportasi)
- 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)
- Waktu permintaan habis adalah 240 detik
Penanda 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:
| Kepala Halaman | Deskripsi | Nilai |
|---|---|---|
X-Forwarded-Proto |
Protokol yang digunakan oleh klien untuk terhubung dengan layanan Container Apps. |
http atau https. Nilai ini ditimpa jika dikirim oleh klien. |
X-Forwarded-For |
Alamat IP klien dan/atau proksi perantara yang mengirim permintaan. | Alamat IP pengirim. Jika ditentukan dalam permintaan awal, ditambahkan pada permintaan. Hanya IP paling kanan yang disediakan oleh Azure Container Apps. Nilai lain harus divalidasi oleh pengguna untuk mencegah spoofing IP. |
X-Forwarded-Client-Cert |
Sertifikat klien jika clientCertificateMode ditetapkan. |
Daftar Hash, Cert, dan Chain yang dipisahkan titik koma. Misalnya: Hash=....;Cert="...";Chain="...";. Nilai ini ditimpa jika dikirim oleh klien. |
PKT
Container Apps mendukung protokol berbasis TCP selain HTTP atau HTTPS. Misalnya, Anda dapat menggunakan ingress TCP untuk mengekspos aplikasi kontainer yang menggunakan protokol Redis.
Nota
Ingress TCP eksternal hanya didukung untuk lingkungan Container Apps yang menggunakan jaringan virtual.
Dengan TCP ingress diaktifkan, aplikasi kontainer Anda:
- Dapat diakses oleh aplikasi kontainer lain di lingkungan yang sama melalui namanya (ditentukan oleh
nameproperti di sumber daya Container Apps) dan nomor port yang diekspos. - Dapat diakses dari luar melalui nama domain lengkap (FQDN) dan nomor port yang terbuka 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.
Nota
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:
Lebih banyak port TCP hanya dapat berada di luar jika aplikasi itu sendiri diatur sebagai eksternal dan aplikasi kontainer menggunakan jaringan virtual.
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, Anda dapat berbagi port yang sama di beberapa aplikasi.
Jika port yang diekspos tidak disediakan, maka secara default port tersebut akan cocok 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.
Nomor port
36985dicadangkan untuk pemeriksaan kesehatan internal dan tidak tersedia untuk aplikasi TCP atau port ekstra yang terekspos pada aplikasi HTTP.
Untuk informasi selengkapnya tentang cara mengaktifkan port tambahan, lihat Mengonfigurasi ingress untuk aplikasi 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 (Sistem Nama Domain) lingkungan. Akhiran ini ditentukan oleh
CONTAINER_APP_ENV_DNS_SUFFIXvariabel 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 aplikasi kontainer (FQDN).
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.
Otentikasi
Azure Container Apps menyediakan fitur autentikasi dan otorisasi bawaan untuk mengamankan aplikasi kontainer eksternal yang mendukung ingress Anda. Untuk informasi selengkapnya, lihat Authentication 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 konfigurasi 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
Penyelarasan sesi, yang juga dikenal sebagai sesi tetap, adalah fitur yang dapat memungkinkan Anda untuk merutekan semua permintaan HTTP dari pengguna 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.
Berbagi Sumber Daya Lintas Asal (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 Konfigurasi CORS di Azure Container Apps.