Bagikan melalui


Memigrasikan aplikasi Spring Boot ke Azure Container Apps

Panduan ini menjelaskan apa yang harus Anda ketahui ketika Anda ingin memigrasikan aplikasi Spring Boot yang ada untuk dijalankan di Azure Container Apps.

Pra-migrasi

Untuk memastikan keberhasilan migrasi, sebelum memulai, selesaikan langkah-langkah penilaian dan inventaris yang dijelaskan di bagian berikut.

Jika Anda tidak dapat memenuhi persyaratan pra-migrasi ini, lihat panduan migrasi pendamping berikut:

  • Memigrasi aplikasi JAR yang dapat dijalankan ke kontainer di Azure Kubernetes Service (panduan yang direncanakan)
  • Memigrasikan Aplikasi JAR yang dapat dieksekusi ke Azure Virtual Machines (panduan yang direncanakan)

Memeriksa komponen aplikasi

Mengidentifikasi kondisi lokal

Di lingkungan PaaS, tidak ada aplikasi yang dijamin akan berjalan tepat satu kali pada waktu tertentu. Bahkan jika Anda mengonfigurasi aplikasi untuk dijalankan dalam satu instans, instans duplikat dapat dibuat dalam kasus berikut:

  • Aplikasi harus dipindahkan ke host fisik akibat kegagalan atau pembaruan sistem.
  • Aplikasi sedang diperbarui.

Dalam salah satu kasus ini, instans asli tetap berjalan sampai instans baru selesai dimulai. Pola ini dapat memiliki implikasi yang berpotensi signifikan berikut untuk aplikasi Anda:

  • Tidak ada database tunggal yang dapat dijamin untuk benar-benar tunggal.
  • Data apa pun yang tidak bertahan di penyimpanan luar kemungkinan akan hilang lebih cepat daripada yang akan ada di satu server fisik atau VM.

Sebelum bermigrasi ke Azure Container Apps, pastikan kode Anda tidak berisi status lokal yang tidak boleh hilang atau diduplikasi. Jika terdapat kondisi lokal, ubah kode untuk menyimpan kondisi tersebut di luar aplikasi. Aplikasi siap cloud biasanya menyimpan status aplikasi di lokasi seperti opsi berikut:

Menentukan apakah dan bagaimana sistem berkas digunakan

Temukan instans tempat layanan Anda menulis ke dan/atau membaca dari sistem file lokal. Identifikasi tempat file jangka pendek/sementara ditulis dan dibaca serta tempat file berumur panjang ditulis dan dibaca.

Azure Container Apps menawarkan beberapa jenis penyimpanan. Penyimpanan sementara dapat membaca dan menulis data sementara dan tersedia untuk kontainer atau replika yang sedang berjalan. Azure File menyediakan penyimpanan permanen dan dapat dibagikan di beberapa kontainer. Untuk informasi selengkapnya, lihat Menggunakan pemasangan penyimpanan di Azure Container Apps.

Konten statis baca-saja

Jika aplikasi Anda saat ini menyajikan konten statis, Anda memerlukan lokasi alternatif untuk aplikasi tersebut. Anda mungkin ingin mempertimbangkan untuk memindahkan konten statis ke Azure Blob Storage dan menambahkan Azure CDN untuk unduhan cepat kilat secara global. Untuk informasi selengkapnya, lihat Hosting situs web statis di Penyimpanan Azure dan Mulai Cepat: Mengintegrasikan akun Microsoft Azure Storage dengan Azure CDN.

Konten statis yang diterbitkan secara dinamis

Jika aplikasi Anda mendukung konten statis, baik yang diunggah atau dihasilkan oleh aplikasi itu sendiri, yang tetap tidak berubah setelah pembuatannya, Anda dapat mengintegrasikan Azure Blob Storage dan Azure CDN. Anda juga dapat menggunakan Fungsi Azure untuk mengelola unggahan dan memicu refresh CDN jika diperlukan. Kami telah menyediakan implementasi sampel untuk penggunaan Anda di Pengunggahan dan pramuat CDN konten statis dengan Azure Functions.

Menentukan apakah terdapat layanan berisi kode khusus OS

