Provisi dan penyebaran layanan mikro terprediksi di Azure

Tutorial ini menunjukkan cara memprovisikan dan menyebarkan aplikasi yang terdiri dari layanan mikro di Azure App Service sebagai satu unit dan dengan cara yang dapat diprediksi menggunakan kerangka grup sumber daya JSON dan skrip PowerShell.

Saat memprovisikan dan menyebarkan aplikasi skala tinggi yang terdiri dari layanan mikro yang sangat terpisah, pengulangan dan prediktabilitas sangat penting untuk kesuksesan. Azure App Service memungkinkan Anda membuat layanan mikro yang mencakup aplikasi web, ujung belakang seluler, dan aplikasi API. Azure Resource Manager memungkinkan Anda mengelola semua layanan mikro sebagai satu unit, bersama dengan dependensi sumber daya seperti database dan pengaturan kontrol sumber. Sekarang, Anda juga dapat menyebarkan aplikasi semacam itu menggunakan templat JSON dan skrip PowerShell sederhana.

Apa yang akan Anda lakukan

Dalam tutorial, Anda akan menerapkan aplikasi yang mencakup:

  • Dua aplikasi App Service (yaitu dua layanan mikro)
  • Ujung belakang SQL Database
  • Pengaturan aplikasi, string koneksi, dan kontrol sumber
  • Wawasan aplikasi, peringatan, pengaturan penskalaan otomatis

Alat yang akan Anda gunakan

Dalam tutorial ini, Anda akan menggunakan alat-alat berikut. Karena ini bukan diskusi komprehensif tentang alat, saya akan tetap berpegang pada skenario ujung ke ujung dan hanya memberi Anda pengantar singkat untuk masing-masing alat, dan di mana Anda dapat menemukan lebih banyak informasi tentang alat tersebut.

Templat Azure Resource Manager (JSON)

Setiap kali Anda membuat aplikasi di Azure App Service, misalnya, Azure Resource Manager menggunakan templat JSON untuk membuat seluruh grup sumber daya dengan sumber daya komponen. Templat kompleks dari Azure Marketplace dapat menyertakan database, akun penyimpanan, paket App Service, aplikasi itu sendiri, aturan pemberitahuan, pengaturan aplikasi, pengaturan penskalaan otomatis, dan banyak lagi, dan semua templat ini tersedia untuk Anda melalui PowerShell. Untuk informasi lebih lanjut tentang templat Azure Resource Manager, lihat Penulisan templat Azure Resource Manager

Azure SDK 2.6 untuk Visual Studio

SDK terbaru berisi peningkatan pada dukungan templat Resource Manager di editor JSON. Anda dapat menggunakan ini untuk dengan cepat membuat templat grup sumber daya dari awal atau membuka templat JSON yang ada (seperti templat galeri yang diunduh) untuk modifikasi, mengisi file parameter, dan bahkan menyebarkan grup sumber daya langsung dari solusi Azure Resource Group.

Untuk informasi selengkapnya, lihat Azure SDK 2.6 untuk Visual Studio.

Azure PowerShell 0.8.0 atau yang lebih baru

Mulai versi 0.8.0, penginstalan Azure PowerShell menyertakan modul Azure Resource Manager selain modul Azure. Modul baru ini memungkinkan Anda untuk membuat skrip penyebaran grup sumber daya.

Untuk informasi lebih lanjut, lihat Menggunakan Azure PowerShell dengan Azure Resource Manager

Azure Resource Explorer

Alat pratinjau ini memungkinkan Anda menjelajahi definisi JSON dari semua grup sumber daya dalam langganan Anda dan sumber daya individual. Di alat ini, Anda dapat mengedit definisi JSON dari sumber daya, menghapus seluruh hierarki sumber daya, dan membuat sumber daya baru. Informasi yang tersedia di alat ini sangat membantu untuk penulisan templat karena menunjukkan properti apa yang perlu Anda atur untuk jenis sumber daya tertentu, nilai yang benar, dll. Anda bahkan dapat membuat grup sumber daya di portal Azure , lalu periksa definisi JSON-nya di alat penjelajah untuk membantu Anda membuat templat grup sumber daya.

