Kontainer di Azure Container Apps
Azure Container Apps mengelola detail Kubernetes dan orkestrasi kontainer untuk Anda. Kontainer di Azure Container Apps dapat menggunakan runtime, bahasa pemrograman, atau tumpukan pengembangan pilihan Anda.
Azure Container Apps mendukung:
- Citra kontainer Linux-based x86-64 (
linux/amd64
) apa pun - Kontainer dari registri kontainer publik atau privat
- Kontainer sidecar dan init opsional
Fitur juga meliputi:
- Aplikasi menggunakan bagian
template
konfigurasi untuk menentukan gambar kontainer dan pengaturan lainnya. Perubahan pada bagiantemplate
konfigurasi memicu revisi aplikasi kontainer baru. - Jika suatu kontainer crash, kontainer tersebut secara otomatis dimulai ulang.
Fitur pekerjaan meliputi:
- Eksekusi pekerjaan menggunakan bagian
template
konfigurasi untuk menentukan gambar kontainer dan pengaturan lainnya saat setiap eksekusi dimulai. - Jika kontainer keluar dengan kode keluar bukan nol, eksekusi pekerjaan ditandai sebagai gagal. Anda dapat mengonfigurasi pekerjaan untuk mencoba kembali eksekusi yang gagal.
Konfigurasi
Sebagian besar aplikasi kontainer memiliki satu kontainer. Dalam skenario lanjutan, aplikasi mungkin juga memiliki kontainer sespan dan init. Dalam definisi aplikasi kontainer, aplikasi utama dan kontainer sespannya tercantum dalam containers
array di bagian properties.template
, dan kontainer init tercantum dalam initContainers
array. Kutipan berikut menunjukkan opsi konfigurasi yang tersedia saat menyiapkan kontainer aplikasi.
{
"properties": {
"template": {
"containers": [
{
"name": "main",
"image": "[parameters('container_image')]",
"env": [
{
"name": "HTTP_PORT",
"value": "80"
},
{
"name": "SECRET_VAL",
"secretRef": "mysecret"
}
],
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/appsettings",
"volumeName": "appsettings-volume"
}
],
"probes": [
{
"type": "liveness",
"httpGet": {
"path": "/health",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "liveness probe"
}
]
},
"initialDelaySeconds": 7,
"periodSeconds": 3
},
{
"type": "readiness",
"tcpSocket": {
"port": 8081
},
"initialDelaySeconds": 10,
"periodSeconds": 3
},
{
"type": "startup",
"httpGet": {
"path": "/startup",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "startup probe"
}
]
},
"initialDelaySeconds": 3,
"periodSeconds": 3
}
]
}
]
},
"initContainers": [
{
"name": "init",
"image": "[parameters('init_container_image')]",
"resources": {
"cpu": 0.25,
"memory": "0.5Gi"
},
"volumeMounts": [
{
"mountPath": "/appsettings",
"volumeName": "appsettings-volume"
}
]
}
]
...
}
...
}
Pengaturan | Deskripsi | Keterangan |
---|---|---|
image |
Nama gambar kontainer untuk aplikasi kontainer Anda. | Nilai ini berupa repository/<IMAGE_NAME>:<TAG> . |
name |
Nama kontainer yang mudah diingat. | Digunakan untuk pelaporan dan identifikasi. |
command |
Perintah mulai kontainer. | Setara dengan bidang entrypoint Docker. |
args |
Argumen perintah mulai. | Entri dalam array digabungkan untuk membuat daftar parameter untuk diteruskan ke perintah mulai. |
env |
Array pasangan nama/nilai yang menentukan variabel lingkungan. | Gunakan bidang secretRef alih-alih value untuk merujuk ke rahasia. |
resources.cpu |
Jumlah CPU yang dialokasikan untuk kontainer. | Lihat persyaratan vCPU dan alokasi memori |
resources.memory |
Jumlah RAM yang dialokasikan untuk kontainer. | Lihat persyaratan vCPU dan alokasi memori |
volumeMounts |
Array definisi pemasangan volume. | Anda dapat menentukan volume penyimpanan sementara atau permanen untuk kontainer Anda. Untuk informasi selengkapnya tentang volume penyimpanan, lihat Menggunakan pemasangan penyimpanan di Azure Container Apps. |
probes |
Array pemeriksaan kesehatan diaktifkan dalam kontainer. | Untuk informasi selengkapnya tentang pengaturan pemeriksaan, lihat Pemeriksaan kesehatan di Azure Container Apps. |
Persyaratan alokasi vCPU dan memori
Saat Anda menggunakan paket Konsumsi, total CPU dan memori yang dialokasikan untuk semua kontainer dalam aplikasi kontainer harus menambahkan hingga salah satu kombinasi berikut.
vCPU (core) | Memori |
---|---|
0.25 |
0.5Gi |
0.5 |
1.0Gi |
0.75 |
1.5Gi |
1.0 |
2.0Gi |
1.25 |
2.5Gi |
1.5 |
3.0Gi |
1.75 |
3.5Gi |
2.0 |
4.0Gi |
2.25 |
4.5Gi |
2.5 |
5.0Gi |
2.75 |
5.5Gi |
3.0 |
6.0Gi |
3.25 |
6.5Gi |
3.5 |
7.0Gi |
3.75 |
7.5Gi |
4.0 |
8.0Gi |
Catatan
Aplikasi yang menggunakan paket Konsumsi di lingkungan Konsumsi saja dibatasi hingga maksimum 2 inti dan memori 4Gi.
Beberapa kontainer
Dalam skenario lanjutan, Anda dapat menjalankan beberapa kontainer dalam satu aplikasi kontainer. Gunakan pola ini hanya dalam instans tertentu di mana kontainer Anda digabungkan dengan erat.
Untuk sebagian besar skenario layanan mikro, praktik terbaiknya adalah menyebarkan setiap layanan sebagai aplikasi kontainer terpisah.
Beberapa kontainer dalam aplikasi kontainer yang sama berbagi hard disk dan sumber daya jaringan dan mengalami siklus hidup aplikasi yang sama.
Ada dua cara untuk menjalankan kontainer tambahan dalam aplikasi kontainer: kontainer sidecar dan kontainer init.
Kontainer sespan
Anda dapat menentukan beberapa kontainer dalam satu aplikasi kontainer untuk mengimplementasikan pola sespan.
Contoh kontainer sespan meliputi:
Agen yang membaca log dari kontainer aplikasi utama pada volume bersama dan meneruskannya ke layanan pengelogan.
Proses latar belakang yang me-refresh cache yang digunakan oleh kontainer aplikasi utama dalam volume bersama.
Skenario ini adalah contoh, dan tidak mewakili satu-satunya cara Anda dapat menerapkan sespan.
Untuk menjalankan beberapa kontainer dalam aplikasi kontainer, tambahkan lebih dari satu kontainer dalam array containers
template aplikasi kontainer.
Wadah init
Anda dapat menentukan satu atau beberapa kontainer init di aplikasi kontainer. Kontainer init berjalan sebelum kontainer aplikasi utama dan digunakan untuk melakukan tugas inisialisasi seperti mengunduh data atau menyiapkan lingkungan.
Kontainer init didefinisikan dalam initContainers
array templat aplikasi kontainer. Kontainer berjalan dalam urutan yang ditentukan dalam array dan harus berhasil diselesaikan sebelum kontainer aplikasi utama dimulai.
Catatan
Init kontainer dalam aplikasi yang menggunakan paket Khusus atau berjalan di lingkungan Hanya konsumsi tidak dapat mengakses identitas terkelola pada waktu proses.
Registri kontainer
Anda dapat menyebarkan citra yang dihosting di registri privat dengan menyediakan info masuk dalam konfigurasi Container Apps.
Untuk menggunakan registri kontainer, Anda menentukan registri dalam registries
array di bagian properties.configuration
templat sumber daya aplikasi kontainer. Bidang passwordSecretRef
mengidentifikasi nama rahasia dalam nama array secrets
tempat Anda menentukan kata sandi.
{
...
"registries": [{
"server": "docker.io",
"username": "my-registry-user-name",
"passwordSecretRef": "my-password-secret-name"
}]
}
Kredensial tersimpan digunakan untuk menarik gambar kontainer dari registri privat saat aplikasi Anda disebarkan.
Contoh berikut menunjukkan cara mengonfigurasi info masuk Azure Container Registry di aplikasi kontainer.
{
...
"configuration": {
"secrets": [
{
"name": "docker-hub-password",
"value": "my-docker-hub-password"
}
],
...
"registries": [
{
"server": "docker.io",
"username": "someuser",
"passwordSecretRef": "docker-hub-password"
}
]
}
}
Catatan
Docker Hub membatasi jumlah unduhan gambar Docker. Saat batas tercapai, kontainer di aplikasi Anda akan gagal dimulai. Gunakan registri dengan batas yang memadai, seperti Azure Container Registry untuk menghindari masalah ini.
Identitas terkelola dengan Azure Container Registry
Anda dapat menggunakan identitas terkelola Azure untuk mengautentikasi dengan Azure Container Registry alih-alih menggunakan nama pengguna dan kata sandi. Untuk informasi selengkapnya, lihat Identitas terkelola di Azure Container Apps.
Untuk menggunakan identitas terkelola acrPull
dengan registri, identitas harus diaktifkan di aplikasi dan harus ditetapkan peran dalam registri. Untuk mengonfigurasi registri, gunakan ID sumber daya identitas terkelola untuk identitas yang ditetapkan pengguna, atau system
untuk identitas yang ditetapkan sistem di identity
properti registri. Jangan mengonfigurasi nama pengguna dan kata sandi saat menggunakan identitas terkelola.
{
"identity": {
"type": "SystemAssigned,UserAssigned",
"userAssignedIdentities": {
"<IDENTITY1_RESOURCE_ID>": {}
}
}
"properties": {
"configuration": {
"registries": [
{
"server": "myacr1.azurecr.io",
"identity": "<IDENTITY1_RESOURCE_ID>"
},
{
"server": "myacr2.azurecr.io",
"identity": "system"
}]
}
...
}
}
Untuk informasi selengkapnya tentang mengonfigurasi identitas yang ditetapkan pengguna, lihat Menambahkan identitas yang ditetapkan pengguna.
Batasan
Azure Container Apps memiliki batasan sebagai berikut:
Kontainer istimewa: Azure Container Apps tidak mengizinkan mode kontainer istimewa dengan akses tingkat host.
Sistem operasi: Citra kontainer berbasis Linux (
linux/amd64
) diperlukan.Ukuran gambar maksimum:
- Profil beban kerja konsumsi mendukung gambar kontainer yang berjumlah hingga 8GB untuk setiap aplikasi atau replika pekerjaan.
- Profil beban kerja khusus mendukung gambar kontainer yang lebih besar. Karena profil beban kerja Khusus dapat menjalankan beberapa aplikasi atau pekerjaan, beberapa gambar kontainer berbagi ruang disk yang tersedia. Ukuran gambar yang didukung aktual bervariasi berdasarkan sumber daya yang digunakan oleh aplikasi dan pekerjaan lain.