Baca dalam bahasa Inggris

Bagikan melalui


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.

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

Penembolokan gambar

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.

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

Menggunakan identitas terkelola

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.

Pencatatan

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.

Billing

Sesi kontainer kustom ditagih berdasarkan sumber daya yang digunakan oleh kumpulan sesi. Untuk informasi selengkapnya, lihat Penagihan Azure Container Apps.

Langkah berikutnya