Tombol sebarkan ke Azure

Jika Anda menggunakan GitHub untuk kontrol sumber, Anda dapat menempatkan tombol Terapkan ke Azure ke README.MD Anda, yang memungkinkan UI penyebaran turn-key ke Azure. Meskipun Anda dapat melakukan ini untuk aplikasi sederhana apa pun, Anda dapat memperluasnya untuk mengaktifkan penerapan seluruh grup sumber daya dengan meletakkan file azuredeploy.json di akar repositori. File JSON ini, yang berisi template grup sumber daya, akan digunakan oleh tombol Deploy to Azure untuk membuat grup sumber daya. Sebagai contoh, lihat sampel ToDoApp, yang akan Anda gunakan dalam tutorial ini.

Dapatkan sampel templat grup sumber daya

Jadi sekarang mari kita langsung ke sana.

  1. Navigasikan ke sampel App Service ToDoApp.

  2. Di readme.md, klik Sebarkan ke Azure.

  3. Anda diarahkan ke situs sebarkan-ke-azure dan diminta untuk memasukkan parameter penerapan. Perhatikan bahwa sebagian besar bidang diisi dengan nama repositori dan beberapa untai acak untuk Anda. Anda dapat mengubah semua bidang jika diinginkan, tetapi satu-satunya hal yang harus Anda masukkan adalah login administratif SQL Server dan kata sandi, lalu klik Berikutnya.

    Shows the input deployment parameters on the deploy-to-azure site.

  4. Pilih Sebarkan untuk memulai proses penyebaran. Setelah proses berjalan hingga selesai, klik tautan http://todoappXXXX.azurewebsites.net untuk menjelajahi aplikasi yang disebarkan.

    Shows your application's deployment process.

    UI akan sedikit lambat saat Anda pertama kali menelusurinya karena aplikasi baru saja dimulai, tetapi percayalah bahwa aplikasi tersebut sepenuhnya berfungsi.

  5. Kembali ke laman Terapkan, klik tautan Kelola untuk melihat aplikasi baru di portal Azure.

  6. Di tarik-turun Esensial, klik tautan grup sumber daya. Perhatikan juga bahwa aplikasi sudah terhubung ke repositori GitHub pada Proyek Eksternal.

    Shows the Resource group link in the Essentials dropdown section.

  7. Di bilah grup sumber daya, perhatikan bahwa sudah ada dua aplikasi dan satu SQL Database di grup sumber daya.

    Shows the resources available in your resource group.

Segala hal yang baru saja Anda lihat dalam beberapa menit adalah aplikasi dua layanan mikro yang disebarkaan sepenuhnya, dengan semua komponen, dependensi, pengaturan, database, dan penerbitan berkelanjutan, yang disiapkan oleh orkestrasi otomatis di Azure Resource Manager. Semua ini dilakukan oleh dua hal:

  • Tombol Sebarkan ke Azure
  • azuredeploy.json di akar repo

Anda dapat menerapkan aplikasi yang sama ini puluhan, ratusan, atau ribuan kali dan memiliki konfigurasi yang sama persis setiap saat. Kemampuan pengulangan dan kemampuan prediksi pendekatan ini memungkinkan Anda untuk menyebarkan aplikasi skala tinggi dengan mudah dan yakin.

Memeriksa (atau mengedit) AZUREDEPLOY.JSON

Sekarang mari kita lihat bagaimana repositori GitHub disiapkan. Anda akan menggunakan editor JSON di Azure .NET SDK, jadi jika Anda belum memasang Azure .NET SDK 2.6, lakukan sekarang.

  1. Kloning repositori ToDoApp menggunakan alat git favorit Anda. Pada tangkapan layar di bawah, saya melakukan ini di Team Explorer di Visual Studio 2013.

    Shows how to use a git tool to clone the ToDoApp repository.

  2. Dari akar repositori, buka azuredeploy.json di Visual Studio. Jika Anda tidak melihat panel Kerangka JSON, Anda harus memasang Azure .NET SDK.

    Shows the JSON Outline pane in Visual Studio.

