Lakukan penyebaran ke Aplikasi Azure Container dari Azure Pipeline

Azure Container Apps memungkinkan Anda menggunakan Azure Pipelines untuk menerbitkan revisi ke aplikasi kontainer Anda. Saat komit diteruskan ke repositori Azure DevOps Anda, sebuah pipeline dipicu yang memperbarui citra kontainer di dalam registri kontainer. Container Apps membuat revisi baru berdasarkan gambar kontainer yang diperbarui.

Komit ke cabang tertentu di repositori Anda mengaktifkan pipeline. Saat membuat alur, Anda memutuskan cabang mana yang menjadi pemicunya.

Tugas Container Apps di Azure Pipelines

Tugas ini mendukung skenario berikut:

  • Buat dari Dockerfile dan sebarkan ke Aplikasi Kontainer.
  • Buat dari kode sumber tanpa Dockerfile dan sebarkan ke Aplikasi Kontainer. Bahasa yang didukung termasuk .NET, Java, Node.js, PHP, dan Python.
  • Sebarkan gambar kontainer yang ada ke Aplikasi Kontainer.

Dengan rilis produksi, tugas ini dilengkapi dengan Azure DevOps dan tidak memerlukan penginstalan eksplisit. Untuk dokumentasi lengkapnya, lihat AzureContainerApps@1 - Fungsi Azure Container Apps Deploy v1.

Contoh penggunaan

Berikut ini adalah beberapa skenario umum untuk menggunakan tugas. Untuk informasi selengkapnya, lihat dokumentasi tugas.

Bangun dan menerapkan ke Aplikasi Kontainer

Cuplikan berikut menunjukkan cara membuat gambar kontainer dari kode sumber dan menyebarkannya ke Container Apps.

steps:
- task: AzureContainerApps@1
  inputs:
    appSourcePath: '$(Build.SourcesDirectory)/src'
    azureSubscription: 'my-subscription-service-connection'
    acrName: 'myregistry'
    containerAppName: 'my-container-app'
    resourceGroup: 'my-container-app-rg'

Tugas menggunakan Dockerfile di appSourcePath untuk membangun gambar kontainer. Jika tidak ada Dockerfile yang ditemukan, tugas mencoba membangun gambar kontainer dari kode sumber di appSourcePath.

Menyebarkan gambar kontainer yang ada ke Aplikasi Kontainer

Cuplikan berikut menunjukkan cara menyebarkan gambar kontainer yang ada ke Container Apps. Tugas mengautentikasi dengan registri dengan menggunakan koneksi layanan. Jika identitas koneksi layanan tidak diberi peran AcrPush untuk registri, berikan kredensial admin registri dengan menggunakan parameter input acrUsername dan acrPassword.

steps:
  - task: AzureContainerApps@1
    inputs:
      azureSubscription: 'my-subscription-service-connection'
      containerAppName: 'my-container-app'
      resourceGroup: 'my-container-app-rg'
      imageToDeploy: 'myregistry.azurecr.io/my-container-app:$(Build.BuildId)'

Penting

Jika Anda membangun gambar kontainer dalam langkah terpisah, pastikan untuk menggunakan tag unik seperti ID build alih-alih tag stabil seperti latest. Untuk informasi selengkapnya, lihat Praktik tag gambar terbaik.

Mengautentikasi dengan Azure Container Registry

Tugas Container Apps perlu melakukan autentikasi terhadap Azure Container Registry Anda untuk mengunggah citra kontainer. Aplikasi kontainer juga perlu mengautentikasi dengan registri kontainer Anda untuk menarik gambar kontainer.

Untuk mengunggah gambar, tugas secara otomatis mengautentikasi dengan registri kontainer yang ditentukan di acrName menggunakan koneksi layanan yang disediakan di azureSubscription. Jika identitas koneksi layanan tidak diberi AcrPush peran untuk registri, berikan kredensial admin registri dengan menggunakan acrUsername dan acrPassword.

Untuk mengambil image, Container Apps menggunakan identitas terkelola (disarankan) atau kredensial admin untuk mengautentikasi dengan registri kontainer. Untuk menggunakan identitas terkelola, aplikasi kontainer target untuk tugas harus dikonfigurasi untuk menggunakan identitas terkelola. Untuk mengautentikasi menggunakan kredensial admin dari registri, atur input acrUsername dan acrPassword untuk tugas tersebut.

Konfigurasi

Selesaikan langkah-langkah berikut untuk mengonfigurasi alur Azure DevOps untuk disebarkan ke Aplikasi Kontainer.

  • Membuat repositori Azure DevOps untuk aplikasi Anda
  • Membuat aplikasi kontainer dengan identitas terkelola diaktifkan
  • AcrPull Menetapkan peran untuk registri kontainer ke identitas terkelola aplikasi kontainer
  • Mengonfigurasi koneksi layanan Azure DevOps untuk langganan Azure Anda
  • Membuat alur Azure DevOps

Prasyarat

Persyaratan Petunjuk
Akun Azure Jika Anda tidak memilikinya, buat akun secara gratis. Anda memerlukan izin Kontributor atau Pemilik pada langganan Azure untuk menyelesaikan prosedur dalam artikel ini. Untuk informasi selengkapnya, lihat Menetapkan peran Azure menggunakan portal Microsoft Azure.
Proyek Azure DevOps Buka Azure DevOps dan pilih Mulai dengan Azure. Kemudian buat proyek baru.
Azure CLI Instal Azure CLI.

Membuat repositori Azure DevOps dan mengkloning kode sumber

