Bagikan melalui


Sesi kontainer kustom Azure Container Apps (pratinjau)

Selain penerjemah kode bawaan yang disediakan sesi dinamis Azure Container Apps, Anda juga dapat menggunakan kontainer kustom untuk menentukan kotak pasir sesi Anda sendiri.

Catatan

Sesi dinamis Azure Container Apps saat ini dalam pratinjau. Lihat batasan pratinjau untuk informasi selengkapnya.

Menggunakan untuk sesi kontainer kustom

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.

Menggunakan sesi kontainer kustom

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.

Membuat kumpulan sesi kontainer kustom

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.0kontainer 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 1.0 --memory 2.0Gi \
    --target-port 80 \
    --cooldown-period 300 \
    --network-status EgressDisabled \
    --max-sessions 10 \
    --ready-sessions 5 \
    --env-vars "key1=value1" "key2=value2"

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 1.0 CPU yang diperlukan dalam inti.
--memory 2.0Gi 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.

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.

Bekerja dengan sesi

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

Meneruskan permintaan ke kontainer 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.

Interaksi sesi berkelanjutan:

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.

Permintaan sampel

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>.

Langkah berikutnya