Bagikan melalui


Penyebaran berkelanjutan dengan kontainer kustom di Azure App Service

Dalam tutorial ini, Anda mengonfigurasi penyebaran berkelanjutan untuk gambar kontainer kustom dari repositori Azure Container Registry terkelola atau Docker Hub.

1. Buka Pusat Penyebaran

Di portal Microsoft Azure, buka halaman manajemen untuk aplikasi App Service Anda.

Dari menu sebelah kiri, klik Penyebaran. Pusat > Pengaturan.

2.Pilih sumber penyebaran

Pilih sumber penyebaran tergantung pada skenario Anda:

  • Registri kontainer menyiapkan CI/CD antara registri kontainer dan Azure App Service Anda.
  • Opsi Tindakan GitHub adalah untuk Anda jika Anda mempertahankan kode sumber untuk gambar kontainer Anda di GitHub. Dipicu oleh penerapan baru ke repositori GitHub Anda, tindakan penyebaran dapat berjalan docker build dan docker push langsung ke registri kontainer Anda, lalu perbarui aplikasi Azure App Service Anda untuk menjalankan gambar baru. Untuk informasi selengkapnya, lihat Cara kerja CI/CD dengan Tindakan GitHub.
  • Untuk menyiapkan CI/CD denganAlur Azure, lihat Sebarkan Kontainer Azure Web App dari Azure Pipelines.

Catatan

Untuk aplikasi Docker Compose, pilihContainer Registry.

Jika Anda memilih Tindakan GitHub, klik Otorisasi dan ikuti perintah otorisasi. Jika Anda telah mengizinkan GitHub sebelumnya, Anda dapat menyebarkan dari repositori pengguna yang berbeda dengan mengklik Ubah Akun.

Setelah Anda mengotorisasi akun Azure Anda dengan GitHub, pilih Organisasi, Repositori, dan Cabang untuk disebarkan.

2. Konfigurasikan pengaturan registri

3. Konfigurasikan pengaturan registri

Catatan

Kontainer sidecar (pratinjau) akan berhasil aplikasi multi-kontainer (Docker Compose) di App Service. Untuk memulai, lihat Tutorial: Mengonfigurasi kontainer sidecar untuk kontainer kustom di Azure App Service (pratinjau).

Untuk menyebarkan aplikasi multikontainer (Docker Compose), pilih Docker Compose di Container Type.

Jika Anda tidak melihat turun bawah Container Type, gulir kembali ke atas ke Sumber dan pilih Container Registry.

Di Sumber registri, pilih di mana registri kontainer Anda berada. Jika bukan Azure Container Registry atau Docker Hub, pilih Privat Registri.

Catatan

Jika aplikasi multikontainer (Docker Compose) Anda menggunakan lebih dari satu gambar privat, pastikan gambar privat berada dalam registri privat yang sama dan dapat diakses dengan informasi masuk pengguna yang sama. Jika aplikasi multikontainer Anda hanya menggunakan gambar publik, pilih Docker Hub, bahkan jika beberapa gambar tidak ada di Docker Hub.

Ikuti langkah-langkah berikutnya dengan memilih tab yang sesuai dengan pilihan Anda.

Menu tarik-turun Registri menampilkan registri dalam langganan yang sama dengan aplikasi Anda. Pilih registri yang Anda inginkan.

Catatan

Pilih Gambar dan Tag untuk disebarkan. Jika Anda menginginkan, jenis perintah mulai di File Startup.

Ikuti langkah berikutnya tergantung pada Jenis Kontainer:

  • Untuk Docker Compose, pilih registri untuk gambar privat Anda. Klik Pilih file untuk mengunggah file Docker ComposeAnda, atau cukup tempelkan konten file Docker Compose Anda ke dalam Konfigurasi.
  • Untuk Kontainer Tunggal, pilih sebuah Gambar dan Tag untuk disebarkan. Jika Anda menginginkan, jenis perintah mulai di File Startup.

Azure App Service menambahkan string di File Startup ke akhirdocker run perintah (sebagai[COMMAND] [ARG...]segmen) saat memulai kontainer Anda.

3. Aktifkan CI/CD

4. Aktifkan CI/CD

