Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.crtNode.js uygulamalar için ortam değişkenini
NODE_EXTRA_CA_CERTSayarlayı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-certificatesPython 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:
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.jarAPM tarafından gereken ortam değişkenlerini ekleyin:
ENV NEW_RELIC_APP_NAME=appName ENV NEW_RELIC_LICENSE_KEY=newRelicLicenseKeyŞ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:
- Python: Python aracısını yükleme
- Node.js: Node.js aracısını yükleme
Dynatrace:
- Python: OpenTelemetry ile Python uygulamalarını izleme
- Node.js: Node.js uygulamalarını OpenTelemetry ile enstrüman etmek
AppDynamics:
- Python: Python Aracısını Yükleme
- Node.js: Node.js Aracısını Yükleme
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"
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