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.
Masuk ke Azure DevOps dan navigasikan ke proyek Anda.
Buka halaman Repos .
Di bilah navigasi atas, pilih menu dropdown repositori dan pilih Impor repositori.
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
Pilih Kloning untuk melihat URL repositori dan menyalinnya.
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.
Ubah ke folder src repositori kloning.
cd my-container-app cd src
Buat sumber daya Azure dan sebarkan aplikasi kontainer dengan
az containerapp up
perintah .az containerapp up \ --name my-container-app \ --source . \ --ingress external
Dalam output perintah, perhatikan nama Azure Container Registry.
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.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.
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.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.
Di Azure DevOps, pilih Pengaturan proyek.
Pilih Koneksi layanan.
Pilih Koneksi layanan baru.
Pilih Azure Resource Manager.
Pilih Perwakilan layanan (otomatis) dan pilih Berikutnya.
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
Di proyek Azure DevOps Anda, pilih Alur.
Pilih Pipa baru.
Pilih Git Repositori Azure.
Pilih repositori yang berisi kode sumber Anda (
my-container-app
).Anda dapat memilih Alur pemula.
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.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 .