Bagikan melalui


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 penerapan didorong ke repositori Azure DevOps Anda, alur dipicu yang memperbarui gambar kontainer di registri kontainer. Azure Container Apps membuat revisi baru berdasarkan gambar kontainer yang diperbarui.

Menerapkan ke cabang tertentu di repositori Anda memicu alur. Saat membuat alur, Anda memutuskan cabang mana yang menjadi pemicunya.

Tugas Azure Pipelines Container Apps

Tugas ini mendukung skenario berikut:

  • Membangun dari Dockerfile dan menyebarkan 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
  • Menyebarkan gambar kontainer yang ada ke Aplikasi Kontainer

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

Contoh penggunaan

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

Membangun dan menyebarkan 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 ini 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 menggunakan koneksi layanan. Jika identitas koneksi layanan tidak diberi AcrPush peran untuk registri, berikan info masuk admin registri menggunakan acrUsername parameter input 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 Anda menggunakan tag unik seperti ID build alih-alih tag stabil seperti latest. Untuk informasi selengkapnya, lihat Praktik terbaik tag gambar.

Mengautentikasi dengan Azure Container Registry

Tugas Azure Container Apps perlu mengautentikasi dengan Azure Container Registry Anda untuk mendorong gambar kontainer. Aplikasi kontainer juga perlu mengautentikasi dengan Azure Container Registry Anda untuk menarik gambar kontainer.

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

Untuk menarik gambar, Azure Container Apps menggunakan identitas terkelola (disarankan) atau info masuk admin untuk mengautentikasi dengan Azure Container Registry. Untuk menggunakan identitas terkelola, aplikasi kontainer target untuk tugas harus dikonfigurasi untuk menggunakan identitas terkelola. Untuk mengautentikasi dengan kredensial admin registri, atur tugas acrUsername dan acrPassword input.

Konfigurasi

Lakukan langkah-langkah berikut untuk mengonfigurasi alur Azure DevOps untuk disebarkan ke Azure Container Apps.

  • Membuat repositori Azure DevOps untuk aplikasi Anda
  • Membuat aplikasi kontainer dengan identitas terkelola diaktifkan
  • AcrPull Menetapkan peran untuk Azure Container Registry ke identitas terkelola aplikasi kontainer
  • Menginstal tugas Azure Container Apps dari Marketplace Azure DevOps
  • 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 melanjutkan. Lihat Menetapkan peran Azure menggunakan portal Azure untuk detailnya.
Proyek Azure DevOps Buka Azure DevOps dan pilih Mulai gratis. Kemudian buat proyek baru.
Azure CLI Instal Azure CLI.

Membuat repositori Azure DevOps dan mengkloning kode sumber

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

  1. Masuk ke Azure DevOps dan navigasikan ke proyek Anda.

  2. Buka halaman Repos .

  3. Di bilah navigasi atas, pilih menu dropdown repositori dan pilih Impor repositori.

  4. Masukkan informasi berikut dan pilih Impor:

    Bidang Nilai
    Jenis repositori Git
    URL Kloning https://github.com/Azure-Samples/containerapps-albumapi-csharp.git
    Nama my-container-app
  5. Pilih Kloning untuk melihat URL repositori dan menyalinnya.

  6. Buka terminal 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 menggunakan az containerapp up perintah dengan langkah-langkah berikut. Perintah ini membuat sumber daya Azure, membangun gambar kontainer, menyimpan gambar dalam registri, dan menyebarkan ke aplikasi kontainer.

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

  1. Ubah ke folder src repositori kloning.

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

    az containerapp up \
      --name my-container-app \
      --source . \
      --ingress external 
    
  3. Dalam output perintah, perhatikan nama Azure Container Registry.

  4. Dapatkan ID sumber daya lengkap dari registri kontainer.

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

    Ganti <ACR_NAME> dengan nama aplikasi web 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. Tetapkan AcrPull peran untuk Azure Container Registry ke identitas terkelola 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 Azure Container Registry.

  7. Konfigurasikan aplikasi kontainer untuk menggunakan identitas terkelola untuk menarik gambar dari Azure Container Registry.

    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 Azure Container Registry Anda.

Membuat koneksi layanan Azure DevOps

Untuk menyebarkan ke Azure Container Apps, Anda perlu membuat koneksi layanan Azure DevOps untuk langganan Azure Anda.

  1. Di Azure DevOps, pilih Pengaturan proyek.

  2. Pilih Koneksi layanan.

  3. Pilih Koneksi layanan baru.

  4. Pilih Azure Resource Manager.

  5. Pilih Perwakilan layanan (otomatis) dan pilih Berikutnya.

  6. Masukkan informasi berikut dan 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 Pipa baru.

  3. Pilih Git Repositori Azure.

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

  5. Anda dapat memilih 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 dan <ACR_NAME> dengan nama Azure Container Registry Anda.

  7. Pilih Simpan dan jalankan.

Eksekusi Azure Pipelines mulai membangun dan menyebarkan aplikasi kontainer Anda. Untuk memeriksa kemajuannya, navigasikan ke Alur dan pilih eksekusi. Selama eksekusi alur pertama, Anda mungkin diminta untuk mengotorisasi alur untuk menggunakan koneksi layanan Anda.

Untuk menyebarkan revisi baru aplikasi Anda, dorong penerapan baru ke cabang utama .