Jika aplikasi Anda berisi kode apa pun dengan dependensi pada OS host, maka Anda perlu merefaktornya untuk menghapus dependensi tersebut. Misalnya, Anda mungkin perlu mengganti penggunaan / atau \ di jalur sistem file dengan File.Separator atau Paths.get jika aplikasi Anda berjalan di Windows.

Beralih ke platform yang didukung

Jika Anda membuat Dockerfile secara manual dan menyebarkan aplikasi kontainer ke Azure Container Apps, Anda mengambil kontrol penuh atas penyebaran Anda termasuk versi JRE/JDK.

Untuk penyebaran dari artefak, Azure Container Apps juga menawarkan versi java tertentu (8, 11, 17, dan 21) dan versi tertentu dari komponen Spring Boot dan Spring Cloud. Untuk memastikan kompatibilitas, pertama-tama migrasikan aplikasi Anda ke salah satu versi Java yang didukung di lingkungannya saat ini, kemudian lanjutkan dengan langkah-langkah migrasi yang tersisa. Pastikan untuk sepenuhnya menguji konfigurasi yang dihasilkan. Gunakan rilis stabil terbaru dari distribusi Linux dalam pengujian tersebut.

Catatan

Validasi ini sangat penting jika server Anda saat ini berjalan pada JDK yang tidak didukung (seperti Oracle JDK atau IBM OpenJ9).

Untuk mendapatkan versi Java Anda saat ini, masuk ke server produksi Anda dan jalankan perintah berikut:

java -version

Untuk versi Java, Spring Boot, dan Spring Cloud yang didukung, serta instruksi untuk memperbarui, lihat Gambaran umum Java di Azure Container Apps.

Menentukan apakah aplikasi Anda bergantung pada pekerjaan terjadwal atau tidak

Aplikasi sementara seperti pekerjaan Unix cron atau aplikasi jangka pendek berdasarkan kerangka kerja Spring Batch harus berjalan sebagai pekerjaan di Azure Container Apps. Untuk informasi selengkapnya, lihat Pekerjaan di Azure Container Apps. Jika aplikasi Anda adalah aplikasi yang berjalan lama dan menjalankan tugas secara teratur menggunakan kerangka kerja penjadwalan seperti Quartz atau Spring Batch, Azure Container Apps dapat menghosting aplikasi tersebut. Namun, aplikasi harus menangani penskalakan dengan tepat untuk menghindari kondisi balapan di mana instans aplikasi yang sama dijalankan lebih dari sekali per periode terjadwal selama peningkatan skala atau peluncuran.

Inventarkan tugas terjadwal apa pun yang berjalan di server produksi, di dalam atau di luar kode aplikasi Anda.

Mengidentifikasi versi Spring Boot

Periksa dependensi setiap aplikasi yang dimigrasikan untuk menentukan versi Spring Boot yang dimiliki.

Maven

Dalam proyek Maven, versi Spring Boot biasanya ditemukan dalam elemen <parent> file POM:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
Gradle

Dalam proyek Gradle, versi Spring Boot biasanya akan ditemukan di bagian plugins, sebagai versi plugin org.springframework.boot:

plugins {
  id 'org.springframework.boot' version '3.3.3'
  id 'io.spring.dependency-management' version '1.1.6'
  id 'java'
}

Untuk aplikasi apa pun yang menggunakan versi Spring Boot sebelum 3.x, ikuti panduan migrasi Spring Boot 2.0 atau Panduan Migrasi Spring Boot 3.0 untuk memperbaruinya ke versi Spring Boot yang didukung. Untuk versi yang didukung, lihat versi Spring Boot dan Spring Cloud.

Mengidentifikasi solusi agregasi log

Identifikasi solusi agregasi log apa pun yang digunakan oleh aplikasi yang Anda migrasikan. Anda perlu mengonfigurasi pengaturan diagnostik dalam migrasi untuk membuat peristiwa yang dicatat tersedia untuk dikonsumsi. Untuk informasi selengkapnya, lihat Bagian Memastikan pengelogan konsol dan mengonfigurasi pengaturan diagnostik.

Mengidentifikasi agen manajemen performa aplikasi (APM)

