Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini adalah bagian dari seri tutorial tentang cara membuat kontainer dan menyebarkan aplikasi web Python untuk Azure Container Apps. Container Apps memungkinkan Anda menyebarkan aplikasi kontainer tanpa mengelola infrastruktur yang kompleks.
Dalam tutorial ini, Anda:
- Konfigurasikan penyebaran berkelanjutan untuk aplikasi kontainer dengan menggunakan alur kerja GitHub Actions
. - Buat perubahan pada salinan repositori sampel untuk memicu alur kerja Tindakan GitHub.
- Menyelesaikan masalah yang mungkin Anda temui dalam mengonfigurasi penyebaran berkelanjutan.
- Hapus sumber daya yang tidak Anda butuhkan saat menyelesaikan seri tutorial.
Penyebaran berkelanjutan terkait dengan praktik DevOps integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD), yang merupakan otomatisasi alur kerja pengembangan aplikasi Anda.
Diagram berikut menyoroti tugas dalam tutorial ini.
Prasyarat
Untuk menyiapkan penyebaran berkelanjutan, Anda memerlukan:
Sumber daya (dan konfigurasinya) yang Anda buat di tutorial sebelumnya, yang mencakup instans Azure Container Registry dan aplikasi kontainer di Azure Container Apps.
Akun GitHub tempat Anda menyimpan salinan kode sampel (Django atau Flask) dan yang dapat Anda hubungkan ke Azure Container Apps. (Jika Anda mengunduh kode sampel alih-alih "forking", pastikan Anda mendorong repositori lokal Anda ke akun GitHub Anda.)
Opsional, Git diinstal di lingkungan pengembangan Anda untuk mempermudah membuat perubahan kode dan mengunggah ke repo Anda di GitHub. Atau, Anda dapat membuat perubahan langsung di GitHub.
Mengonfigurasi penyebaran berkelanjutan untuk kontainer
Dalam tutorial sebelumnya, Anda membuat dan mengonfigurasi aplikasi kontainer di Azure Container Apps. Bagian dari konfigurasi adalah menarik gambar Docker dari instans Azure Container Registry. Gambar kontainer ditarik dari registri saat Anda membuat kontainer revisi, seperti ketika Anda pertama kali menyiapkan aplikasi kontainer.
Di bagian ini, Anda menyiapkan penyebaran berkelanjutan dengan menggunakan alur kerja GitHub Actions. Dengan penyebaran berkelanjutan, gambar Docker baru dan revisi kontainer dibuat berdasarkan pemicu tertentu. Pemicu dalam tutorial ini adalah perubahan apa pun pada cabang utama dari repositori Anda, misalnya melalui permintaan tarik. Saat alur kerja dipicu, alur kerja membuat citra Docker baru, mengunggahnya ke instance Azure Container Registry, dan memperbarui aplikasi kontainer ke revisi baru dengan menggunakan citra baru.
- Azure CLI
- Portal Azure
Anda dapat menjalankan perintah Azure CLI di Azure Cloud Shell atau di stasiun kerja tempat Azure CLI diinstal.
Jika Anda menjalankan perintah di shell Git Bash di komputer Windows, masukkan perintah berikut sebelum melanjutkan:
export MSYS_NO_PATHCONV=1
Buat perwakilan layanan dengan menggunakan perintah az ad sp create-for-rbac:
az ad sp create-for-rbac \ --name <app-name> \ --role Contributor \ --scopes "/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>"Dalam perintah:
-
<app-name> adalah nama tampilan opsional untuk perwakilan layanan. Jika Anda meninggalkan opsi
--name, GUID dihasilkan sebagai nama tampilan. -
<
>
ID langganan adalah GUID yang secara unik mengidentifikasi langganan Anda di Azure. Jika tidak mengetahui ID langganan, Anda dapat menjalankan perintah az account show dan menyalinnya dari properti
iddalam output. -
<resource-group-name> adalah nama grup sumber daya yang berisi kontainer Azure Container Apps. Kontrol akses berbasis peran (RBAC) berada di tingkat grup sumber daya. Jika Anda mengikuti langkah-langkah dalam tutorial sebelumnya, nama grup sumber daya
pythoncontainer-rg.
Simpan output perintah ini untuk langkah berikutnya. Secara khusus, simpan ID klien ( properti
appId), rahasia klien ( propertipassword), dan ID penyewa ( propertitenant).-
<app-name> adalah nama tampilan opsional untuk perwakilan layanan. Jika Anda meninggalkan opsi
Konfigurasikan GitHub Actions dengan menggunakan perintah az containerapp github-action add:
az containerapp github-action add \ --resource-group <resource-group-name> \ --name python-container-app \ --repo-url <https://github.com/userid/repo> \ --branch main \ --registry-url <registry-name>.azurecr.io \ --service-principal-client-id <client-id> \ --service-principal-tenant-id <tenant-id> \ --service-principal-client-secret <client-secret> \ --login-with-githubDalam perintah:
- Nama grup sumber daya <> adalah nama grup sumber daya tersebut. Dalam tutorial ini,
pythoncontainer-rg. -
<https://github.com/userid/repo> adalah URL repositori GitHub Anda. Dalam tutorial ini, antara
https://github.com/userid/msdocs-python-django-azure-container-appsatauhttps://github.com/userid/msdocs-python-flask-azure-container-apps. Dalam URL tersebut,useridadalah ID pengguna GitHub Anda. - < > nama registri adalah instans Azure Container Registry yang sudah ada yang Anda buat di tutorial sebelumnya, atau yang dapat Anda gunakan.
-
<
>
id klien adalah nilai properti
appIddari perintahaz ad sp create-for-rbacsebelumnya. ID adalah GUID dengan format00000000-0000-0000-0000-00000000. -
<
>
id penyewa adalah nilai properti
tenantdari perintahaz ad sp create-for-rbacsebelumnya. ID tersebut juga merupakan GUID yang mirip dengan ID klien. -
<
>
rahasia klien adalah nilai properti
passworddari perintahaz ad sp create-for-rbacsebelumnya.
- Nama grup sumber daya <> adalah nama grup sumber daya tersebut. Dalam tutorial ini,
Dalam konfigurasi penyebaran berkelanjutan, perwakilan layanan memungkinkan GitHub Actions mengakses dan memodifikasi sumber daya Azure. Peran yang diberikan kepada entitas layanan membatasi akses ke sumber daya. Perwakilan layanan diberikan peran Kontributor bawaan pada grup sumber daya yang berisi aplikasi kontainer.
Jika Anda mengikuti langkah-langkah untuk portal, prinsipal layanan secara otomatis dibuat untuk Anda. Jika Anda mengikuti langkah-langkah di Azure CLI, Anda secara eksplisit membuat entitas layanan sebelum mengonfigurasi penerapan berkelanjutan.
Menyebarkan ulang aplikasi web dengan GitHub Actions
Pada bagian ini, Anda membuat perubahan pada salinan repositori sampel yang telah Anda fork. Setelah itu, Anda dapat mengonfirmasi bahwa perubahan secara otomatis disebarkan ke situs web.
Jika Anda belum melakukannya, buat fork dari repositori sampel (Django atau Flask). Anda dapat membuat perubahan kode secara langsung di GitHub atau di lingkungan pengembangan Anda dari baris perintah dengan Git.
Buka fork dari repositori sampel Anda dan mulai di cabang utama .
Buat perubahan:
- Buka file /templates/base.html. (Untuk Django, jalurnya adalah restaurant_review/templates/restaurant_review/base.html.)
- Pilih Edit dan ubah frasa
Azure Restaurant ReviewmenjadiAzure Restaurant Review - Redeployed.
Di bagian bawah halaman yang sedang Anda edit, pastikan Komit langsung ke cabang utama dipilih. Lalu pilih tombol Terapkan perubahan.
Komit memulai proses kerja GitHub Actions.
Nota
Tutorial ini menunjukkan membuat perubahan langsung di cabang utama . Dalam alur kerja perangkat lunak umum, Anda membuat perubahan di cabang selain
Memahami Tindakan GitHub
Menampilkan riwayat alur kerja
Jika Anda perlu melihat riwayat alur kerja, gunakan salah satu prosedur berikut.
Pada GitHub, buka fork repositori sampel Anda dan buka tab Actions.
Rahasia alur kerja
File alur kerja .github/workflows/<>.yml yang ditambahkan ke repositori mencakup tempat penampung untuk kredensial yang diperlukan untuk pekerjaan build dan pembaruan aplikasi kontainer dari alur kerja. Informasi kredensial disimpan dienkripsi di area Pengaturan
Jika informasi kredensial berubah, Anda dapat memperbaruinya di sini. Misalnya, jika kata sandi Azure Container Registry diregenerasi, Anda perlu memperbarui nilai REGISTRY_PASSWORD. Untuk informasi selengkapnya, lihat Rahasia terenkripsi dalam dokumentasi GitHub.
Aplikasi yang diotorisasi oleh OAuth
Saat menyiapkan penyebaran berkelanjutan, Anda menetapkan Azure Container Apps sebagai aplikasi OAuth resmi untuk akun GitHub Anda. Container Apps menggunakan akses resmi untuk membuat file GITHub Actions YAML di .github/workflows/<workflow-name>.yml. Anda dapat melihat aplikasi yang diotorisasi dan mencabut izin di akun Anda, di bawah Integrasi>Aplikasi.
Mengatasi Masalah
Anda mengalami kesalahan ketika menyiapkan perwakilan layanan melalui Azure CLI
Bagian ini dapat membantu Anda memecahkan masalah kesalahan yang Anda alami saat menyiapkan perwakilan layanan dengan menggunakan perintah Azure CLI az ad sp create-for-rba.
Jika Anda mendapatkan kesalahan yang berisi "InvalidSchema: Tidak ada adaptor koneksi yang ditemukan":
Cek shell yang sedang Anda gunakan. Jika Anda menggunakan shell Bash, atur variabel
MSYS_NO_PATHCONVsebagaiexport MSYS_NO_PATHCONV=1.Untuk informasi selengkapnya, lihat masalah GitHub Tidak dapat membuat principal layanan menggunakan Azure CLI dari shell Git Bash.
Jika Anda mendapatkan kesalahan yang berisi "Lebih dari satu aplikasi memiliki nama tampilan yang sama":
- Nama tersebut sudah digunakan untuk service principal. Pilih nama lain, atau hilangkan argumen
--name. GUID akan dibuat secara otomatis dan digunakan sebagai nama tampilan.
Alur kerja GitHub Actions gagal
Untuk memeriksa status alur kerja, buka tab Tindakan
- Jika ada alur kerja yang gagal, teliti secara mendetail file alur kerja. Harus ada dua pekerjaan: membangun dan menyebarkan. Untuk pekerjaan yang gagal, periksa output dari tugas pekerjaan tersebut untuk mencari masalah.
- Jika ada pesan kesalahan yang berisi "Batas waktu jabat tangan TLS", jalankan alur kerja secara manual. Di repositori, pada tab Tindakan, pilih Picu penyebaran otomatis untuk melihat apakah batas waktu merupakan masalah sementara.
- Jika Anda menyiapkan penyebaran berkelanjutan untuk aplikasi kontainer seperti yang ditunjukkan dalam tutorial ini, file alur kerja (.github/workflows/<workflow-name>.yml) dibuat secara otomatis untuk Anda. Anda tidak perlu memodifikasi file ini untuk tutorial ini. Jika Anda melakukannya, kembalikan perubahan Anda dan uji alur kerjanya lagi.
Laman web tidak menampilkan perubahan yang Anda gabungkan di cabang utama
Di GitHub:
- Periksa apakah alur kerja GitHub Actions telah dijalankan dan Anda memasukkan perubahan ke cabang yang memicu alur kerja tersebut.
Di portal Microsoft Azure:
Periksa instans Azure Container Registry untuk melihat apakah gambar Docker baru dibuat dengan stempel waktu setelah perubahan Anda ke cabang.
Periksa log aplikasi kontainer untuk melihat apakah ada kesalahan pemrograman:
- Buka aplikasi kontainer, lalu buka Manajemen Revisi><kontainer aktif>>Detail revisi>log konsol.
- Pilih urutan kolom untuk menampilkan Time Generated, Stream_s, dan Log_s.
- Urutkan log menurut yang terbaru dan cari pesan Python
stderrdanstdoutdi kolom Stream_s. Pesanprintadalah outputstdoutdari Python.
Di Azure CLI:
- Gunakan perintah az containerapp logs show.
Anda ingin menghentikan penyebaran berkelanjutan
Menghentikan penyebaran berkelanjutan berarti memutus sambungan aplikasi kontainer Anda dari repositori Anda.
Di portal Microsoft Azure:
- Buka aplikasi kontainer. Pada menu layanan, pilih Penyebaran berkelanjutan, lalu pilih Putuskan sambungan.
Di Azure CLI:
- Gunakan perintah az container app github-action remove.
Setelah Anda memutuskan sambungan:
- File
.yml nama alur kerja .github/workflows/ dihapus dari repositori Anda. - Kunci rahasia tidak dihapus dari repositori.
- Azure Container Apps tetap sebagai aplikasi OAuth resmi untuk akun GitHub Anda.
- Di Azure, kontainer dibiarkan dalam keadaan kontainer terakhir yang disebarkan. Anda dapat menyambungkan kembali aplikasi kontainer dengan instans Azure Container Registry, sehingga revisi kontainer baru dapat menggunakan citra terbaru.
- Di Azure, prinsipal layanan yang Anda buat dan gunakan untuk penyebaran berkelanjutan tidak dihapus.
Menghapus sumber daya
Jika Anda sudah selesai dengan seri tutorial dan Anda tidak ingin dikenakan biaya tambahan, hapus sumber daya yang Anda gunakan.
Menghapus grup sumber daya menghapus semua sumber daya dalam grup dan merupakan cara tercepat untuk menghapus sumber daya. Untuk contoh cara menghapus kelompok sumber daya, lihat tutorial pembersihan Containerize.
Konten terkait
Jika Anda berencana untuk membangun tutorial ini, berikut adalah beberapa langkah berikutnya yang dapat Anda lakukan: