Sesi kontainer kustom Azure Container Apps
Selain penerjemah kode bawaan yang disediakan sesi dinamis Azure Container Apps, Anda juga dapat menggunakan kontainer kustom untuk menentukan kotak pasir sesi Anda sendiri.
Kontainer kustom memungkinkan Anda membangun solusi yang disesuaikan dengan kebutuhan Anda. Mereka memungkinkan Anda untuk menjalankan kode atau menjalankan aplikasi di lingkungan yang cepat dan ephemeral dan menawarkan ruang yang aman dan terkotakpasir dengan Hyper-V. Selain itu, mereka dapat dikonfigurasi dengan isolasi jaringan opsional. Beberapa contohnya termasuk:
Penerjemah kode: Saat Anda perlu menjalankan kode yang tidak tepercaya di kotak pasir aman oleh bahasa yang tidak didukung dalam penerjemah bawaan, atau Anda memerlukan kontrol penuh atas lingkungan penerjemah kode.
Eksekusi terisolasi: Saat Anda perlu menjalankan aplikasi dalam skenario yang bermusuhan dan multipenyewa di mana setiap penyewa atau pengguna memiliki lingkungan terkotakpasir mereka sendiri. Lingkungan ini terisolasi satu sama lain dan dari aplikasi host. Beberapa contoh termasuk aplikasi yang menjalankan kode yang disediakan pengguna, kode yang memberikan akses pengguna akhir ke shell berbasis cloud, agen AI, dan lingkungan pengembangan.
Untuk menggunakan sesi kontainer kustom, Anda terlebih dahulu membuat kumpulan sesi dengan gambar kontainer kustom. Azure Container Apps secara otomatis memulai kontainer di kotak pasir Hyper-V mereka sendiri menggunakan gambar yang disediakan. Setelah kontainer dimulai, kontainer tersedia untuk kumpulan sesi.
Saat aplikasi Anda meminta sesi, instans langsung dialokasikan dari kumpulan. Sesi tetap aktif sampai memasuki status diam, yang kemudian secara otomatis dihentikan dan dihancurkan.
Untuk membuat kumpulan sesi kontainer kustom, Anda perlu menyediakan gambar kontainer dan pengaturan konfigurasi kumpulan.
Anda memanggil atau berkomunikasi dengan setiap sesi menggunakan permintaan HTTP. Kontainer kustom harus mengekspos server HTTP pada port yang Anda tentukan untuk merespons permintaan ini.
Untuk membuat kumpulan sesi kontainer kustom menggunakan Azure CLI, pastikan Anda memiliki versi terbaru Azure CLI dan ekstensi Azure Container Apps dengan perintah berikut:
az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y
Kumpulan sesi kontainer kustom memerlukan profil beban kerja yang diaktifkan lingkungan Azure Container Apps. Jika Anda tidak memiliki lingkungan, gunakan az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles
perintah untuk membuatnya.
az containerapp sessionpool create
Gunakan perintah untuk membuat kumpulan sesi kontainer kustom.
Contoh berikut membuat kumpulan sesi bernama my-session-pool
dengan gambar myregistry.azurecr.io/my-container-image:1.0
kontainer kustom .
Sebelum Anda mengirim permintaan, ganti tempat penampung antara tanda <>
kurung dengan nilai yang sesuai untuk kumpulan sesi dan pengidentifikasi sesi Anda.
az containerapp sessionpool create \
--name my-session-pool \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT> \
--registry-server myregistry.azurecr.io \
--registry-username <USER_NAME> \
--registry-password <PASSWORD> \
--container-type CustomContainer \
--image myregistry.azurecr.io/my-container-image:1.0 \
--cpu 0.25 --memory 0.5Gi \
--target-port 80 \
--cooldown-period 300 \
--network-status EgressDisabled \
--max-sessions 10 \
--ready-sessions 5 \
--env-vars "key1=value1" "key2=value2" \
--location <LOCATION>
Perintah ini membuat kumpulan sesi dengan pengaturan berikut:
Parameter | Nilai | Deskripsi |
---|---|---|
--name |
my-session-pool |
Nama kumpulan sesi. |
--resource-group |
my-resource-group |
Grup sumber daya yang berisi kumpulan sesi. |
--environment |
my-environment |
Nama atau ID sumber daya lingkungan aplikasi kontainer. |
--container-type |
CustomContainer |
Jenis kontainer kumpulan sesi. Harus CustomContainer untuk sesi kontainer kustom. |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
Gambar kontainer yang digunakan untuk kumpulan sesi. |
--registry-server |
myregistry.azurecr.io |
Nama host server registri kontainer. |
--registry-username |
my-username |
Nama pengguna untuk masuk ke registri kontainer. |
--registry-password |
my-password |
Kata sandi untuk masuk ke registri kontainer. |
--cpu |
0.25 |
CPU yang diperlukan dalam inti. |
--memory |
0.5Gi |
Memori yang diperlukan. |
--target-port |
80 |
Port sesi yang digunakan untuk lalu lintas masuk. |
--cooldown-period |
300 |
Jumlah detik yang dapat diam sesi sebelum sesi dihentikan. Periode diam diatur ulang setiap kali API sesi dipanggil. Nilai harus antara 300 dan 3600 . |
--network-status |
Menunjuk apakah lalu lintas jaringan keluar diizinkan dari sesi. Nilai yang valid adalah EgressDisabled (default) dan EgressEnabled . |
|
--max-sessions |
10 |
Jumlah maksimum sesi yang dapat dialokasikan secara bersamaan. |
--ready-sessions |
5 |
Jumlah target sesi yang siap di kumpulan sesi sepanjang waktu. Tingkatkan jumlah ini jika sesi dialokasikan lebih cepat daripada kumpulan yang sedang diisi ulang. |
--env-vars |
"key1=value1" "key2=value2" |
Variabel lingkungan yang akan diatur dalam kontainer. |
--location |
"Supported Location" |
Lokasi kumpulan sesi. |
Untuk memeriksa status kumpulan sesi, gunakan az containerapp sessionpool show
perintah :
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Untuk memperbarui kumpulan sesi, gunakan az containerapp sessionpool update
perintah .
Penting
Jika sesi digunakan untuk menjalankan kode yang tidak tepercaya, jangan sertakan informasi atau data yang tidak Anda inginkan untuk diakses oleh kode yang tidak tepercaya. Asumsikan kode berbahaya dan memiliki akses penuh ke kontainer, termasuk variabel lingkungan, rahasia, dan filenya.
Saat kumpulan sesi dibuat atau diperbarui, Azure Container Apps menyimpan gambar kontainer di kumpulan. Penembolokan ini membantu mempercepat proses pembuatan sesi baru.
Setiap perubahan pada gambar tidak secara otomatis tercermin dalam sesi. Untuk memperbarui gambar, perbarui kumpulan sesi dengan tag gambar baru. Gunakan tag unik untuk setiap pembaruan gambar untuk memastikan bahwa gambar baru ditarik.
Aplikasi Anda berinteraksi dengan sesi menggunakan API manajemen kumpulan sesi.
Titik akhir manajemen kumpulan untuk sesi kontainer kustom mengikuti format ini: https://<SESSION_POOL>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io
.
Untuk mengambil titik akhir manajemen kumpulan sesi, gunakan az containerapp sessionpool show
perintah :
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Semua permintaan ke titik akhir manajemen kumpulan harus menyertakan Authorization
header dengan token pembawa. Untuk mempelajari cara mengautentikasi dengan API manajemen kumpulan, lihat Autentikasi.
Setiap permintaan API juga harus menyertakan parameter identifier
string kueri dengan ID sesi. ID sesi unik ini memungkinkan aplikasi Anda berinteraksi dengan sesi tertentu. Untuk mempelajari selengkapnya tentang pengidentifikasi sesi, lihat Pengidentifikasi sesi.
Penting
Pengidentifikasi sesi adalah informasi sensitif yang memerlukan proses aman saat Anda membuat dan mengelola nilainya. Untuk melindungi nilai ini, aplikasi Anda harus memastikan setiap pengguna atau penyewa hanya memiliki akses ke sesi mereka sendiri. Kegagalan untuk mengamankan akses ke sesi dapat mengakibatkan penyalahgunaan atau akses tidak sah ke data yang disimpan dalam sesi pengguna Anda. Untuk informasi selengkapnya, lihat Pengidentifikasi sesi
Apa pun di jalur yang mengikuti titik akhir manajemen kumpulan dasar diteruskan ke kontainer sesi.
Misalnya, jika Anda melakukan panggilan ke <POOL_MANAGEMENT_ENDPOINT>/api/uploadfile
, permintaan dirutekan ke kontainer sesi di 0.0.0.0:<TARGET_PORT>/api/uploadfile
.
Anda dapat terus membuat permintaan ke sesi yang sama. Jika tidak ada permintaan ke sesi lebih lama dari periode cooldown, sesi akan dihapus secara otomatis.
Contoh berikut menunjukkan permintaan ke sesi kontainer kustom oleh ID pengguna.
Sebelum Anda mengirim permintaan, ganti tempat penampung antara tanda <>
kurung dengan nilai khusus untuk permintaan Anda.
POST https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io/<API_PATH_EXPOSED_BY_CONTAINER>?identifier=<USER_ID>
Authorization: Bearer <TOKEN>
{
"command": "echo 'Hello, world!'"
}
Permintaan ini diteruskan ke sesi kontainer kustom dengan pengidentifikasi untuk ID pengguna. Jika sesi belum berjalan, Azure Container Apps mengalokasikan sesi dari kumpulan sebelum meneruskan permintaan.
Dalam contoh, kontainer sesi menerima permintaan di http://0.0.0.0:<INGRESS_PORT>/<API_PATH_EXPOSED_BY_CONTAINER>
.
Identitas terkelola dari MICROSOFT Entra ID memungkinkan kumpulan sesi kontainer kustom Anda dan sesinya untuk mengakses sumber daya yang dilindungi Microsoft Entra lainnya. Untuk informasi selengkapnya tentang identitas terkelola di ID Microsoft Entra, lihat Identitas terkelola untuk sumber daya Azure.
Anda dapat mengaktifkan identitas terkelola untuk kumpulan sesi kontainer kustom Anda. Baik identitas terkelola yang ditetapkan sistem dan yang ditetapkan pengguna didukung.
Ada dua cara untuk menggunakan identitas terkelola dengan kumpulan sesi kontainer kustom:
Autentikasi penarikan gambar: Gunakan identitas terkelola untuk mengautentikasi dengan registri kontainer untuk menarik gambar kontainer.
Akses sumber daya: Gunakan identitas terkelola kumpulan sesi dalam sesi untuk mengakses sumber daya yang dilindungi Microsoft Entra lainnya. Karena implikasi keamanannya, kemampuan ini dinonaktifkan secara default.
Penting
Jika Anda mengaktifkan akses ke identitas terkelola dalam sesi, kode atau program apa pun yang berjalan dalam sesi dapat membuat token Entra untuk identitas terkelola kumpulan. Karena sesi biasanya menjalankan kode yang tidak tepercaya, gunakan fitur ini dengan hati-hati.
Untuk mengaktifkan identitas terkelola untuk kumpulan sesi kontainer kustom, gunakan Azure Resource Manager.
Log konsol dari sesi kontainer kustom tersedia di ruang kerja Azure Log Analytics yang terkait dengan lingkungan Azure Container Apps dalam tabel bernama AppEnvSessionConsoleLogs_CL
.
Sesi kontainer kustom ditagih berdasarkan sumber daya yang digunakan oleh kumpulan sesi. Untuk informasi selengkapnya, lihat Penagihan Azure Container Apps.