Saya tidak akan menjelaskan setiap detail format JSON, tetapi bagian Sumber Daya Lainnya memiliki tautan untuk mempelajari bahasa templat grup sumber daya. Di sini, saya hanya akan menunjukkan kepada Anda fitur-fitur menarik yang dapat membantu Anda memulai membuat templat kustom Anda sendiri untuk penyebaran aplikasi.

Parameter

Lihat bagian parameter untuk melihat bahwa sebagian besar parameter ini adalah apa yang diminta oleh tombol Sebarkan ke Azure untuk Anda masukan. Situs di belakang tombol Sebarkan ke Azure mengisi input UI menggunakan parameter yang ditentukan di azuredeploy.json. Parameter ini digunakan di seluruh definisi sumber daya, seperti nama sumber daya, nilai properti, dll.

Sumber

Di simpul sumber daya, Anda dapat melihat bahwa 4 sumber daya tingkat atas ditentukan, termasuk instans SQL Server, paket App Service, dan dua aplikasi.

Paket App Service

Mari kita mulai dengan sumber daya tingkat akar sederhana di JSON. Di Kerangka JSON, klik paket App Service bernama [hostingPlanName] untuk menyoroti kode JSON yang sesuai.

Shows the [hostingPlanName] section of the JSON code.

Perhatikan bahwa elemen type menentukan untai untuk paket App Service (sudah lama disebut sebagai farm server), dan elemen serta properti lainnya diisi menggunakan parameter yang ditentukan dalam file JSON, dan sumber daya ini tidak memiliki sumber daya berlapis.

Catatan

Perhatikan juga bahwa nilai apiVersion memberi tahu Azure versi REST API mana yang akan digunakan dengan definisi sumber daya JSON, dan itu dapat memengaruhi cara sumber daya harus diformat di dalam {}.

SQL Server

Selanjutnya, klik sumber daya SQL Server bernama SQLServer di Kerangka JSON.

Shows the SQL Server resource named SQLServer in the JSON Outline.

Perhatikan hal berikut tentang kode JSON yang disorot:

  • Penggunaan parameter memastikan bahwa sumber daya yang dibuat diberi nama dan dikonfigurasi dengan cara yang membuatnya konsisten satu sama lain.

  • Sumber daya SQLServer memiliki dua sumber daya bersarang, masing-masing memiliki nilai berbeda untuk type.

  • Sumber daya bersarang di dalam “resources”: […], tempat database dan aturan firewall ditetapkan, memiliki elemen dependsOn yang menentukan ID sumber daya SQLServer tingkat akar. Ini memberi tahu Azure Resource Manager, “sebelum Anda membuat sumber daya ini, sumber daya lain itu harus sudah ada; dan jika sumber daya lain itu ditentukan dalam templat, maka buat yang itu terlebih dahulu”.

    Catatan

    Untuk informasi terperinci tentang cara menggunakan fungsi resourceId(), lihat Fungsi Templat Azure Resource Manager.

  • Efek dari elemen dependsOn adalah Azure Resource Manager dapat mengetahui sumber daya mana yang dapat dibuat secara paralel dan sumber daya mana yang harus dibuat secara berurutan.

Aplikasi App Service

Sekarang, mari kita beralih ke aplikasi yang sebenarnya, yang lebih rumit. Klik aplikasi [variables('apiSiteName')] di JSON Outline untuk menyorot kode JSON-nya. Anda akan melihat bahwa segala sesuatunya menjadi jauh lebih menarik. Untuk tujuan ini, saya akan berbicara tentang fitur satu per satu:

Sumber daya akar

Aplikasi ini bergantung pada dua sumber daya yang berbeda. Ini berarti bahwa Azure Resource Manager akan membuat aplikasi hanya setelah paket Layanan Aplikasi dan instans SQL Server dibuat.

Shows the app dependencies on the App Service plan and the SQL Server instance.

Pengaturan aplikasi

