Bagikan melalui


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: Kontainer

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

Langkah berikutnya