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 menyediakan penemuan dan perutean layanan bawaan sehingga aplikasi kontainer Anda dapat berkomunikasi satu sama lain tanpa mengelola infrastruktur. Saat Anda menyebarkan beberapa aplikasi kontainer ke lingkungan yang sama, platform menangani resolusi DNS, penyeimbangan beban, dan perutean lalu lintas yang aman secara otomatis.
Jika ingress diaktifkan, setiap aplikasi kontainer akan mendapatkan nama domain. Anda dapat membuat titik akhir tersebut tersedia untuk umum atau membatasinya ke aplikasi kontainer lain di lingkungan yang sama.
Aplikasi kontainer dapat menjangkau satu sama lain melalui salah satu metode berikut:
- Nama domain yang sepenuhnya memenuhi syarat (FQDN) : domain yang dihasilkan default
-
Nama aplikasi: alamat formulir
http://<APP_NAME>pendek untuk panggilan internal - Pemanggilan layanan Dapr: pendekatan berbasis sidecar dengan pencobaan ulang dan kemampuan observasi bawaan
- Domain kustom: nama domain Anda sendiri dengan sertifikat terkelola
Catatan
Saat Anda memanggil aplikasi kontainer lain di lingkungan yang sama dengan menggunakan FQDN atau nama aplikasi, lalu lintas jaringan tidak pernah meninggalkan lingkungan.
Mengapa penting
Dalam arsitektur layanan mikro, layanan perlu saling memanggil satu sama lain dengan andal. Azure Container Apps menghapus beban operasional menyiapkan penemuan layanan, mengelola catatan DNS, dan mengonfigurasi proksi terbalik.
Inilah yang ditangani platform untuk Anda:
- Pendaftaran DNS otomatis: Setiap aplikasi kontainer mendapatkan nama host yang dapat diselesaikan segera setelah disebarkan.
- Perutean yang dikelola proksi: Semua arus lalu lintas antar aplikasi melalui lapisan proksi Envoy bawaan yang menangani penghentian TLS, pemisahan lalu lintas, dan penyeimbangan beban.
- Isolasi cakupan lingkungan: Titik akhir internal hanya dapat dijangkau dari dalam lingkungan yang sama, menciptakan batas keamanan alami.
- Fleksibilitas protokol: Komunikasi melalui HTTP/1.1, HTTP/2 (untuk gRPC), atau TCP mentah tergantung pada kebutuhan beban kerja Anda.
Kemampuan ini berarti Anda dapat fokus pada logika aplikasi Anda daripada pipa jaringan.
Lokasi aplikasi container (FQDN)
Setiap nama domain aplikasi kontainer yang sepenuhnya memenuhi syarat terdiri dari nama aplikasi, pengidentifikasi lingkungan unik, dan wilayah. Fragmen domain ini semuanya termasuk dalam azurecontainerapps.io domain tingkat atas.
aplikasi kontainer
FQDN eksternal dan internal
Pengaturan visibilitas ingress mengontrol apakah aplikasi Anda dapat dijangkau dari luar lingkungan:
| Keterlihatan | Pola FQDN | Dapat dijangkau dari |
|---|---|---|
| Eksternal | <APP_NAME>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Di mana saja (internet publik) |
| Internal | <APP_NAME>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io |
Hanya lingkungan yang sama |
Saat Anda mengatur ingress ke internal, FQDN akan menyertakan sebuah .internal. segmen. Aplikasi kontainer lain di lingkungan yang sama masih dapat menjangkau aplikasi menggunakan alamat ini, tetapi permintaan dari luar lingkungan menerima 404 respons dari proksi lingkungan. Nama DNS diselesaikan ke IP bersama lingkungan, tetapi proksi menolak permintaan karena aplikasi hanya internal.
Dapatkan nama domain yang sepenuhnya memenuhi syarat
Perintah az containerapp show mengembalikan nama domain sepenuhnya memenuhi syarat dari aplikasi kontainer.
az containerapp show \
--resource-group <RESOURCE_GROUP_NAME> \
--name <CONTAINER_APP_NAME> \
--query properties.configuration.ingress.fqdn
Dalam contoh ini, ganti tempat penampung dengan <> dengan nilai milik Anda.
Nilai yang dikembalikan dari perintah ini menyerupai nama domain seperti contoh berikut:
myapp.happyhill-70162bb9.canadacentral.azurecontainerapps.io
FQDN label revisi
Saat Anda menetapkan label ke revisi tertentu, setiap label mendapatkan FQDN uniknya sendiri menggunakan pemisah tiga tanda hubung:
<APP_NAME>---<LABEL>.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
Untuk aplikasi internal, pola mencakup .internal. segmen :
<APP_NAME>---<LABEL>.internal.<ENVIRONMENT_UNIQUE_ID>.<REGION>.azurecontainerapps.io
FQDN label memungkinkan Anda mengirim lalu lintas ke revisi tertentu secara langsung. Praktik ini berguna untuk menguji versi baru, menjalankan eksperimen A/B, atau menyediakan titik akhir yang stabil untuk penyebaran revisi tertentu.
Memanggil aplikasi kontainer berdasarkan nama
Cara paling mudah untuk memanggil aplikasi kontainer lain dari dalam lingkungan yang sama adalah dengan namanya. Kirim permintaan ke http://<CONTAINER_APP_NAME>, dan DNS bawaan lingkungan menyelesaikan nama secara otomatis.
http://my-backend-api
Cara kerja resolusi DNS
Di balik layar, Azure Container Apps menggunakan konfigurasi DNS kustom yang menerjemahkan nama aplikasi kontainer ke dalam alamat yang dapat dirutekan. Saat aplikasi Anda membuat permintaan ke nama aplikasi lain atau FQDN:
- Server DNS lingkungan menerjemahkan nama host menjadi alamat layanan proksi Envoy.
- Proksi Envoy mengidentifikasi aplikasi target dari nama host asli.
- Proksi merutekan permintaan ke revisi yang benar berdasarkan konfigurasi lalu lintas Anda.
Arsitektur ini berarti aplikasi kontainer tidak pernah berkomunikasi langsung dengan pod satu sama lain. Semua lalu lintas melewati lapisan proksi, yang menyediakan penghentian TLS, penyeimbangan beban, dan pemisahan lalu lintas.
Petunjuk / Saran
Gunakan nama aplikasi pendek (http://<APP_NAME>) untuk panggilan antar aplikasi kontainer di lingkungan yang sama. Ini lebih sederhana daripada FQDN lengkap dan bekerja dengan cara yang sama karena DNS menyelesaikan kedua pola melalui proksi yang sama.
Protokol transportasi
Aplikasi kontainer mendukung tiga mode transportasi untuk masuk, dikonfigurasi transport melalui properti:
| Transportasi | Skenario penggunaan | Rincian |
|---|---|---|
| Otomatis (default) | API dan layanan web standar | Menegosiasikan HTTP/1.1 dan HTTP/2 secara otomatis |
| HTTP/2 | Layanan gRPC | Mengaktifkan HTTP/2 end-to-end, diperlukan untuk gRPC |
| TCP | Protokol non-HTTP (basis data, protokol khusus) | Koneksi TCP mentah dengan pemetaan port |
Catatan
TCP ingress eksternal memerlukan VNet kustom. Jika Anda mencoba membuat aplikasi TCP eksternal tanpa VNet kustom, Anda menerima ContainerAppTcpRequiresVnet kesalahan. Internal TCP ingress bekerja tanpa menggunakan VNet kustom.
Saat Anda menggunakan TCP transport, Anda juga dapat mengekspos port tambahan selain port ingress utama. Setiap port tambahan membuat titik akhir TCP terpisah yang dapat disambungkan oleh aplikasi lain di lingkungan.
Pemisahan lalu lintas dan pengarahan revisi
Azure Container Apps mendukung tiga mode revisi yang memengaruhi bagaimana lalu lintas didistribusikan antara aplikasi kontainer:
| Modus | Perilaku |
|---|---|
| Tunggal | Semua trafik diarahkan ke revisi aktif terbaru. |
| Beberapa | Pembagian lalu lintas di antara revisi dilakukan berdasarkan persentase, sesuai dengan aturan lalu lintas Anda. |
| Label | Setiap revisi berlabel mendapatkan FQDN unik untuk akses langsung. |
Dalam mode multiple, saat aplikasi kontainer lain memanggil FQDN aplikasi Anda, proksi secara otomatis mendistribusikan permintaan di seluruh revisi sesuai dengan bobot yang dikonfigurasi. Dalam mode label, penelepon dapat menargetkan revisi tertentu dengan menggunakan FQDN dari label tersebut.
Untuk informasi lebih lanjut, lihat Revisi di Azure Container Apps.
Pemanggilan layanan Dapr
Dapr (Distributed Application Runtime) menyediakan pendekatan berbasis sidecar untuk komunikasi antar aplikasi. Dengan mengaktifkan Dapr, aplikasi kontainer Anda mendapatkan pemanggilan layanan bawaan dengan TLS bersama, percobaan ulang otomatis, dan pelacakan terdistribusi melalui Azure Application Insights.
Cara kerja pemanggilan Dapr
Setiap aplikasi kontainer yang diaktifkan Dapr menjalankan proses sidecar di samping aplikasi Anda. Untuk memanggil aplikasi lain yang diaktifkan Dapr, buat permintaan HTTP lokal ke sidecar Dapr, yang menangani penemuan dan perutean layanan:
http://localhost:3500/v1.0/invoke/<DAPR_APP_ID>/method/<METHOD_NAME>
Misalnya, untuk memanggil metode catalog pada aplikasi dengan Dapr App ID order-processor:
http://localhost:3500/v1.0/invoke/order-processor/method/catalog
Sidecar menentukan aplikasi target menggunakan domain DNS khusus dan merutekan permintaan melalui lapisan proxy Envoy. Ini adalah infrastruktur yang sama yang menangani perutean berbasis FQDN.
Catatan
Dapr menggunakan jalur resolusi DNS sendiri ( .dapr domain) terpisah dari resolusi FQDN standar. Kedua jalur mengalami rute melintasi infrastruktur proksi dari lingkungan.
ID Aplikasi Dapr
ID Aplikasi Dapr adalah identitas yang digunakan aplikasi lain untuk memanggil layanan Anda. Jika Anda tidak mengatur ID Aplikasi secara eksplisit, Dapr runtime akan menggunakan secara default nama aplikasi kontainer Anda. ARM API menampilkan appId: null ketika Anda tidak mengonfigurasi ID kustom, tetapi runtime menerapkan nama aplikasi secara otomatis. Atur ID Aplikasi kustom di konfigurasi Dapr Anda jika Anda memerlukan pengidentifikasi yang berbeda.
ID Aplikasi Dapr harus unik dalam lingkungan. Jika Anda mencoba menyebarkan aplikasi kontainer dengan ID Aplikasi Dapr yang sudah digunakan oleh aplikasi lain, sumber daya aplikasi kontainer dibuat tetapi revisinya gagal disediakan (provisioningState: Failed). Pesan kesalahan mengidentifikasi ID Aplikasi yang bertentangan dan aplikasi yang memilikinya.
Aplikasi eksklusif Dapr (tanpa ingress HTTP)
Anda dapat mengaktifkan Dapr pada aplikasi kontainer tanpa mengonfigurasi ingress HTTP. Dalam hal ini, aplikasi tidak dapat dijangkau melalui FQDN atau nama aplikasi, tetapi aplikasi berkemampuan Dapr lainnya masih dapat memanggilnya melalui pemanggilan layanan Dapr. Pola ini berguna untuk pekerja latar belakang atau pemroses acara yang hanya perlu menerima panggilan dari layanan lain dalam mesh.
Petunjuk / Saran
Saat Anda membuat aplikasi tanpa masuk dengan Azure CLI, hilangkan bendera --ingress dan --target-port. Termasuk --target-port tanpa --ingress mengembalikan kesalahan penggunaan.
Konfigurasi sidecar Dapr
Anda mengonfigurasi sidecar Dapr melalui properti aplikasi kontainer Anda. Pengaturan kunci meliputi:
| Setting | Deskripsi |
|---|---|
appId |
ID Aplikasi Dapr (secara default menjadi nama aplikasi kontainer) |
appPort |
Port yang didengarkan aplikasi Anda (kembali ke port target ingress) |
appProtocol |
Protokol untuk komunikasi Dapr-ke-aplikasi (misalnya, http, grpc) |
logLevel |
Log verbositas sidecar Dapr |
enableApiLogging |
Apakah akan mencatat panggilan DAPR API |
httpMaxRequestSize |
Ukuran isi permintaan maksimum dalam MB untuk server HTTP Dapr |
httpReadBufferSize |
Ukuran maksimum buffer baca HTTP dalam KB |
Untuk informasi selengkapnya tentang mengonfigurasi Dapr dengan Azure Container Apps, lihat integrasi Dapr dengan Azure Container Apps.
Keamanan untuk komunikasi antar aplikasi
Azure Container Apps menyertakan beberapa fitur keamanan yang memengaruhi cara aplikasi kontainer berkomunikasi:
-
TLS secara default: Semua lalu lintas antar aplikasi container dialihkan melalui proksi Envoy, yang menangani penghentian TLS. Atur
allowInsecurekefalse(default) untuk menerapkan pengalihan HTTPS. -
Mode sertifikat klien (mTLS): Mengonfigurasi TLS bersama dengan mengatur mode sertifikat klien ke
require,accept, atauignore. - Pembatasan IP: Tentukan aturan izinkan atau tolak untuk membatasi alamat IP mana yang dapat menjangkau aplikasi Anda.
- Kebijakan CORS: Mengonfigurasi aturan berbagi sumber daya lintas asal untuk klien berbasis browser yang memanggil aplikasi kontainer Anda.
Catatan
Saat Anda menggunakan pemanggilan layanan Dapr, sidecar Dapr secara otomatis mengamankan komunikasi dengan TLS bersama antar layanan. Anda tidak perlu mengonfigurasi mTLS secara terpisah untuk panggilan Dapr-to-Dapr.
Untuk informasi selengkapnya, lihat Ingress di Azure Container Apps.
Domain khusus
Anda dapat memetakan nama domain Anda sendiri ke aplikasi kontainer dengan mengonfigurasi domain kustom pada pengaturan ingress. Setiap domain kustom dapat mereferensikan sertifikat TLS terkelola atau yang diunggah.
Domain kustom didaftarkan bersama FQDN default, sehingga aplikasi Anda merespons kedua alamat. Saat aplikasi kontainer lain di lingkungan perlu menjangkau aplikasi Anda, aplikasi tersebut dapat menggunakan FQDN default, nama aplikasi, atau domain kustom Anda.
Untuk informasi selengkapnya, lihat Domain kustom di Azure Container Apps.
Solusi contoh
Sampel yang menunjukkan cara memanggil antara kontainer menggunakan FQDN dan Dapr tersedia pada Sampel Azure.
Konsep terkait
Memahami komunikasi antar-aplikasi di Azure Container Apps terhubung ke beberapa topik terkait:
- Environments di Azure Container Apps: Batas yang dibagikan di mana aplikasi kontainer dapat saling menemukan dan berkomunikasi dengan satu sama lain.
- Ingress di Azure Container Apps: Cara mengonfigurasi titik akhir eksternal dan internal, TLS, dan aturan perutean
- integrasi Dapr dengan Azure Container Apps: Cakupan komponen Dapr, pub/sub, dan manajemen status yang lebih mendalam bersama pemanggilan layanan
- Networking di Azure Container Apps: Integrasi VNet, titik akhir privat, dan keamanan jaringan untuk lingkungan Anda
- Revisions di Azure Container Apps : Bagaimana mode revisi dan pemisahan lalu lintas memengaruhi perutean antar aplikasi