Pengaturan aplikasi juga didefinisikan sebagai sumber daya berlapis.

Shows the app settings defined as a nested resource in the JSON code.

Di elemen properties untuk config/appsettings, Anda memiliki dua pengaturan aplikasi dalam format "<name>" : "<value>".

  • PROJECT adalah pengaturan KUDU yang memberi tahu penyebaran Azure proyek mana yang akan digunakan dalam solusi Visual Studio multi-proyek. Saya akan menunjukkan kepada Anda nanti bagaimana kontrol sumber dikonfigurasi, tetapi karena kode ToDoApp ada dalam solusi Visual Studio multi-proyek, kami memerlukan pengaturan ini.
  • clientUrl hanyalah pengaturan aplikasi yang digunakan kode aplikasi.
String koneksi

String koneksi juga didefinisikan sebagai sumber daya berlapis.

Shows how the connection strings are defined as a nested resource in the JSON code.

Dalam elemen properties untuk config/connectionstrings, setiap string koneksi juga didefinisikan sebagai pasangan nama:nilai, dengan format khusus "<name>" : {"value": "…", "type": "…"}. Untuk elemen type, nilai yang mungkin adalah MySql, SQLServer, SQLAzure, dan Custom.

Tip

Untuk daftar pasti jenis string koneksi, jalankan perintah berikut di Azure PowerShell: [Enum]::GetNames("Microsoft.WindowsAzure.Commands.Utilities.Websites.Services.WebEntities.DatabaseType")

Kontrol sumber

Pengaturan kontrol sumber juga didefinisikan sebagai sumber daya berlapis. Azure Resource Manager menggunakan sumber daya ini untuk mengonfigurasi penerbitan berkelanjutan (lihat peringatan di IsManualIntegration nanti) dan juga untuk memulai penyebaran kode aplikasi secara otomatis selama pemrosesan file JSON.

Shows how the source control settings are defined as a nested resource in the JSON code.

RepoUrl dan branch harus cukup intuitif dan harus mengarah ke repositori Git dan nama cabang tempat penerbitan. Sekali lagi, ini ditentukan oleh parameter input.

Perhatikan dalam elemen dependsOn bahwa, selain sumber daya aplikasi itu sendiri, sourcecontrols/web juga bergantung pada config/appsettings dan config/connectionstrings. Ini karena setelah sourcecontrols/web dikonfigurasi, proses penyebaran Azure akan secara otomatis mencoba untuk menyebarkan, membangun, dan memulai kode aplikasi. Oleh karena itu, menyisipkan dependensi ini membantu Anda memastikan bahwa aplikasi memiliki akses ke pengaturan aplikasi dan string koneksi yang diperlukan sebelum kode aplikasi dijalankan.

Catatan

Perhatikan juga IsManualIntegration diatur ke true. Properti ini diperlukan dalam tutorial ini karena Anda sebenarnya tidak memiliki repositori GitHub, dan dengan demikian tidak dapat benar-benar memberikan izin kepada Azure untuk mengonfigurasi penerbitan berkelanjutan dari ToDoApp (yaitu, mendorong pembaruan repositori otomatis ke Azure). Anda dapat menggunakan nilai default false untuk repositori yang ditentukan hanya jika Anda telah mengonfigurasi info masuk GitHub pemilik di portal Azure sebelumnya. Dengan kata lain, jika Anda telah menyiapkan kontrol sumber ke GitHub atau BitBucket untuk aplikasi apa pun di portal Azure sebelumnya, menggunakan info masuk pengguna Anda, maka Azure akan mengingat info masuk dan menggunakannya setiap kali Anda menerapkan aplikasi apa pun dari GitHub atau BitBucket di masa mendatang. Namun, jika Anda belum melakukannya, penerapan template JSON akan gagal saat Azure Resource Manager mencoba mengonfigurasi pengaturan kontrol sumber aplikasi karena tidak dapat masuk ke GitHub atau BitBucket dengan info masuk pemilik repositori.

Membandingkan templat JSON dengan grup sumber daya yang disebarkan