Sebelum Anda membuat alur, kode sumber untuk aplikasi Anda harus berada di repositori.

  1. Masuk ke Azure DevOps dan buka proyek Anda.

  2. Pilih Repos di panel kiri.

  3. Pilih Impor repositori.

  4. Masukkan nilai berikut, lalu pilih Impor:

    Bidang Nilai
    Jenis repositori Git
    URL Kloning https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
  5. Pilih Import.

  6. Pilih Kloning untuk melihat URL repositori dan menyalinnya.

  7. Buka jendela command prompt dan jalankan perintah berikut:

    git clone <REPOSITORY_URL> my-container-app
    

    Ganti <REPOSITORY_URL> dengan URL yang Anda salin.

Membuat aplikasi kontainer dan mengonfigurasi identitas terkelola

Buat aplikasi kontainer Anda dengan menyelesaikan langkah-langkah berikut. az containerapp up Perintah membuat sumber daya Azure, membangun gambar kontainer, menyimpan gambar dalam registri, dan menyebarkan aplikasi kontainer.

Setelah aplikasi dibuat, Anda dapat menambahkan identitas terkelola ke dalam aplikasi dan menetapkan peran AcrPull kepada identitas tersebut untuk memungkinkan identitas mengambil gambar dari registri.

  1. Beralih ke folder src dari repositori yang sudah dikloning:

    cd my-container-app
    cd src
    
  2. Buat sumber daya Azure dan sebarkan aplikasi kontainer dengan menggunakan az containerapp up perintah :

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    

    Tip

    Jika build gagal dengan kesalahan repositori Debian, pastikan Anda menggunakan versi Azure CLI terbaru dan ekstensi containerapp dengan menjalankan az extension add --name containerapp --upgrade. Atau, tambahkan Dockerfile ke proyek Anda untuk kontrol lebih besar atas build.

  3. Dalam output perintah, perhatikan nama registri kontainer Azure.

  4. Dapatkan ID sumber daya lengkap dari registri kontainer:

    az acr show --name <ACR_NAME> --query id --output tsv
    

    Ganti <ACR_NAME> dengan nama register Anda.

  5. Aktifkan identitas terkelola untuk aplikasi kontainer:

    az containerapp identity assign \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --system-assigned
    

    Perhatikan ID utama identitas terkelola dalam output perintah.

  6. Berikan peran AcrPull untuk Registri Kontainer kepada identitas terkelola dari aplikasi kontainer.

    az role assignment create \
      --assignee <MANAGED_IDENTITY_PRINCIPAL_ID> \
      --role AcrPull \
      --scope <ACR_RESOURCE_ID>
    

    Ganti <MANAGED_IDENTITY_PRINCIPAL_ID> dengan ID utama identitas terkelola dan <ACR_RESOURCE_ID> dengan ID sumber daya Container Registry.

  7. Konfigurasikan aplikasi kontainer untuk menggunakan identitas terkelola untuk menarik gambar dari registri kontainer:

    az containerapp registry set \
      --name my-container-app \
      --resource-group my-container-app-rg \
      --server <ACR_NAME>.azurecr.io \
      --identity system
    

    Ganti <ACR_NAME> dengan nama registri kontainer Azure Anda.

Membuat koneksi layanan Azure DevOps

Untuk menyebarkan ke Aplikasi Kontainer, Anda perlu membuat koneksi layanan Azure DevOps untuk langganan Azure Anda.

  1. Di Azure DevOps, pilih Pengaturan proyek.

  2. Pilih Koneksi layanan.

  3. Pilih Buat koneksi layanan.

  4. Pilih Azure Resource Manager, lalu pilih Berikutnya.

  5. Pilih Pendaftaran aplikasi (otomatis), lalu pilih Berikutnya.

  6. Berikan nilai berikut, lalu pilih Simpan:

    Bidang Nilai
    Langganan Pilih langganan Azure Anda.
    Grup sumber daya Pilih grup sumber daya (my-container-app-rg) yang berisi aplikasi kontainer dan registri kontainer Anda.
    Nama koneksi layanan my-subscription-service-connection

Untuk mempelajari selengkapnya tentang koneksi layanan, lihat Menyambungkan ke Microsoft Azure.

Membuat alur YAML Azure DevOps

  1. Di proyek Azure DevOps Anda, pilih Alur.

  2. Pilih Buat alur.

  3. Pilih Azure Repos Git.

    Nota

    Jika Anda tidak melihat Azure Repos Git sebagai opsi, pastikan kode sumber Anda didorong ke repositori Git di proyek Azure DevOps Anda.

  4. Pilih repositori yang berisi kode sumber Anda (my-container-app).

  5. Pilih Alur pemula.

  6. Di editor, ganti konten file dengan YAML berikut:

    trigger:
      branches:
        include:
          - main
    
    pool:
      vmImage: ubuntu-latest
    
    steps:
      - task: AzureContainerApps@1
        inputs:
          appSourcePath: '$(Build.SourcesDirectory)/src'
          azureSubscription: '<AZURE_SUBSCRIPTION_SERVICE_CONNECTION>'
          acrName: '<ACR_NAME>'
          containerAppName: 'my-container-app'
          resourceGroup: 'my-container-app-rg'
    

    Ganti <AZURE_SUBSCRIPTION_SERVICE_CONNECTION> dengan nama koneksi layanan Azure DevOps (my-subscription-service-connection) yang Anda buat di langkah sebelumnya. Ganti <ACR_NAME> dengan nama registri kontainer Azure Anda.

  7. Pilih Simpan dan jalankan.

Proses Azure Pipelines dimulai untuk membangun dan menyebarkan aplikasi kontainer Anda. Untuk memeriksa kemajuannya, buka Pipelines dan pilih jalankan. Selama menjalankan pipeline pertama, Anda mungkin diminta untuk mengizinkan pipeline menggunakan koneksi layanan Anda.

Untuk menyebarkan revisi baru aplikasi Anda, lakukan commit baru ke cabang utama.