App Service mendukung integrasi CI/CD dengan Azure Container Registry dan Docker Hub. Untuk mengaktifkannya,pilih Nyalakan dalam penyebaran Berkelanjutan.

Catatan

Jika Anda memilih Tindakan GitHub di Sumber, Anda tidak mendapatkan opsi ini karena CI/CD langsung ditangani oleh Tindakan GitHub. Sebagai gantinya, Anda akan melihat bagian Konfigurasi Alur Kerja, di mana Anda dapat mengklik file Pratinjau untuk memeriksa file alur kerja. Azure menerapkan file ini ke dalam repositori GitHub yang Anda pilih untuk menangani tugas bangun dan sebarkan. Untuk informasi selengkapnya, lihat Cara kerja CI/CD dengan Tindakan GitHub.

Saat Anda mengaktifkan opsi ini, App Service menambahkan webhook ke repositori Anda di Azure Container Registry atau Docker Hub. Repositori Anda dikirim ke webhook kapan saja gambar terpilih Anda diperbaruidocker push. Webhook menyebabkan aplikasi Azure App Service Anda dimulai ulang dan dijalankandocker pulluntuk mendapatkan gambar yang diperbarui.

Catatan

Untuk memastikan fungsi webhook yang tepat, penting untuk mengaktifkan opsi Kredensial Penerbitan Autentikasi Dasar dalam Aplikasi Web Anda. Kegagalan untuk melakukannya dapat mengakibatkan kesalahan 401 tidak sah untuk webhook. Untuk memverifikasi apakah Kredensial Penerbitan Autentikasi Dasar diaktifkan, ikuti langkah-langkah berikut:

  • Navigasi ke Pengaturan Umum Konfigurasi > Aplikasi Web Anda.
  • Cari bagian Pengaturan Platform, tempat Anda akan menemukan opsi Kredensial Penerbitan Autentikasi Dasar.

Untuk registri privat lainnya, Anda dapat posting ke webhook secara manual atau sebagai langkah dalam alur CI/CD. Di URL Webhook, klik tombol Salin untuk mendapatkan URL webhook.

Catatan

Dukungan untuk aplikasi multikontainer (Docker Compose) terbatas:

  • Untuk Azure Container Registry, App Service membuat webhook di registri yang dipilih dengan registri sebagai lingkup. Sebuah docker push ke repositori apa pun di registri (termasuk yang tidak direferensikan oleh file Docker Compose Anda) memicu hidupkan ulang aplikasi. Anda mungkin ingin memodifikasi webhook ke cakupan yang lebih sempit.
  • Docker Hub tidak mendukung webhook di tingkat registri. Anda harusmenambahkan webhook secara manual ke gambar yang ditentukan dalam file Docker Compose Anda.

4. Menyimpan pengaturan Anda

5. Menyimpan pengaturan Anda

KlikSimpan.

Cara kerja CI/CD dengan GitHub Actions

Jika Anda memilihTindakan GitHubdi Sumber (lihat Pilih sumber penyebaran), App Service menyiapkan CI/CD dengan cara berikut:

  • Simpan file alur kerja Tindakan GitHub ke dalam repositori GitHub Anda untuk menangani tugas membangun dan menyebarkan ke App Service.
  • Tambahkan informasi masuk untuk registri privat Anda sebagai rahasia GitHub. File alur kerja yang dihasilkan menjalankan tindakan Azure/docker-loginuntuk masuk dengan registri privat Anda, lalu jalankandocker pushuntuk menyebarkannya.
  • Tambahkan profil penerbitan untuk aplikasi Anda sebagai rahasia GitHub. File alur kerja yang dihasilkan menggunakan rahasia ini untuk mengautentikasi dengan App Service, lalu jalankan tindakan Azure/webapps-deploy untuk mengonfigurasi gambar yang diperbarui, yang memicu hidupkan ulang aplikasi untuk menarik gambar yang telah diperbarui.
  • Ambil informasi dari log alur kerja yang dijalankandan tampilkan informasi itu di tabLog diPusat Penyebaranaplikasi Anda.

Anda dapat menyesuaikan penyedia bangun GitHub Actions dengan cara berikut:

  • Kustomisasi file alur kerja setelah dibuat di repositori GitHub Anda. Untuk informasi selengkapnya, lihat Sintaks alur kerja untuk Tindakan GitHub. Pastikan alur kerja diakhiri dengan tindakan Azure/webapps-deploy untuk memicu hidupkan ulang aplikasi.
  • Jika cabang yang dipilih dilindungi, Anda masih dapat melihat pratinjau file alur kerja tanpa menyimpan konfigurasi, lalu menambahkannya dan rahasia GitHub dalam repositori Anda secara manual. Metode ini tidak memberi Anda integrasi log dengan portal Azure.
  • Alih-alih profil penerbitan, sebarkan menggunakan perwakilan layanan di ID Microsoft Entra.

Autentikasi dengan perwakilan layanan

Konfigurasi opsional ini menggantikan autentikasi default dengan profil penerbitan dalam file alur kerja yang dihasilkan.

Hasilkan perwakilan layanan dengan perintah az ad sp create-for-rbac di Azure CLI. Dalam contoh berikut, ganti <subscription-id>, <group-name>, dan <app-name> dengan nilai Anda sendiri. Simpan seluruh output JSON untuk langkah berikutnya, termasuk tingkat-atas{}.

az ad sp create-for-rbac --name "myAppDeployAuth" --role contributor \
                            --scopes /subscriptions/<subscription-id>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name> \
                            --json-auth

Penting

Untuk keamanan, berikan akses minimum yang diperlukan ke perwakilan layanan. Cakupan dalam contoh sebelumnya terbatas pada aplikasi App Service tertentu dan bukan seluruh grup sumber daya.

Di GitHub, telusuri ke repositori Anda, lalu pilih Pengaturan > Rahasia > Tambahkan rahasia baru. Tempelkan seluruh output JSON dari perintah CLI Azure ke bidang nilai rahasia. Beri nama rahasia seperti AZURE_CREDENTIALS.

Dalam file alur kerja yang dihasilkan oleh Pusat Penyebaran, revisi langkah azure/webapps-deploy dengan kode seperti contoh berikut:

- name: Sign in to Azure 
# Use the GitHub secret you added
- uses: azure/login@v1
    with:
    creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy to Azure Web App
# Remove publish-profile
- uses: azure/webapps-deploy@v2
    with:
    app-name: '<app-name>'
    slot-name: 'production'
    images: '<registry-server>/${{ secrets.AzureAppService_ContainerUsername_... }}/<image>:${{ github.sha }}'
    - name: Sign out of Azure
    run: |
    az logout

Mengautomasi dengan CLI

Untuk mengkonfigurasi registri kontainer dan gambar Docker,jalankan set kontainer konfigurasi az webapp.

az webapp config container set --name <app-name> --resource-group <group-name> --docker-custom-image-name '<image>:<tag>' --docker-registry-server-url 'https://<registry-name>.azurecr.io' --docker-registry-server-user '<username>' --docker-registry-server-password '<password>'

Untuk mengkonfigurasi aplikasi multikontainer (Docker Compose), siapkan file Docker Compose secara lokal, lalu jalankan set kontainer konfigurasi az webappdengan --multicontainer-config-file parameter. Jika file Docker Compose memuat gambar privat, tambahkan --docker-registry-server-* parameter seperti yang ditunjukkan pada contoh sebelumnya.

az webapp config container set --resource-group <group-name> --name <app-name> --multicontainer-config-file <docker-compose-file>

Untuk mengonfigurasi CI/CD dari registri kontainer ke aplikasi Anda, jalankan konfigurasi kontainer penyebaran az webappdengan --enable-cd parameter. Perintah menghasilkan URL webhook, tetapi Anda harus membuat webhook di registri Anda secara manual dalam langkah terpisah. Contoh berikut memungkinkan CI/CD pada aplikasi Anda, lalu gunakan URL webhook dalam output untuk membuat webhook di Azure Container Registry.

ci_cd_url=$(az webapp deployment container config --name <app-name> --resource-group <group-name> --enable-cd true --query CI_CD_URL --output tsv)

az acr webhook create --name <webhook-name> --registry <registry-name> --resource-group <group-name> --actions push --uri $ci_cd_url --scope '<image>:<tag>'

Sumber daya lainnya