Aracılığıyla paylaş


Özel kapsayıcı görüntüsüyle uygulama dağıtma

Dikkat

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.

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

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.

Önkoşullar

  • 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.

Not

Web uygulamasının Standart plan için bağlantı noktasında 1025 ve Kurumsal plan için bağlantı noktasında 8080 dinlemesi gerekir. Bağlantı noktasını değiştirmenin yolu, uygulamanın çerçevesine bağlıdır. Örneğin, Spring Boot uygulamaları veya ASPNETCORE_URLS=http://+:1025/ ASP.NET Core uygulamaları için belirtinSERVER_PORT=1025. 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ğıtma

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 dinlemeyi devre dışı bırakmak için yukarıdaki komutlara aşağıdaki bağımsız değişkeni ekleyin:

    --disable-probe true

Özellik Desteği matrisi

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

Özellik Spring Boot Apps - kapsayıcı dağıtımı Polyglot Uygulamaları - kapsayıcı dağıtımı Notlar
Uygulama yaşam döngüsü yönetimi ✔️ ✔️
Kapsayıcı kayıt defterleri desteği ✔️ ✔️
Uç nokta atama ✔️ ✔️
Azure İzleyici ✔️ ✔️
APM tümleştirmesi ✔️ ✔️ El ile yükleme tarafından desteklenir.
Mavi/yeşil dağıtım ✔️ ✔️
Özel etki alanı ✔️ ✔️
Ölçeklendirme - otomatik ölçeklendirme ✔️ ✔️
Ölçeklendirme - el ile ölçeklendirme (içeri/dışarı, yukarı/aşağı) ✔️ ✔️
Yönetilen 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.
Sanal ağ ✔️ ✔️ NSG veya Azure Güvenlik Duvarı'de allowlist'e 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 ✔️ ✔️

Not

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:

1. Seçenek: Azure Spring Apps aracılığıyla karşıya yükleme

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.

Not

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

Sanal ağda kapsayıcı kayıt defterine bağlanamamaktan kaçının

Örneği bir sanal ağa dağıttıysanız, NSG veya Azure Güvenlik Duvarı (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 ACR ile Bulut için Microsoft Defender 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