Di sini, Anda dapat menelusuri semua bilah aplikasi di portal Azure, tetapi ada alat lain yang sama bergunanya. Buka alat pratinjau Azure Resource Explorer, yang memberi Anda representasi JSON dari semua grup sumber daya dalam langganan Anda, karena benar-benar ada di ujung belakang Azure. Anda juga dapat melihat bagaimana hierarki JSON grup sumber daya di Azure sesuai dengan hierarki dalam file templat yang digunakan untuk membuatnya.

Misalnya, ketika saya membuka alat Azure Resource Explorer dan memperluas simpul di penjelajah, saya dapat melihat grup sumber daya dan sumber daya tingkat akar yang dikumpulkan di bawah masing-masing jenis sumber daya.

View the resource group and root-level resources in the expanded Azure Resources Explorer tool.

Jika Anda menelusuri aplikasi, Anda seharusnya dapat melihat detail konfigurasi aplikasi yang mirip dengan cuplikan layar di bawah ini:

Drill down to view the configuration details in the app.

Sekali lagi, sumber daya berlapis harus memiliki hierarki yang sangat mirip dengan yang ada di file templat JSON Anda, dan Anda akan melihat pengaturan aplikasi, string koneksi, dll., tercermin dengan benar di panel JSON. Tidak adanya pengaturan di sini dapat menunjukkan masalah dengan file JSON Anda dan dapat membantu Anda memecahkan masalah file templat JSON Anda.

Menyebarkan sendiri templat grup sumber daya

Tombol Sebarkan ke Azure sangat bagus, tetapi memungkinkan Anda untuk menyebarkan templat grup sumber daya di azuredeploy.json hanya jika Anda telah mendorong azuredeploy.json ke GitHub. Azure .NET SDK juga menyediakan alat bagi Anda untuk menyebarkan file templat JSON apa pun langsung dari komputer lokal Anda. Untuk melakukan ini, ikuti langkah-langkah di bawah:

  1. Di Visual Studio, klik File>Baru>Proyek.

  2. Klik Visual C#>Cloud>Azure Resource Group, lalu klik OK.

    Create a new project as an Azure Resource Group in the Azure .NET SDK.

  3. Di Select Templat Azure, pilih Templat Kosong dan klik OK.

  4. Tarik azuredeploy.json ke dalam folder Templat proyek baru Anda.

    Shows the result of dragging the azuredeploy.json file into the Template folder of your project.

  5. Dari Penjelajah Solusi, buka azuredeploy.json yang disalin.

  6. Untuk menunjukkannya, mari tambahkan beberapa sumber daya Application Insight standar ke file JSON kita, dengan mengklik Tambah Sumber Daya. Jika Anda hanya tertarik untuk menyebarkan file JSON, lewati ke langkah-langkah penyebaran.

    Shows the Add Resource button you can use to add standard Application Insight resources to your JSON file.

  7. Pilih Application Insights for Web Apps, lalu pastikan memilih paket dan aplikasi App Service yang ada, lalu klik Tambahkan.

    Shows the selection of Application Insights for Web Apps, Name, App Service Plan, and Web App.

    Sekarang Anda dapat melihat beberapa sumber daya baru yang, bergantung pada sumber daya dan fungsinya, memiliki ketergantungan pada paket App Service atau aplikasi. Sumber daya ini tidak diaktifkan oleh definisi yang ada dan Anda akan mengubahnya.

    View the new resources that have dependencies on the App Service plan or app.

  8. Di Kerangka JSON, klik appInsights AutoScale untuk menyorot kode JSON-nya. Ini adalah pengaturan penskalaan untuk paket App Service Anda.

  9. Dalam kode JSON yang disorot, temukan properti location dan enabled, lalu atur seperti yang ditunjukkan di bawah ini.

    Shows the location and enabled properties in the appInsights AutoScale JSON code and the values you should set them to.

  10. Di Kerangka JSON, klik CPUHigh appInsights untuk menyorot kode JSON-nya. Ini adalah pemberitahuan.

  11. Temukan properti location dan isEnabled, lalu atur seperti yang ditunjukkan di bawah ini. Lakukan hal yang sama untuk tiga tanda lainnya (gelembung ungu).

    Shows the location and isEnabled properties in the CPUHigh appInsights JSON code and the values you should set them to.

  12. Kini Anda siap menerapkan. Klik kanan proyek dan pilih Sebarkan>Penyebaran Baru.

    Shows how to deploy your new project.

  13. Masuk ke akun Azure Anda jika Anda belum melakukannya.

  14. Pilih grup sumber daya yang ada di langganan Anda atau buat yang baru, pilih azuredeploy.json, lalu klik Edit Parameter.

    Shows how to edit the parameters in the azuredeploy.json file.

    Anda sekarang dapat mengedit semua parameter yang ditentukan dalam file templat dalam tabel yang bagus. Parameter yang menentukan default akan sudah memiliki nilai defaultnya, dan parameter yang menentukan daftar nilai yang diizinkan akan ditampilkan sebagai daftar tarik turun.

    Shows parameters that define a list of allowed values as dropdown lists.

  15. Isi semua parameter kosong, dan gunakan alamat repo GitHub untuk ToDoApp di repoUrl. Kemudian, klik Simpan.

    Shows the newly filled parameters for the azuredeploy.json file.

    Catatan

    Penskalaan otomatis adalah fitur yang ditawarkan di tingkat Standar atau lebih tinggi, dan pemberitahuan tingkat paket adalah fitur yang ditawarkan di tingkat Dasar atau lebih tinggi, Anda harus mengatur sku parameter ke Standar atau Premium untuk melihat semua sumber daya App Insights baru Anda aktif.

  16. Klik Sebarkan. Jika Anda memilih Simpan kata sandi, kata sandi akan disimpan dalam file parameter dalam teks biasa. Jika tidak, Anda akan diminta untuk memasukkan kata sandi database selama proses penyebaran.

