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.
Untuk menyebarkan aplikasi .NET ke lingkungan asli cloud seperti Azure Container Apps, Anda perlu membuat keputusan yang memastikan aplikasi Anda berjalan dengan lancar dan aman. Panduan ini mencakup konsep utama yang terlibat dalam penyebaran aplikasi .NET ke Azure Container Apps.
Azure Container Apps adalah layanan kontainer tanpa server yang dikelola sepenuhnya yang memungkinkan Anda menjalankan aplikasi kontainer tanpa mengelola infrastruktur yang mendasarinya. Container Apps mencakup dukungan bawaan untuk fitur seperti penskalaan otomatis, pemeriksaan kesehatan, dan sertifikat keamanan lapisan transportasi (TLS).
Artikel ini merinci konsep dan kekhawatiran penting untuk Anda saat Anda menyebarkan aplikasi .NET di Azure Container Apps.
Pilih jenis sumber daya
Container Apps mendukung dua jenis sumber daya: aplikasi dan pekerjaan. Aplikasi terus menjalankan layanan, sementara pekerjaan adalah tugas berumur pendek yang dirancang untuk berjalan hingga selesai.
Saat Anda bersiap untuk menyebarkan aplikasi, pertimbangkan perbedaan antara kedua jenis aplikasi ini karena perilakunya memengaruhi cara Anda mengelola aplikasi .NET. Tabel berikut ini menjelaskan perbedaan kasus penggunaan antara aplikasi dan pekerjaan.
| Contoh Penggunaan | Jenis Sumber Daya |
|---|---|
| API web ASP.NET Core yang melayani permintaan HTTP | Aplikasi |
| Aplikasi konsol .NET Core yang memproses beberapa data, lalu keluar | Pekerjaan |
| Layanan latar belakang yang terus berjalan yang memproses pesan dari antrean | Aplikasi |
| Layanan pengoptimalan gambar yang hanya berjalan saat gambar besar disimpan ke akun penyimpanan. | Pekerjaan |
| Aplikasi yang menggunakan kerangka kerja seperti Hangfire, Quartz.NET, atau Azure WebJobs SDK | Aplikasi |
Kontainerisasi dan sebarkan aplikasi .NET Anda
Untuk aplikasi atau pekerjaan, Anda perlu membuat gambar kontainer untuk mengemas aplikasi .NET Anda. Untuk informasi selengkapnya tentang membangun gambar kontainer, lihat Gambar docker untuk ASP.NET Core.
Setelah disiapkan, Anda dapat menyebarkan aplikasi ke Azure Container Apps dengan mengikuti panduan berikut:
- Tutorial: Menyebarkan ke Azure Container Apps menggunakan Visual Studio
- Mulai cepat: Membangun dan menyebarkan dari repositori ke Azure Container Apps
- Membuat pekerjaan dengan Azure Container Apps
Menggunakan ingress HTTP
Azure Container Apps menyertakan ingress HTTP bawaan yang dapat Anda gunakan untuk mengekspos aplikasi Anda ke lalu lintas yang berasal dari luar kontainer. Ingress Container Apps berada di antara aplikasi Anda dan pengguna akhir. Karena ingress bertindak sebagai perantara, apa pun yang dilihat pengguna akhir berakhir pada ingress, dan apa pun yang dilihat aplikasi Anda dimulai dari ingress.
Ingress mengelola penghentian TLS dan domain kustom, sehingga Anda tidak perlu mengonfigurasinya secara manual di aplikasi Anda. Melalui ingress, port 443 diekspos untuk lalu lintas HTTPS, dan secara opsional port 80 untuk lalu lintas HTTP. Ingress tersebut meneruskan permintaan ke aplikasi Anda pada port targetnya.
Jika aplikasi Anda memerlukan metadata tentang permintaan asli, aplikasi Anda dapat menggunakan header X-forwarded.
Untuk mempelajari selengkapnya, lihat ingress HTTP di Azure Container Apps.
Definisikan port tujuan
Untuk menerima lalu lintas, konfigurasikan ingress pada port target tempat aplikasi Anda mendengarkan lalu lintas.
Saat ASP.NET Core berjalan dalam kontainer, aplikasi mendengarkan port seperti yang dikonfigurasi dalam gambar kontainer. Saat Anda menggunakan citra resmi ASP.NET Core, aplikasi Anda telah dikonfigurasi untuk mendengarkan HTTP pada port default. Port default bergantung pada versi ASP.NET Core.
| Runtime | Port target |
|---|---|
| ASP.NET Core 7 dan yang lebih lama | 80 |
| ASP.NET Core 8 dan yang lebih baru | 8080 |
Saat Anda mengonfigurasi ingress, atur port target ke nomor yang sesuai dengan gambar kontainer yang Anda gunakan.
Menentukan header yang diteruskan X
Saat ingress menangani permintaan HTTP asli, aplikasi Anda melihat ingress sebagai klien. Dalam beberapa situasi, aplikasi Anda perlu mengetahui alamat IP klien asli atau protokol asli (HTTP atau HTTPS). Anda dapat mengakses protokol dan informasi IP melalui headerX-Forwarded-*.
Anda dapat membaca nilai asli dari header ini dengan mengakses ForwardedHeaders objek.
builder.Services.Configure<ForwardedHeadersOptions>(options =>
{
options.ForwardedHeaders =
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
options.KnownNetworks.Clear();
options.KnownProxies.Clear();
});
Untuk informasi selengkapnya tentang bekerja dengan header permintaan, lihat Mengonfigurasi ASP.NET Core untuk bekerja dengan server proksi dan load balancer.
Membangun aplikasi .NET cloud-native
Aplikasi yang disebarkan ke Container Apps sering kali berfungsi paling baik saat Anda membangun di atas fondasi prinsip cloud-native. Bagian berikut membantu merinci kekhawatiran umum seputar aplikasi cloud-native.
Konfigurasi aplikasi
Saat Anda menyebarkan aplikasi .NET ke Azure Container Apps, gunakan variabel lingkungan untuk menyimpan informasi konfigurasi alih-alih menggunakan appsettings.json. Praktik ini memungkinkan Anda mengonfigurasi aplikasi dengan cara yang berbeda di lingkungan yang berbeda. Selain itu, menggunakan variabel lingkungan memudahkan untuk mengelola nilai konfigurasi tanpa harus membangun kembali dan menyebarkan ulang gambar kontainer Anda.
Di Azure Container Apps, Anda mengatur variabel lingkungan saat menentukan kontainer aplikasi atau pekerjaan Anda. Simpan nilai sensitif dalam rahasia dan referensikan sebagai variabel lingkungan. Untuk mempelajari selengkapnya tentang mengelola rahasia, lihat Mengelola rahasia di Azure Container Apps.
Identitas yang Dikelola
Azure Container Apps mendukung identitas terkelola, yang memungkinkan aplikasi Anda mengakses layanan Azure lainnya tanpa perlu bertukar kredensial. Untuk mempelajari selengkapnya tentang berkomunikasi antara layanan Azure dengan aman, lihat Identitas terkelola di Azure Container Apps.
Pencatatan
Di lingkungan cloud-native, pengelogan sangat penting untuk memantau dan memecahkan masalah aplikasi Anda. Secara default, Azure Container Apps menggunakan Azure Log Analytics untuk mengumpulkan log dari kontainer Anda. Anda dapat mengonfigurasi penyedia pengelogan lainnya. Untuk mempelajari selengkapnya tentang pengelogan aplikasi, lihat Opsi penyimpanan dan pemantauan log di Azure Container Apps.
Saat Anda mengonfigurasi penyedia pengelogan yang menulis log ke konsol, Azure Container Apps mengumpulkan dan menyimpan pesan log untuk Anda.
Pemeriksaan kesehatan
Azure Container Apps menyertakan dukungan bawaan untuk pemeriksaan kesehatan, yang memungkinkan Anda memantau kesehatan aplikasi Anda. Jika probe menentukan aplikasi Anda dalam kondisi tidak sehat, maka kontainer Anda akan dimulai ulang secara otomatis. Untuk mempelajari selengkapnya tentang pemeriksaan kesehatan, lihat Pemeriksaan kesehatan di Azure Container Apps.
Untuk kesempatan menerapkan logika kustom untuk menentukan kesehatan aplikasi Anda, Anda dapat mengonfigurasi titik akhir pemeriksaan kesehatan. Untuk mempelajari selengkapnya tentang titik akhir pemeriksaan kesehatan, lihat Pemeriksaan kesehatan di ASP.NET Core.
Pertimbangan penskalaan otomatis
Secara default, Azure Container Apps secara otomatis menskalakan aplikasi ASP.NET Core Anda berdasarkan jumlah permintaan HTTP masuk. Anda juga dapat mengonfigurasi aturan autoscaling kustom berdasarkan metrik lain, seperti penggunaan CPU atau memori. Untuk mempelajari selengkapnya tentang penskalan, lihat Mengatur aturan penskalakan di Azure Container Apps.
Di .NET 8.0.4 dan yang lebih baru, aplikasi ASP.NET Core yang menggunakan perlindungan data secara otomatis dikonfigurasi untuk menjaga data yang dilindungi tetap dapat diakses oleh semua replika saat aplikasi diskalakan. Ketika aplikasi Anda mulai mengalami peningkatan skala, manajer kunci bertanggung jawab atas penulisan dan pembagian kunci di berbagai revisi. Saat aplikasi disebarkan, variabel autoConfigureDataProtection lingkungan secara otomatis diatur ke true untuk mengaktifkan fitur ini. Untuk informasi selengkapnya tentang konfigurasi otomatis ini, lihat pull request GitHub ini.
Penskalaan otomatis mengubah jumlah replika untuk aplikasi Anda berdasarkan aturan yang Anda tentukan. Secara default, Container Apps secara acak merutekan lalu lintas masuk ke replika aplikasi ASP.NET Core Anda. Karena lalu lintas dapat dibagi di antara replika yang berbeda, aplikasi Anda harus stateless sehingga aplikasi Anda tidak mengalami masalah terkait status.
Fitur seperti anti-pemalsuan, autentikasi, SignalR, Blazor Server, dan Razor Pages bergantung pada perlindungan data dan memerlukan konfigurasi tambahan untuk bekerja dengan benar saat menskalakan ke beberapa replika.
Mengonfigurasi perlindungan data
ASP.NET Core memiliki fitur khusus untuk melindungi dan membuka proteksi data, seperti data sesi dan token anti-pemalsuan. Secara default, kunci perlindungan data disimpan pada sistem file, yang tidak cocok untuk lingkungan cloud-native.
Jika Anda menyebarkan aplikasi Aspire, perlindungan data secara otomatis dikonfigurasi untuk Anda. Dalam semua situasi lainnya, Anda perlu mengonfigurasi perlindungan data secara manual.
Mengonfigurasi ASP.NET Core SignalR
ASP.NET Core SignalR memerlukan backplane untuk mendistribusikan pesan ke beberapa replika server. Saat menyebarkan aplikasi ASP.NET Core dengan SignalR ke Azure Container Apps, Anda harus mengonfigurasi salah satu backplane yang didukung, seperti Azure SignalR Service atau Redis. Untuk mempelajari lebih lanjut tentang backplanes, lihat hosting dan penskalaan ASP.NET Core SignalR.
Mengonfigurasi Blazor Server
Aplikasi ASP.NET Core Blazor Server menyimpan status di server, yang berarti setiap klien harus terhubung ke replika server yang sama selama sesi mereka. Saat menyebarkan aplikasi Blazor Server ke Azure Container Apps, Anda harus mengaktifkan sesi tetap untuk memastikan bahwa klien diarahkan ke replika yang sama. Untuk mempelajari selengkapnya, lihat Afinitas Sesi di Azure Container Apps.