Aracılığıyla paylaş


Özel bir konteyner görüntüsüyle uygulama dağıtma

Caution

Bu makale, Kullanım Süresi Sonu (EOL) durumu olan bir Linux dağıtımı olan CentOS'a başvurur. Lütfen kullanımınızı göz önünde bulundurun ve uygun şekilde planlayın. Daha fazla bilgi için bkz. CentOS Kullanım Süresi Sonu kılavuzu.

Note

Temel, Standardve Enterprise planları 17 Mart 2025'te kullanımdan kaldırma dönemine girdi. Daha fazla bilgi için, Azure Spring Apps emeklilik duyurusuna bakın.

Bu makale şunlar için geçerlidir:✅ Standard ✅ Enterprise

Bu makalede, özel bir kapsayıcı görüntüsü kullanarak Azure Spring Apps'te Spring Boot uygulamalarının nasıl dağıtılacağı açıklanmaktadır. Bir uygulamayı özel kapsayıcıyla dağıtmak, JAR uygulamasını dağıtırken olduğu gibi çoğu özelliği destekler. Kapsayıcı görüntüsüyle diğer Java ve Java dışı uygulamalar da dağıtılabilir.

Prerequisites

  • Uygulamayı içeren bir kapsayıcı görüntüsü.
  • Görüntü bir görüntü kayıt defterine gönderilir. Daha fazla bilgi için bkz. Azure Container Registry.

Note

Web uygulaması, Standart plan için 1025 ve Kurumsal plan için 8080 numaralı bağlantı noktalarında dinleme yapmalıdır. Bağlantı noktasını değiştirmenin yolu, uygulamanın çerçevesine bağlıdır. Örneğin, SERVER_PORT=1025 Spring Boot uygulamaları için belirtin veya ASPNETCORE_URLS=http://+:1025/ ASP.NET Core uygulamaları için belirtin. Herhangi bir bağlantı noktasında dinlemeyen uygulamalar için yoklama özelliğini devre dışı bırakabilirsiniz. Daha fazla bilgi için bkz. Azure Spring Apps'te barındırılan uygulamalar için sistem durumu yoklamalarını ve düzgün sonlandırma sürelerini yapılandırma.

Uygulamanızı dağıtın

Bir uygulamayı özel kapsayıcı görüntüsüne dağıtmak için aşağıdaki adımları kullanın:

Kapsayıcı görüntüsünü dağıtmak için aşağıdaki komutlardan birini kullanın:

  • Kapsayıcı görüntüsünü bir uygulamaya genel Docker Hub'ına dağıtmak için aşağıdaki komutu kullanın:

    az spring app deploy \
       --resource-group <your-resource-group> \
       --name <your-app-name> \
       --container-image <your-container-image> \
       --service <your-service-name>
    
  • ACR'den bir uygulamaya veya başka bir özel kayıt defterinden bir uygulamaya kapsayıcı görüntüsü dağıtmak için aşağıdaki komutu kullanın:

    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>
    

Görüntünün giriş noktasının üzerine yazmak için yukarıdaki komutlardan birine aşağıdaki iki bağımsız değişkeni ekleyin:

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

Web uygulaması olmayan görüntülerin bağlantı noktasında dinleme işlemini devre dışı bırakmak için yukarıdaki komutlara aşağıdaki parametreyi ekleyin.

    --disable-probe true

Özellik Desteği matrisi

Aşağıdaki matris, her uygulama türünde hangi özelliklerin desteklendiği gösterir.

Feature Spring Boot Apps - kapsayıcı dağıtımı Polyglot Apps - konteyner dağıtımı Notes
Uygulama yaşam döngüsü yönetimi
Container kayıt defterleri desteği
Uç nokta atama
Azure Monitor
APM entegrasyonu Manuel kurulum desteklenir.
Mavi/yeşil dağıtım
Özel alan adı
Ölçeklendirme - otomatik ölçeklendirme
Ölçeklendirme - el ile ölçeklendirme (içeri/dışarı, yukarı/aşağı)
İdare edilen kimlik
Spring Cloud Eureka & Config Server
VMware Tanzu için API portalı Yalnızca kurumsal plan.
VMware Tanzu için Spring Cloud Gateway Yalnızca kurumsal plan.
VMware Tanzu için Uygulama Yapılandırma Hizmeti Yalnızca kurumsal plan.
VMware Tanzu için Uygulama Canlı Görünümü Yalnızca kurumsal plan.
VMware Tanzu Service Registry Yalnızca kurumsal plan.
VNET NSG veya Azure Güvenlik Duvarı'nda izin verilenler listesine kayıt defteri ekleyin.
Giden IP Adresi
E2E TLS Otomatik olarak imzalanan bir CA'ya güvenin.
Canlılık ve hazır olma ayarları
Gelişmiş sorun giderme - iş parçacığı/yığın/JFR dökümü Görüntüde Bash ve belirtilen JDK PATH bulunmalıdır.
Kendi depolama alanınızı getirme
Hizmet bağlamayı Kaynak Bağlayıcısı ile tümleştirme
Kullanılabilirlik Alanı
Uygulama Yaşam Döngüsü olayları
Azaltılmış uygulama boyutu - 0,5 vCPU ve 512 MB
Terraform ile uygulama dağıtımlarını otomatikleştirme
Geçici Silme
Etkileşimli tanılama deneyimi (AppLens tabanlı)
SLA

Note

Polyglot uygulamaları Spring Boot olmayan Java, NodeJS, AngularJS, Python ve .NET uygulamalarını içerir.

Özel bir kapsayıcıyla dağıtım yaparken dikkat edilmesi gereken ortak noktalar

Aşağıdaki noktalar, özel bir görüntüyle dağıtım yaparken sık karşılaşılan durumları gidermenize yardımcı olacaktır.

Sertifika Yetkilisine Güvenme

Sertifika Yetkilisine güvenmek için iki seçenek vardır:

** Seçenek 1: Azure Spring Apps aracılığıyla yükleme yapma

CA sertifikalarını uygulamalarınıza yüklemek için bkz. Azure Spring Apps'te uygulamanızda TLS/SSL sertifikalarını kullanma. Ardından sertifikalar /etc/azure-spring-cloud/certs/public/ konumuna bağlanır.

Seçenek 2: Görüntüde el ile yükleme

Görüntüdeki bir CA'ya güvenmek için ortamınıza bağlı olarak aşağıdaki değişkenleri ayarlayın:

  • Dockerfile dosyasına aşağıdaki satırları ekleyerek Java uygulamalarını güven deposuna aktarmanız gerekir:

    ADD EnterpriseRootCA.crt /opt/
    RUN keytool -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -trustcacerts -importcert -alias EnterpriseRootCA -file /opt/EnterpriseRootCA.crt
    
  • Node.js uygulamalar için ortam değişkenini NODE_EXTRA_CA_CERTS ayarlayın:

    ADD EnterpriseRootCA.crt /opt/
    ENV NODE_EXTRA_CA_CERTS="/opt/EnterpriseRootCA.crt"
    
  • Python veya sistem CA deposuna dayanan diğer diller için, Debian veya Ubuntu görüntülerinde aşağıdaki ortam değişkenlerini ekleyin:

    ADD EnterpriseRootCA.crt /usr/local/share/ca-certificates/
    RUN /usr/sbin/update-ca-certificates
    
  • Python veya sistem CA deposuna dayanan diğer diller için CentOS veya Fedora tabanlı görüntülerde aşağıdaki ortam değişkenlerini ekleyin:

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

Görüntüler değiştiğinde beklenmeyen davranışlardan kaçının

Uygulamanız yeniden başlatıldığında veya ölçeği genişletildiğinde, en son görüntü her zaman çekilir. Görüntü değiştirildiyse, yeni başlatılan uygulama örnekleri yeni görüntüyü kullanırken, eski örnekler eski görüntüyü kullanmaya devam eder.

Note

Beklenmeyen uygulama davranışını önlemek için etiketi kullanmaktan latest kaçının veya etiket değişikliği olmadan resmin üzerine yazın.

VNet içindeki kapsayıcı kayıt defterine bağlanamama sorununu önleyin

Örneği bir sanal ağa dağıttıysanız, NSG veya Azure Güvenlik Duvarı'nda (kullanılıyorsa) kapsayıcı kayıt defterinize giden ağ trafiğine izin verin. Daha fazla bilgi için, gerekli güvenlik kurallarını eklemek için bkz. Sanal ağda çalıştırmaya yönelik müşteri sorumlulukları .

Görüntüye el ile APM yükleme

Yükleme adımları farklı uygulama performansı izleyicilerine (APM) ve dillere göre farklılık gösterir. Aşağıdaki adımlar, Java uygulamalarıyla New Relic için geçerlidir. Aşağıdaki adımları kullanarak Dockerfile dosyasını değiştirmeniz gerekir:

  1. Dockerfile dosyasına aşağıdakileri ekleyerek aracı dosyasını indirin ve görüntüye yükleyin:

    ADD newrelic-agent.jar /opt/agents/newrelic/java/newrelic-agent.jar
    
  2. APM tarafından gereken ortam değişkenlerini ekleyin:

    ENV NEW_RELIC_APP_NAME=appName
    ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKey
    
  3. Şunları ekleyerek görüntü giriş noktasını değiştirin: java -javaagent:/opt/agents/newrelic/java/newrelic-agent.jar

Aracıları diğer dillere yüklemek için diğer aracıların resmi belgelerine bakın:

Yeni Relic:

Dynatrace:

AppDynamics:

Kapsayıcı günlüklerini görüntüleme

Kapsayıcı uygulamanızın konsol günlüklerini görüntülemek için aşağıdaki CLI komutu kullanılabilir:

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

Azure İzleyici'den kapsayıcı olay günlüklerini görüntülemek için sorguyu girin:

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

Kapsayıcı olay günlüğünü gösteren Azure İzleyici'nin ekran görüntüsü.

Görüntünüzü güvenlik açıklarına karşı tarama

Görüntülerinizin savunmasız olmasını önlemek için Bulut için Microsoft Defender'ı ACR ile kullanmanızı öneririz. Daha fazla bilgi için bkz. Bulut için Microsoft Defender

JAR dağıtımı ile kapsayıcı dağıtımı arasında geçiş yapma

Aşağıdaki komutu kullanarak dağıtım türünü JAR dağıtımından kapsayıcı dağıtımına doğrudan yeniden dağıtarak değiştirebilirsiniz:

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

Ya da tersten:

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

Mevcut JAR dağıtımıyla başka bir dağıtım oluşturma

Aşağıdaki komutu kullanarak mevcut JAR dağıtımını kullanarak başka bir dağıtım oluşturabilirsiniz:

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

Azure Pipelines Görevlerini veya GitHub Actions'i kullanarak dağıtımları otomatikleştirme artık desteklenmektedir. Daha fazla bilgi için bkz. Azure Spring Apps'e uygulama dağıtımlarını otomatikleştirme ve GitHub Actions ile Azure Spring Apps CI/CD kullanma

Sonraki Adımlar