Identifikasi agen manajemen performa aplikasi apa pun yang digunakan oleh aplikasi Anda. Azure Containers Apps tidak menawarkan dukungan bawaan untuk integrasi APM. Anda perlu menyiapkan gambar kontainer atau mengintegrasikan alat APM langsung ke dalam kode Anda. Jika Anda ingin mengukur performa aplikasi tetapi belum mengintegrasikan APM apa pun, pertimbangkan untuk menggunakan Azure Application Insights. Untuk informasi selengkapnya, lihat bagian Migrasi .

Sumber daya eksternal inventaris

Identifikasi sumber daya eksternal, seperti sumber data, broker pesan JMS, dan URL layanan lainnya. Dalam aplikasi Spring Boot, Anda biasanya dapat menemukan konfigurasi untuk sumber daya tersebut di folder src/main/resources , dalam file yang biasanya disebut application.properties atau application.yml.

Database

Untuk aplikasi Spring Boot, string koneksi biasanya muncul dalam file konfigurasi ketika bergantung pada database eksternal. Berikut adalah contoh dari file application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/mysql_db
spring.datasource.username=dbuser
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

Berikut adalah contoh dari file application.yaml:

spring:
  data:
    mongodb:
      uri: mongodb://mongouser:deepsecret@mongoserver.contoso.com:27017

Lihat Dokumentasi Data Spring untuk skenario konfigurasi yang lebih mungkin:

Broker pesan JMS

Identifikasi broker atau broker yang digunakan dengan melihat manifes build (biasanya, filepom.xml atau build.gradle ) untuk dependensi yang relevan.

Misalnya, aplikasi Spring Boot menggunakan ActiveMQ biasanya akan berisi dependensi ini dalam file pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

Aplikasi Spring Boot menggunakan broker komersial biasanya berisi dependensi langsung pada pustaka driver JMS broker. Berikut adalah contoh dari file build.gradle:

    dependencies {
      ...
      compile("com.ibm.mq:com.ibm.mq.allclient:9.4.0.5")
      ...
    }

Setelah Anda mengidentifikasi broker atau broker yang digunakan, temukan pengaturan yang sesuai. Dalam aplikasi Spring Boot, Anda biasanya dapat menemukannya di file application.properties dan application.yml di direktori aplikasi.

Catatan

Microsoft merekomendasikan penggunaan alur autentikasi paling aman yang tersedia. Alur autentikasi yang dijelaskan dalam prosedur ini, seperti untuk database, cache, olahpesan, atau layanan AI, memerlukan tingkat kepercayaan yang sangat tinggi dalam aplikasi dan membawa risiko yang tidak ada dalam alur lain. Gunakan alur ini hanya ketika opsi yang lebih aman, seperti identitas terkelola untuk koneksi tanpa kata sandi atau tanpa kunci, tidak layak. Untuk operasi komputer lokal, lebih suka identitas pengguna untuk koneksi tanpa kata sandi atau tanpa kunci.

Berikut adalah contoh ActiveMQ dari file application.properties:

spring.activemq.brokerurl=broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true
spring.activemq.user=admin
spring.activemq.password=<password>

Untuk informasi selengkapnya tentang konfigurasi ActiveMQ, lihat dokumentasi pesan Spring Boot.

Berikut adalah contoh IBM MQ dari file application.yaml:

ibm:
  mq:
    queueManager: qm1
    channel: dev.ORDERS
    connName: localhost(14)
    user: admin
    password: <password>

Untuk informasi selengkapnya tentang konfigurasi IBM MQ, lihat dokumentasi komponen IBM MQ Spring.

Mengidentifikasi cache eksternal

Identifikasi cache eksternal yang digunakan. Sering kali, Redis digunakan melalui Spring Data Redis. Untuk informasi konfigurasi, lihat dokumentasi Spring Data Redis.

Tentukan jika data sesi sedang di-cache melalui Sesi Spring dengan mencari konfigurasi masing-masing (di Java atau XML).

IdP

Identifikasi penyedia identitas apa pun yang digunakan oleh aplikasi Anda. Untuk informasi tentang bagaimana penyedia identitas dapat dikonfigurasi, konsultasikan hal berikut:

Identifikasi klien yang mengandalkan port non-standar