Itu saja! Sekarang Anda hanya perlu membuka portal Azure dan alat Azure Resource Explorer untuk melihat pemberitahuan baru dan pengaturan penskalaan otomatis yang ditambahkan ke aplikasi yang disebarkan JSON Anda.

Langkah Anda di bagian ini terutama mencapai hal berikut:

  1. Siapkan file templat
  2. Membuat file parameter untuk masuk dengan file templat
  3. Menggunakan file templat dengan file parameter

Langkah terakhir mudah dilakukan oleh cmdlet PowerShell. Untuk melihat apa yang dilakukan Visual Studio saat menyebarkan aplikasi Anda, buka Scripts\Deploy-AzureResourceGroup.ps1. Ada banyak kode di sana, tetapi saya hanya akan menyoroti semua kode terkait yang Anda perlukan untuk menerapkan file templat dengan file parameter.

Shows the pertinent code in the script that you need use to deploy the template file with the parameter file.

Cmdlet terakhir, New-AzureResourceGroup, adalah yang benar-benar melakukan tindakan. Semua ini harus menunjukkan kepada Anda bahwa, dengan bantuan alat, penyebaran aplikasi cloud Andar relatif dapat mudah diprediksi. Setiap kali Anda menjalankan cmdlet pada templat yang sama dengan file parameter yang sama, Anda akan mendapatkan hasil yang sama.

Ringkasan

Di DevOps, kemampuan pengulangan dan kemampuan prediksi adalah kunci keberhasilan penyebaran aplikasi skala tinggi yang terdiri dari layanan mikro. Dalam tutorial ini, Anda telah menerapkan aplikasi dua layanan mikro ke Azure sebagai grup sumber daya tunggal menggunakan templat Azure Resource Manager. Semoga ini telah memberi Anda pengetahuan yang Anda butuhkan untuk mulai mengonversi aplikasi Anda di Azure menjadi templat dan dapat memprovisikan serta menyebarkannya secara terprediksi.

Sumber daya lainnya

Langkah berikutnya

Untuk mempelajari tentang sintaks dan properti JSON untuk jenis sumber daya yang diterapkan dalam artikel ini, lihat: