Mengautomasi konfigurasi ulang infrastruktur dengan menggunakan Azure

Azure Container Instances
Azure Application Gateway
Azure Functions
Azure Monitor

Kontainerisasi adalah pendekatan umum terhadap modernisasi aplikasi. Anda dapat mempertimbangkan untuk menggunakan Azure Kubernetes Service untuk beban kerja tingkat lanjut, atau menggunakan Azure Container Instances untuk beban kerja kontainer sederhana, seperti aplikasi web sederhana. Artikel ini berfokus pada penerapan automasi serverless tingkat infrastruktur untuk Container Instances saat Application Gateway digunakan sebagai firewall.

Kita akan mulai dengan skenario umum. Untuk mengamankan instans kontainer Azure, Anda dapat menggunakan grup kontainer di Azure Container Instances. Dengan menggunakan grup kontainer, Anda bisa menyebarkan instans kontainer Azure di jaringan virtual sehingga kontainer bisa mengakses sumber daya privat lainnya atau layanan Azure lainnya melalui titik akhir privat Azure. Untuk pelanggan yang menghosting aplikasi web, praktik umumnya adalah menggunakan web application firewallseperti Azure Application Gateway untuk mem-fronting lalu lintas masuk saat menggunakan Azure Container Instances sebagai kumpulan backend. Artikel ini adalah titik awal yang bagus: Mengekspos alamat IP statis untuk grup kontainer.

Salah satu kemungkinan tantangan dari pendekatan ini adalah penggunaan alamat IP privat non-statis sebagai kumpulan backend. IP privat mungkin dirotasi selama pemeliharaan, yang mengharuskan admin cloud untuk mengonfigurasi ulang kumpulan backend secara manual. Jika kontainer baru ditambahkan untuk penskalaan, admin juga perlu melakukan konfigurasi ulang untuk memastikan lalu lintas dirutekan ke kumpulan backend yang benar. Dan pemeriksaan keaktifan dan pemeriksaan kesiapan tidak didukung dalam grup kontainer, yang membuatnya lebih sulit untuk mengidentifikasi waktu henti beban kerja.

Artikel ini membahas peningkatan untuk mengatasi masalah umum ini melalui penggunaan Application Insights dan Azure Monitor untuk memantau dan menggunakan Azure Functions guna melakukan rotasi otomatis IP privat. Pendekatan ini meningkatkan redundansi beban kerja.

Kemungkinan kasus penggunaan

Arsitektur ini paling cocok untuk:

  • Penyebaran tanpa server.
  • Pengoperasian minimal untuk beban kerja cloud-native dengan automasi.
  • Beban kerja kontainer sederhana yang tidak memerlukan orkestrasi kontainer tingkat lanjut.
  • Beban kerja eksternal yang sangat redundan dengan konfigurasi ulang otomatis.
  • Beban kerja kontainer yang memerlukan akses ke sumber daya privat, seperti yang diekspos oleh titik akhir privat Azure.

Sistem

Diagram alur yang menunjukkan Azure Cosmos DB diakses oleh titik akhir privat untuk Azure Container Instances. Ini di-fronting oleh Azure Application Gateway.

Unduh file Visio arsitektur ini.

Aliran data

Bagian 1: Alur lalu lintas aplikasi web umum

1a. Application Gateway memiliki kemampuan firewall aplikasi web, yang ideal untuk mem-fronting lalu lintas publik sebelum mencapai beban kerja backend. Application Gateway mengekspos alamat IP publik, sehingga Azure DDoS Protection menyediakan lapisan perlindungan lain.

1b. Kumpulan backend Application Gateway dikonfigurasi dengan alamat IP privat dari instans kontainer Azure dalam grup kontainer. Instans kontainer Azure dalam grup kontainer tidak dilengkapi dengan nama domain yang sepenuhnya memenuhi syarat (FQDN), sehingga alamat IP harus digunakan.

1c. Kontainer di Azure Container Instances dapat menggunakan sumber daya privat, seperti Azure Cosmos DB, melalui tautan privat.

Bagian 2: Peningkatan dengan automasi

2a. Application Gateway menyertakan metrik jumlah host yang sehat yang dapat Anda gunakan sebagai pemeriksaan keaktifan untuk instans kontainer Azure, mengingat grup kontainer di Container Instances tidak mendukung pemeriksaan keaktifan atau kesiapan.

2b. Application Insights digunakan dalam kontainer untuk mengumpulkan metrik lain, termasuk detak jantung, yang dapat dikirim ke Application Insights untuk pemantauan melalui utas kustom.

2c. Anda dapat mengonfigurasi peringatan berdasarkan tingkat ambang yang ditentukan dalam langkah 2a dan 2b. Misalnya, anggap saja sistem Anda memiliki tiga instans kontainer yang berjalan sebagai kumpulan backend. Anda dapat mengonfigurasi peringatan untuk diaktifkan saat jumlah host yang sehat kurang dari 3. Dalam grup tindakan aturan peringatan, Anda bisa menggunakan fungsi Azure sebagai jenis tindakan untuk memicu tindakan kustom.

2d. Dalam fungsi Azure, Azure SDK digunakan untuk mendapatkan konfigurasi instans kontainer yang ada dan membuat ulang instans yang sama. Fungsi ini dipicu oleh peringatan yang ditentukan di langkah 2c. Fungsi ini mungkin membutuhkan waktu lama untuk dijalankan, tergantung pada kompleksitas penyiapan. Fungsi Azure dapat kehabisan waktu, sehingga Anda dapat menggunakan Azure Durable Functions untuk menangani proses yang berjalan lama dan mendapatkan pembaruan status.

Komponen

Automation

  • Azure Durable Functions: Tidak seperti Azure Functions, Durable Functions bersifat stateful dan mendukung beberapa pola alur kerja stateful. Dalam contoh ini, pola monitor digunakan.
  • Azure SDKs: Azure SDK adalah kumpulan pustaka yang dapat Anda gunakan untuk berinteraksi dengan layanan Azure dalam bahasa komputer pilihan Anda. SDK memberi Anda lebih banyak fleksibilitas untuk mengintegrasikan logika yang melakukan automasi.

Pemantauan

  • Metrik Azure Monitor: Fitur Azure Monitor ini mengumpulkan data numerik yang telah ditentukan sebelumnya dari layanan Azure.
  • Grup tindakan: Grup tindakan adalah kumpulan preferensi pemberitahuan yang ditentukan oleh pemilik sumber daya. Anda dapat menentukan saluran dan tindakan notifikasi berdasarkan peringatan yang dipicu.

Jaringan

  • Azure DDoS Protection: Perlindungan Azure DDoS (Dasar) gratis dan diaktifkan di semua IP publik. Azure DDoS Network Protection menyediakan lebih banyak kemampuan, seperti menyerap log ke lokasi lain dan kemampuan untuk melibatkan tim Respons Cepat DDoS Protection.
  • Azure Application Gateway: Azure Web Application Firewall memberikan perlindungan untuk aplikasi publik dari eksploitasi seperti injeksi SQL dan serangan XSS.
  • Azure Private Link: Azure Private Link menyediakan akses ke layanan Azure PaaS melalui titik akhir privat di Microsoft backbone untuk lebih meningkatkan keamanan akses jaringan.

Aplikasi

  • Azure Container Instances: Azure Container Instances menjalankan gambar kontainer dengan mulus tanpa mengharuskan Anda menyiapkan infrastruktur lain. Anda perlu mempertimbangkan Azure Kubernetes Service (AKS) untuk orkestrasi kontainer tingkat lanjut.
  • Azure Cosmos DB: Azure Cosmos DB adalah database NoSQL yang dikelola penuh yang mendukung berbagai platform, seperti SQL, Cassandra, dan MongoDB.
  • Azure Key Vault: Sebagai praktik terbaik keamanan, pengembang tidak menyimpan string koneksi sebagai clear text dalam kode sumber aplikasi. Azure Key Vault berfungsi sebagai lokasi pusat untuk menyimpan rahasia dengan keamanan yang ditingkatkan. Aplikasi dapat mengambil kunci yang diperlukan dengan keamanan yang ditingkatkan.

Alternatif

Skenario sebelumnya memperbarui kumpulan backend untuk Application Gateway. Sebagai alternatif, Anda dapat menggunakan zona DNS privat Azure sebagai backend target untuk Application Gateway dan menggunakan fungsi Azure untuk memperbarui catatan alih-alih membuat perubahan pada Application Gateway. Alternatif ini akan mengurangi waktu penyebaran. Di sisi lain, metrik Application Gateway tidak akan dapat mengidentifikasi jumlah host karena akan diabstraksikan oleh DNS. Jadi automasi ini perlu dipicu melalui solusi pemantauan aplikasi seperti Application Insights atau Azure Monitor secara langsung.

Azure menyediakan beberapa opsi untuk menghosting beban kerja berbasis kontainer, seperti Azure Kubernetes Service, Azure App Service, dan Azure Container Apps.

Azure Kubernetes Service menyediakan orkestrasi kontainer tingkat lanjut dan kemampuan jaringan seperti Sumber daya layanan, yang tidak tersedia di Container Instances. Arsitektur referensi ini membahas persyaratan ini.

App Service juga dapat menghosting beban kerja kontainer, dan Lingkungan App Service memungkinkan pengembang untuk menyebarkan App Service di Azure Virtual Network. Struktur harga Container Instances, jika dibandingkan dengan App Service, membuatnya pantas untuk beban kerja kecil.

Azure Container Apps adalah platform kontainer tanpa server berdasarkan Kubernetes. Hal ini memungkinkan pengembang untuk membangun aplikasi bergaya Kubernetes yang tidak memerlukan akses langsung ke semua API Kubernetes asli dan manajemen kluster. Azure Container Apps memberikan pengalaman terkelola penuh berdasarkan praktik terbaik.

Pertimbangan

Ketersediaan

Karena pemeriksaan keaktifan dan kesiapan tidak didukung dalam grup kontainer, kami menyarankan Anda untuk menggunakan Metrik Azure Monitor dan Azure Application Insights untuk pemantauan. Kondisi dan waktu aktif kontainer bukanlah pendekatan deterministik untuk menentukan apakah suatu sistem beroperasi end-to-end.

Operasional

Azure Durable Functions digunakan untuk mengonfigurasi ulang infrastruktur jika terjadi kegagalan dalam Container Instances atau jika IP privat grup kontainer berubah. Seperti disebutkan dalam dokumentasi, proses penyediaan membutuhkan waktu sedikit lebih lama. Pengguna mungkin mengalami waktu henti minimal jika kontainer tidak siap tepat waktu.

Arsitektur ini menambahkan lapisan ketahanan. Namun kami tetap menyarankan Anda untuk mengonfigurasi pemantauan dalam aplikasi dan memantau status Azure untuk mengetahui apakah ada kegagalan platform.

Skalabilitas

Persyaratan CPU dan memori ditentukan saat kontainer dibuat, jadi Anda tidak akan dapat melakukan penskalaan vertikal secara langsung. Anda dapat menambahkan kontainer ke grup kontainer untuk menskalakan secara horizontal. Namun perlu diperhatikan bahwa setiap kontainer dalam grup kontainer akan menggunakan satu IP privat, jadi batasnya adalah ukuran subnet yang disediakan.

Pertimbangan penting lainnya untuk penskalaan adalah status aplikasi. Aplikasi perlu menangani status, baik secara lokal atau dengan menggunakan layanan eksternal seperti Azure Cache for Redis, untuk memastikan penskalaan sesuai permintaan tidak menyebabkan hilangnya data dalam aplikasi.

Keamanan

Kemampuan untuk menyebarkan PaaS ke dalam jaringan virtual (injeksi VNet) tidak meningkatkan keamanan jika konfigurasi tidak disiapkan dengan benar. Injeksi VNet memberi kontrol jaringan yang lebih besar pada admin, memberikan manfaat seperti kelompok keamanan jaringan yang lebih ketat dan penggunaan sumber daya yang tidak diekspos secara publik.

Private Link memproyeksikan titik akhir privat ke dalam jaringan virtual, yang memungkinkan aplikasi mengakses Azure PaaS secara langsung melalui alamat IP privat. Pada saat yang sama, admin dapat mengontrol selengkapnya siapa yang dapat mengakses Azure PaaS yang relevan.

Jika Anda menyimpan gambar kontainer di Azure Container Registry, Anda dapat mengaktifkan Microsoft Defender untuk registri kontainer guna melakukan pemindaian kerentanan citra kontainer.

Harga

Gunakan Kalkulator harga Azure untuk memperkirakan biaya sumber daya Azure.

Lihat contoh ini dari penyebaran sebelumnya.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Langkah berikutnya

Jelajahi arsitektur kami:

Panduan terkait: