Bagikan melalui


Menyebarkan aplikasi dengan gambar kontainer kustom

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang merupakan status End Of Life (EOL). Harap pertimbangkan penggunaan dan rencanakan yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.

Catatan

Paket Basic, Standard, dan Enterprise memasuki periode pensiun pada 17 Maret 2025. Untuk informasi selengkapnya, lihat pengumuman penghentian Azure Spring Apps.

Artikel ini berlaku untuk:✅ Standard ✅ Enterprise

Artikel ini menjelaskan cara menyebarkan aplikasi Spring Boot di Azure Spring Apps menggunakan gambar kontainer kustom. Menyebarkan aplikasi dengan kontainer kustom mendukung sebagian besar fitur seperti saat menyebarkan aplikasi JAR. Aplikasi Java dan non-Java lainnya juga dapat disebarkan dengan gambar kontainer.

Prasyarat

  • Gambar kontainer yang berisi aplikasi.
  • Gambar didorong ke registri gambar. Untuk informasi selengkapnya, lihat Azure Container Registry.

Catatan

Aplikasi web harus mendengarkan di port 1025 untuk paket Standar dan di port 8080 untuk paket Enterprise. Cara mengubah port tergantung pada kerangka kerja aplikasi. Misalnya, tentukan SERVER_PORT=1025 untuk aplikasi Spring Boot atau ASPNETCORE_URLS=http://+:1025/ untuk aplikasi ASP.NET Core. Anda dapat menonaktifkan probe untuk aplikasi yang tidak mendengarkan pada port mana pun. Untuk informasi selengkapnya, lihat Cara mengonfigurasi pemeriksaan kesehatan dan periode penghentian yang anggun untuk aplikasi yang dihosting di Azure Spring Apps.

Menyebarkan aplikasi Anda

Untuk menyebarkan aplikasi ke gambar kontainer kustom, gunakan langkah-langkah berikut:

Untuk menyebarkan gambar kontainer, gunakan salah satu perintah berikut:

  • Untuk menyebarkan gambar kontainer ke Docker Hub publik ke aplikasi, gunakan perintah berikut:

    az spring app deploy \
       --resource-group <your-resource-group> \
       --name <your-app-name> \
       --container-image <your-container-image> \
       --service <your-service-name>
    
  • Untuk menyebarkan gambar kontainer dari ACR ke aplikasi, atau dari registri privat lain ke aplikasi, gunakan perintah berikut:

    az spring app deploy \
       --resource-group <your-resource-group> \
       --name <your-app-name> \
       --container-image <your-container-image> \
       --service <your-service-name>
       --container-registry <your-container-registry> \
       --registry-password <your-password> |
       --registry-username <your-username>
    

Untuk menimpa titik entri gambar, tambahkan dua argumen berikut ke salah satu perintah di atas:

    --container-command "java" \
    --container-args "-jar /app.jar -Dkey=value"

Untuk menonaktifkan mendengarkan pada port untuk gambar yang bukan aplikasi web, tambahkan argumen berikut ke perintah di atas:

    --disable-probe true

Matriks Dukungan Fitur

Matriks berikut menunjukkan fitur apa yang didukung di setiap jenis aplikasi.

Fitur Aplikasi Spring Boot - penyebaran kontainer Polyglot Apps - penyebaran kontainer Catatan
Manajemen siklus hidup aplikasi
Dukungan untuk registri kontainer
Tetapkan titik akhir
Azure Monitor
Integrasi APM Didukung oleh pemasangan manual.
Penyebaran biru/hijau
Domain kustom
Penskalaan - penskalaan otomatis
Penskalaan - penskalaan manual (masuk/keluar, atas/bawah)
Identitas terkelola
Spring Cloud Eureka &Config Server
Portal API untuk VMware Tanzu Paket perusahaan saja.
Spring Cloud Gateway untuk VMware Tanzu Paket perusahaan saja.
Layanan Konfigurasi Aplikasi untuk VMware Tanzu Paket perusahaan saja.
Tampilan Langsung Aplikasi untuk VMware Tanzu Paket perusahaan saja.
Registri Layanan VMware Tanzu Paket perusahaan saja.
VNET Tambahkan registri ke daftar izinkan di NSG atau Azure Firewall.
Alamat IP Keluar
E2E TLS Percayai CA yang ditandatangani sendiri.
Pengaturan keaktifan dan kesiapan
Pemecahan masalah tingkat lanjut - benang/heap/JFR dump Gambar harus menyertakan Bash dan JDK dengan PATH sebagaimana yang ditentukan.
Bawa penyimpanan Anda sendiri
Integrasikan pengikatan layanan dengan Konektor Sumber Daya
Zona Ketersediaan
Peristiwa Siklus Hidup Aplikasi
Mengurangi ukuran aplikasi - 0,5 vCPU dan 512 MB
Otomatiskan penyebaran aplikasi dengan Terraform
Penghapusan Sementara
Pengalaman diagnostik interaktif (berbasis AppLens)
SLA

Catatan

Aplikasi Polyglot termasuk aplikasi non-Spring Boot Java, NodeJS, AngularJS, Python, dan .NET.

Poin umum yang perlu diperhatikan saat menyebarkan dengan kontainer kustom

Poin-poin berikut akan membantu Anda mengatasi situasi umum saat menyebarkan dengan gambar kustom.

Mempercayai Otoritas Sertifikat

Ada dua opsi untuk mempercayai Otoritas Sertifikat:

Opsi 1: Unggah melalui Azure Spring Apps

Untuk memuat sertifikasi CA ke dalam aplikasi Anda, lihat Menggunakan sertifikat TLS/SSL di aplikasi Anda di Azure Spring Apps. Kemudian sertifikat akan dipasang ke lokasi /etc/azure-spring-cloud/certs/public/.

Opsi 2: Penginstalan manual dalam gambar

Untuk mempercayai CA dalam gambar, atur variabel berikut tergantung pada lingkungan Anda:

  • Anda harus mengimpor aplikasi Java ke penyimpanan kepercayaan dengan menambahkan baris berikut ke Dockerfile Anda:

    ADD EnterpriseRootCA.crt /opt/
    RUN keytool -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias EnterpriseRootCA -file /opt/EnterpriseRootCA.crt
    
  • Untuk aplikasi Node.js, atur NODE_EXTRA_CA_CERTS variabel lingkungan:

    ADD EnterpriseRootCA.crt /opt/
    ENV NODE_EXTRA_CA_CERTS="/opt/EnterpriseRootCA.crt"
    
  • Untuk Python, atau bahasa lain yang bergantung pada penyimpanan CA sistem, pada gambar Debian atau Ubuntu, tambahkan variabel lingkungan berikut:

    ADD EnterpriseRootCA.crt /usr/local/share/ca-certificates/
    RUN /usr/sbin/update-ca-certificates
    
  • Untuk Python, atau bahasa pemrograman lain yang mengandalkan penyimpanan CA sistem, pada image berbasis CentOS atau Fedora, tambahkan variabel lingkungan berikut:

    ADD EnterpriseRootCA.crt /etc/pki/ca-trust/source/anchors/
    RUN /usr/bin/update-ca-trust
    

Hindari perilaku tak terduga saat gambar berubah

Ketika aplikasi Anda dimulai ulang atau ditingkatkan skala, gambar terbaru akan selalu diambil. Jika gambar telah diubah, instans aplikasi yang baru dimulai akan menggunakan gambar baru sementara instans lama akan terus menggunakan gambar lama.

Catatan

Hindari penggunaan tag latest atau timpa gambar tanpa mengubah tag untuk menghindari perilaku aplikasi yang tidak terduga.

Hindari tidak dapat tersambung ke registri kontainer di VNet

Jika Anda menyebarkan instans ke VNet, pastikan Anda mengizinkan lalu lintas jaringan ke registri kontainer Anda di NSG atau Azure Firewall (jika digunakan). Untuk informasi selengkapnya, lihat Tanggung jawab pelanggan untuk berjalan di VNet untuk menambahkan aturan keamanan yang diperlukan.

Pemasangan APM ke dalam image dilakukan secara manual

Langkah-langkah penginstalan bervariasi pada pemantauan performa aplikasi (APM) dan bahasa yang berbeda. Langkah-langkah berikut adalah untuk New Relic dengan aplikasi Java. Anda harus mengubah Dockerfile menggunakan langkah-langkah berikut:

  1. Unduh dan instal file agen ke dalam gambar dengan menambahkan yang berikut ini ke Dockerfile:

    ADD newrelic-agent.jar /opt/agents/newrelic/java/newrelic-agent.jar
    
  2. Tambahkan variabel lingkungan yang diperlukan oleh APM:

    ENV NEW_RELIC_APP_NAME=appName
    ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
    
  3. Ubah titik entri gambar dengan menambahkan: java -javaagent:/opt/agents/newrelic/java/newrelic-agent.jar

Untuk menginstal agen untuk bahasa lain, lihat dokumentasi resmi untuk agen lain:

Relik Baru:

Dynatrace:

AppDynamics:

Lihat log kontainer

Untuk melihat log konsol aplikasi kontainer Anda, perintah CLI berikut dapat digunakan:

az spring app logs \
    --resource-group <your-resource-group> \
    --name <your-app-name> \
    --service <your-service-name> \
    --instance <your-instance-name>

Untuk menampilkan log peristiwa kontainer dari Azure Monitor, masukkan kueri:

AppPlatformContainerEventLogs
| where App == "hw-20220317-1b"

Cuplikan layar Azure Monitor yang memperlihatkan log peristiwa kontainer.

Pindai citra Anda untuk kerentanan

Kami menyarankan agar Anda menggunakan Microsoft Defender untuk Cloud dengan ACR untuk mencegah gambar Anda rentan. Untuk informasi selengkapnya, lihat Microsoft Defender untuk Cloud

Beralih antara penyediaan JAR dan penyediaan kontainer

Anda dapat mengalihkan jenis penyebaran dari penyebaran JAR ke penyebaran kontainer secara langsung dengan menyebarkan ulang menggunakan perintah berikut:

az spring app deploy \
    --resource-group <your-resource-group> \
    --name <your-app-name> \
    --container-image <your-container-image> \
    --service <your-service-name>

Atau sebaliknya:

az spring app deploy \
    --resource-group <your-resource-group> \
    --name <your-app-name> \
    --artifact-path <your-jar-file> \
    --service <your-service-name>

Buat penyebaran lain dengan penyebaran JAR yang ada

Anda dapat membuat penyebaran lain menggunakan penyebaran JAR yang sudah ada menggunakan perintah berikut:

az spring app deployment create \
    --resource-group <your-resource-group> \
    --name <your-deployment-name> \
    --app <your-app-name> \
    --container-image <your-container-image> \
    --service <your-service-name>

CI/CD

Mengotomatiskan penyebaran menggunakan Tugas Alur Azure atau Tindakan GitHub didukung sekarang. Untuk informasi selengkapnya, lihat Mengotomatiskan penyebaran aplikasi ke Azure Spring Apps dan Menggunakan Ci/CD Azure Spring Apps dengan GitHub Actions

Langkah berikutnya