Azure Container Apps memungkinkan Anda mengekspos port sesuai dengan konfigurasi sumber daya Azure Container Apps Anda. Misalnya, aplikasi Spring Boot mendengarkan port 8080 secara default, tetapi dapat diatur dengan server.port variabel SERVER_PORT lingkungan atau sesuai kebutuhan Anda.

Semua sumber daya eksternal lainnya

Tidak memungkinkan bagi panduan ini untuk mendokumentasikan setiap kemungkinan dependensi eksternal. Setelah migrasi, Anda bertanggung jawab untuk memverifikasi bahwa Anda dapat memenuhi setiap dependensi eksternal aplikasi Anda.

Sumber dan rahasia konfigurasi inventaris

Menginventariskan kata sandi dan string aman

Periksa semua properti dan file konfigurasi dan semua variabel lingkungan pada penyebaran produksi untuk setiap string rahasia dan kata sandi. Dalam aplikasi Spring Boot, Anda biasanya dapat menemukan string tersebut di file application.properties atau application.yml.

Sertifikat inventaris

Dokumentasikan semua sertifikat yang digunakan untuk titik akhir SSL publik atau komunikasi dengan database backend dan sistem lainnya. Anda bisa melihat semua sertifikat di server produksi dengan menjalankan perintah berikut ini:

keytool -list -v -keystore <path to keystore>

Memeriksa arsitektur penyebaran

Mendokumentasikan persyaratan perangkat keras untuk setiap layanan

Dokumentasikan informasi berikut untuk aplikasi Spring Boot Anda:

  • Jumlah instans yang berjalan.
  • Jumlah CPU yang dialokasikan untuk setiap instans.
  • Jumlah RAM yang dialokasikan untuk setiap instans.

Mendokumentasikan geo-replikasi/distribusi

Tentukan apakah instans aplikasi Spring Boot Anda saat ini didistribusikan di antara beberapa wilayah atau pusat data. Dokumentasikan persyaratan waktu aktif/SLA untuk aplikasi yang Anda migrasikan.

Migrasi

Membuat lingkungan Azure Container Apps dan menyebarkan aplikasi

Provisikan instans Azure Container Apps di langganan Azure Anda. Lingkungan hostingnya yang aman dibuat bersama dengannya. Untuk informasi selengkapnya, lihat Mulai Cepat: Menyebarkan aplikasi kontainer pertama Anda menggunakan portal Azure.

Memastikan pengelogan konsol dan mengonfigurasi pengaturan diagnostik

Konfigurasikan pengelogan Anda untuk memastikan bahwa semua output dirutekan ke konsol daripada ke file.

Setelah aplikasi disebarkan ke Azure Container Apps, Anda dapat mengonfigurasi opsi pengelogan dalam lingkungan Container Apps Anda untuk menentukan satu atau beberapa tujuan log. Tujuan ini dapat mencakup Azure Monitor Log Analytics, Azure Event hub, atau bahkan solusi pemantauan pihak ketiga lainnya. Anda juga memiliki opsi untuk menonaktifkan data log dan melihat log hanya saat runtime. Untuk instruksi konfigurasi terperinci, lihat Opsi penyimpanan dan pemantauan log di Azure Container Apps.

Mengonfigurasi penyimpanan persisten

Jika ada bagian dari aplikasi Anda yang membaca atau menulis ke sistem file lokal, Anda perlu mengonfigurasi penyimpanan persisten untuk mengganti sistem file lokal. Anda dapat menentukan jalur untuk dipasang di kontainer melalui pengaturan aplikasi dan menyelaraskannya dengan jalur yang digunakan aplikasi Anda. Untuk informasi selengkapnya, lihat Menggunakan pemasangan penyimpanan di Azure Container Apps.

Memigrasikan semua sertifikat ke KeyVault

Azure Containers Apps mendukung komunikasi yang aman antar aplikasi. Aplikasi Anda tidak perlu mengelola proses membangun komunikasi yang aman. Anda dapat mengunggah sertifikat privat ke Azure Container Apps atau menggunakan sertifikat terkelola gratis yang disediakan oleh Azure Container Apps. Menggunakan Azure Key Vault untuk mengelola sertifikat adalah pendekatan yang direkomendasikan. Untuk informasi selengkapnya, lihat Sertifikat di Azure Container Apps.

Mengonfigurasi integrasi manajemen performa aplikasi (APM)

Apakah aplikasi Anda disebarkan dari gambar kontainer atau dari kode, Azure Container Apps tidak mengganggu gambar atau kode Anda. Oleh karena itu, mengintegrasikan aplikasi Anda dengan alat APM tergantung pada preferensi dan implementasi Anda sendiri.

Jika aplikasi Anda tidak menggunakan APM yang didukung, Azure Application Insights adalah salah satu opsi. Untuk informasi selengkapnya, lihat Menggunakan Azure Monitor Application Insights dengan Spring Boot.

Menyebarkan aplikasi

Sebarkan setiap layanan mikro yang dimigrasikan (tidak termasuk Spring Cloud Config Server dan Spring Cloud Service Registry), seperti yang dijelaskan dalam Menyebarkan Azure Container Apps dengan perintah az containerapp up.

Mengonfigurasi rahasia per layanan dan pengaturan eksternal

Anda dapat menyuntikkan pengaturan konfigurasi ke setiap aplikasi sebagai variabel lingkungan. Anda dapat mengatur variabel ini sebagai entri manual atau sebagai referensi ke rahasia. Untuk informasi selengkapnya tentang konfigurasi, lihat Mengelola variabel lingkungan di Azure Container Apps.

Memigrasikan dan mengaktifkan penyedia identitas

Jika salah satu aplikasi Spring Cloud memerlukan autentikasi atau otorisasi, pastikan aplikasi tersebut dikonfigurasi untuk mengakses penyedia identitas:

  • Jika IdP adalah ID Microsoft Entra, tidak ada perubahan yang diperlukan.
  • Jika penyedia identitas adalah forest Active Directory lokal, pertimbangkan untuk menerapkan solusi identitas hibrid dengan ID Microsoft Entra. Untuk informasi selengkapnya, lihat Dokumentasi identitas hibrid.
  • Jika penyedia identitas adalah solusi lokal lain, seperti PingFederate, lihat Penginstalan kustom topik Microsoft Entra Connect untuk mengonfigurasi federasi dengan ID Microsoft Entra. Atau, pertimbangkan untuk menggunakan Spring Security untuk menggunakan penyedia identitas Anda melalui OAuth2/OpenID Koneksi atau SAML.

Mengekspos aplikasi

Secara default, aplikasi yang disebarkan ke Azure Container Apps dapat diakses melalui URL aplikasi. Jika aplikasi Anda disebarkan dalam konteks lingkungan terkelola dengan jaringan virtualnya sendiri, Anda perlu menentukan tingkat aksesibilitas aplikasi untuk memungkinkan masuk atau masuknya publik dari jaringan virtual Anda saja. Untuk informasi selengkapnya, lihat Jaringan di lingkungan Azure Container Apps.

Pasca-migrasi

Sekarang setelah Anda menyelesaikan migrasi, verifikasi bahwa aplikasi Anda berfungsi sesuai harapan. Kemudian, Anda dapat membuat aplikasi Anda lebih cloud-native dengan menggunakan rekomendasi berikut.

  • Pertimbangkan untuk mengaktifkan aplikasi Anda untuk bekerja dengan Spring Cloud Registry. Komponen ini memungkinkan aplikasi Anda ditemukan secara dinamis oleh aplikasi dan klien Spring lain yang disebarkan. Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan untuk komponen Eureka Server for Spring di Azure Container Apps. Kemudian, ubah klien aplikasi apa pun untuk menggunakan Spring Client Load Balancer. Spring Client Load Balancer memungkinkan klien untuk mendapatkan alamat semua instans aplikasi yang sedang berjalan dan menemukan instans yang berfungsi jika instans lain rusak atau tidak responsif. Untuk informasi selengkapnya, lihat Tips Spring: Spring Cloud Load Balancer di Blog Spring.

  • Alih-alih membuat aplikasi Anda menjadi publik, pertimbangkan untuk menambahkan instans Spring Cloud Gateway. Spring Cloud Gateway menyediakan satu titik akhir untuk semua aplikasi yang disebarkan di lingkungan Azure Container Apps Anda. Jika Spring Cloud Gateway sudah disebarkan, pastikan aturan perutean dikonfigurasi untuk merutekan lalu lintas ke aplikasi anda yang baru disebarkan.

  • Pertimbangkan untuk menambahkan Spring Cloud Config Server untuk mengelola dan mengontrol konfigurasi versi secara terpusat untuk semua aplikasi Spring Cloud Anda. Pertama, buat repositori Git untuk menampung konfigurasi dan mengonfigurasi instans aplikasi untuk menggunakannya. Untuk informasi selengkapnya, lihat Mengonfigurasi pengaturan untuk komponen Config Server for Spring di Azure Container Apps. Kemudian, migrasikan konfigurasi Anda menggunakan langkah-langkah berikut:

    1. Di dalam direktori src/main/resources aplikasi, buat file bootstrap.yml dengan konten berikut:

        spring:
          application:
            name: <your-application-name>
      
    2. Dalam konfigurasi repositori Git, buat file <your-application-name>.yml, yang mana your-application-name sama seperti pada langkah sebelumnya. Pindahkan pengaturan dari file application.yml di src/main/resources ke file baru yang Anda buat. Jika pengaturan sebelumnya berada dalam file .properties, konversi ke YAML terlebih dahulu. Anda dapat menemukan alat online atau plugin IntelliJ untuk melakukan konversi ini.

    3. Buat file application.yml di direktori di atas. Anda dapat menggunakan file ini untuk menentukan pengaturan dan sumber daya yang dibagikan di antara semua aplikasi di lingkungan Azure Container Apps. Pengaturan tersebut biasanya mencakup sumber data, pengaturan pengelogan, konfigurasi Spring Boot Actuator, dan lainnya.

    4. Terapkan dan dorong perubahan ini ke repositori Git.

    5. Hapus file application.properties atau application.yml dari aplikasi.

  • Pertimbangkan untuk menambahkan komponen terkelola Admin untuk Spring untuk mengaktifkan antarmuka administratif untuk aplikasi web Spring Boot yang mengekspos titik akhir aktuator. Untuk informasi selengkapnya, lihat Mengonfigurasi komponen Spring Boot Admin di Azure Container Apps.

  • Pertimbangkan untuk menambahkan alur penyebaran untuk penyebaran otomatis dan konsisten. Instruksi tersedia untuk Azure Pipelines dan untuk GitHub Actions.

  • Pertimbangkan untuk menggunakan revisi aplikasi kontainer, label revisi, dan bobot lalu lintas masuk untuk mengaktifkan penyebaran biru-hijau, yang memungkinkan Anda menguji perubahan kode dalam produksi sebelum tersedia untuk beberapa atau semua pengguna akhir Anda. Untuk informasi selengkapnya, lihat Penyebaran Biru-Hijau di Azure Container Apps.

  • Pertimbangkan untuk menambahkan pengikatan layanan untuk menyambungkan aplikasi Anda ke database Azure yang didukung. Pengikatan layanan ini akan menghilangkan kebutuhan Anda untuk memberikan informasi koneksi, termasuk info masuk, ke aplikasi Spring Cloud Anda.

  • Pertimbangkan untuk mengaktifkan tumpukan pengembangan Java untuk mengumpulkan metrik inti JVM untuk aplikasi Anda. Untuk informasi selengkapnya, lihat Metrik Java untuk aplikasi Java di Azure Container Apps.

  • Pertimbangkan untuk menambahkan aturan peringatan Azure Monitor dan grup tindakan untuk mendeteksi dan menangani kondisi menyimpang dengan cepat. Untuk informasi selengkapnya, lihat Menyiapkan pemberitahuan di Azure Container Apps.

  • Pertimbangkan untuk mereplikasi aplikasi Anda di seluruh zona di wilayah tersebut dengan mengaktifkan redundansi zona Azure Container Apps. Lalu lintas diseimbangkan bebannya dan secara otomatis dirutekan ke replika jika terjadi pemadaman zona. Untuk informasi selengkapnya tentang pengaturan redundan, lihat Keandalan di Azure Container Apps.

  • Pertimbangkan untuk melindungi Azure Container Apps dari eksploitasi dan kerentanan umum dengan menggunakan Web Application Firewall di Application Gateway. Untuk informasi selengkapnya, lihat Melindungi Azure Container Apps dengan Web Application Firewall di Application Gateway.