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.
Spring tarafından yönetilen bileşen, aktüatör uç noktalarını açığa çıkaran Spring Boot web uygulamaları için bir yönetim arabirimi sunar. Azure Container Apps'te yönetilen bir bileşen olarak sorunsuz tümleştirme ve yönetim için kapsayıcı uygulamanızı Spring için Admin'e kolayca bağlayabilirsiniz.
Bu öğreticide Spring Java için Yönetici bileşeni oluşturma ve Spring uygulamalarınızı kolayca izleyip yönetebilmeniz için bunu kapsayıcı uygulamanıza bağlama gösterilmektedir.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Spring Java bileşeni için bir Yönetici oluşturun.
- Kapsayıcı uygulamanızı Spring Java için Yönetici bileşenine bağlayın.
Spring için Admin'i Spring için Eureka Server ile tümleştirmek istiyorsanız, bunun yerine Container Apps'te Spring için Admin'i Eureka Server ile tümleştirme kısmına bakın.
Önemli
Bu öğreticide Azure faturanızı etkileyebilecek hizmetler kullanılır. Takip etmeye karar verirseniz, beklenmeyen faturalamayı önlemek için bu makalede öne çıkan kaynakları sildiğinizden emin olun.
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Henüz bir hesabınız yoksa, ücretsiz bir hesap oluşturabilirsiniz.
- Azure CLI.
Dikkat edilmesi gereken noktalar
Container Apps'te Spring için Yönetici bileşenini çalıştırdığınızda aşağıdaki ayrıntılara dikkat edin:
| Öğe | Açıklama |
|---|---|
| Kapsam | Bileşenler, bağlı kapsayıcı uygulamasıyla aynı ortamda çalışır. |
| Ölçeklendirme | Bileşenler ölçeklendirilemiyor. Ölçeklendirme özellikleri minReplicas ve maxReplicas her ikisi de 1 olarak ayarlanır. |
| Kaynaklar | Bileşenler için kapsayıcı kaynak ayırması düzeltildi. CPU çekirdeği sayısı 0,5, bellek boyutu ise 1 GB'tır. |
| Fiyatlandırma | Bileşen faturalaması tüketime dayalı fiyatlandırmanın altındadır. Yönetilen bileşenler tarafından kullanılan kaynaklar, kaynak kullanımına bağlı olarak etkin veya boşta kalma fiyatlarına göre faturalandırılır. Faturalamayı durdurmak için artık kullanımda olmayan bileşenleri silebilirsiniz. |
| Bağlama | Kapsayıcı uygulamalar bir bileşene bağlama aracılığıyla bağlanır. Bağlamalar, yapılandırmaları kapsayıcı uygulaması ortam değişkenlerine ekler. Bağlama oluşturulduktan sonra kapsayıcı uygulaması ortam değişkenlerinden yapılandırma değerlerini okuyabilir ve bileşene bağlanabilir. |
Ayarlama
Spring için Yönetici bileşeniyle çalışmaya başlamadan önce gerekli kaynakları oluşturmanız gerekir.
Aşağıdaki komutlar kaynak grubunuzu ve kapsayıcı uygulaması ortamınızı oluşturmanıza yardımcı olur.
Uygulama yapılandırmanızı desteklemek için değişkenler oluşturun. Bu değerler, bu dersin amaçları doğrultusunda size sağlanır.
export LOCATION=eastus export RESOURCE_GROUP=my-resource-group export ENVIRONMENT=my-environment export JAVA_COMPONENT_NAME=admin export APP_NAME=sample-admin-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-admin-for-spring-client:latest"Değişken Açıklama LOCATIONKapsayıcı uygulamanızı ve Java bileşenini oluşturduğunuz Azure bölgesi konumu. ENVIRONMENTTanıtım uygulamanız için kapsayıcı uygulamanın ortam adı. RESOURCE_GROUPTanıtım uygulamanızın Azure kaynak grubu adı. JAVA_COMPONENT_NAMEKapsayıcı uygulamanız için oluşturulan Java bileşeninin adı. Bu durumda Spring Java için bir Yönetici bileşeni oluşturursunuz. IMAGEKapsayıcı uygulamanızda kullanılan kapsayıcı görüntüsü. Azure CLI ile Azure'da oturum açın.
az loginKaynak grubu oluşturun.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --query "properties.provisioningState"parametresini
--querykullandığınızda, yanıt basit bir başarı veya hata iletisine göre filtrelenir.Kapsayıcı uygulama ortamınızı oluşturun.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Bileşeni kullanma
Artık mevcut bir ortamınız olduğuna göre kapsayıcı uygulamanızı oluşturabilir ve Spring için Yönetici bileşeninin Java bileşeni örneğine bağlayabilirsiniz.
Spring Java için Yönetici bileşenini oluşturun.
az containerapp env java-component admin-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1Spring Java bileşeninin Yöneticisi'ni güncelleştirin.
az containerapp env java-component admin-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2
Kapsayıcı uygulamanızı Spring Java için Yönetici bileşenine bağlama
Kapsayıcı uygulamasını oluşturun ve Spring için Yönetici bileşenine bağlayın.
az containerapp create \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --environment $ENVIRONMENT \ --image $IMAGE \ --min-replicas 1 \ --max-replicas 1 \ --ingress external \ --target-port 8080 \ --bind $JAVA_COMPONENT_NAME
Bağlama işlemi kapsayıcı uygulamasını Spring Java için Yönetici bileşenine bağlar. Kapsayıcı uygulaması artık başlıca SPRING_BOOT_ADMIN_CLIENT_URL özelliği olmak üzere ortam değişkenlerinden yapılandırma değerlerini okuyabilir ve Spring bileşeni için Yönetici birimine bağlanabilir.
Bağlama ayrıca aşağıdaki özelliği de ekliyor:
"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",
Bu özellik, Admin for Spring bileşen istemcisinin, Admin for Spring sunucusuna bağlandığınızda kapsayıcı uygulama örneğinin IP adresini kullanması gerektiğini gösterir.
İsteğe bağlı: Spring Java için Yönetici bileşeninden kapsayıcı uygulamanızın bağlantısını kaldırın
Kapsayıcı uygulamasından bağlamayı kaldırmak için seçeneğini kullanın --unbind .
az containerapp update \
--name $APP_NAME \
--unbind $JAVA_COMPONENT_NAME \
--resource-group $RESOURCE_GROUP
Panoyu görüntüleme
Önemli
Panoyu görüntülemek için hesabınızın, yönetilen ortam kaynağı üzerinde en az Microsoft.App/managedEnvironments/write rolüne sahip olması gerekir. kaynakta Owner veya Contributor rolünü açıkça atayabilirsiniz. Ayrıca, özel bir rol tanımı oluşturmak ve bunu hesabınıza atamak için adımları izleyebilirsiniz.
Not
Pano, 21Vianet tarafından sağlanan Azure'da kullanılamaz.
Özel rol tanımını oluşturun.
az role definition create --role-definition '{ "Name": "<ROLE_NAME>", "IsCustom": true, "Description": "Can access managed Java Component dashboards in managed environments", "Actions": [ "Microsoft.App/managedEnvironments/write" ], "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"] }'<>etiketleri arasındaki yer tutucuları kendi değerlerinizle değiştirdiğinizden emin olun.Yönetilen ortam kaynağındaki hesabınıza özel rolü atayın.
Yönetilen ortamın kaynak kimliğini alın:
export ENVIRONMENT_ID=$(az containerapp env show \ --name $ENVIRONMENT --resource-group $RESOURCE_GROUP \ --query id \ --output tsv)Rolü hesabınıza atayın.
Bu komutu çalıştırmadan önce, yer tutucusunu (köşeli ayraçlar tarafından
<>gösterildiği gibi) kullanıcı veya hizmet sorumlusu kimliğiniz veya rol adınızla değiştirin.az role assignment create \ --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \ --role "<ROLE_NAME>" \ --scope $ENVIRONMENT_IDNot
Değer,
<USER_OR_SERVICE_PRINCIPAL_ID>Azure portalına erişmek için kullandığınız kimlik olmalıdır.<ROLE_NAME>Değer, 1. adımda atadığınız addır.Spring için Yönetici panosunun URL'sini alın.
az containerapp env java-component admin-for-spring show \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --query properties.ingress.fqdn \ --output tsvBu komut, Spring panosunun Yöneticisi'ne erişmek için kullanabileceğiniz URL'yi döndürür. Kontrol paneliyle, aşağıdaki ekran görüntüsünde gösterildiği gibi kapsayıcı uygulamanızı da görebilirsiniz.
Kaynakları temizleme
Bu öğreticide oluşturduğunuz kaynaklar Azure faturanızı etkiler. Bu hizmetleri uzun vadeli kullanmayı planlamıyorsanız, bu öğreticide oluşturduğunuz her şeyi kaldırmak için aşağıdaki komutu çalıştırın.
az group delete --resource-group $RESOURCE_GROUP
Bağımlılık
Yönetici bileşenini kendi kapsayıcı uygulamanızda kullandığınızda, pom.xml dosyanıza aşağıdaki bağımlılığı ekleyin. Sürüm numarasını Maven Deposunda bulunan en son sürümle değiştirin.
<dependency>
<groupId>de.codecentric</groupId>
<version>3.3.2</version>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
Not
Azure CLI'da aşağıdaki komutu çalıştırarak kapsayıcı uygulamanızda Java aracısını etkinleştirirseniz Spring Boot Admin için yönetici başlangıç istemci bağımlılığını eklemeniz gerekmez:
az containerapp update --enable-java-agent \
--resource-group $RESOURCE_GROUP \
--name $APP_NAME
Yapılandırılabilir özellikler
Spring Boot 2'den itibaren, health ve info dışındaki uç noktalar varsayılan olarak kullanıma sunulmaz. Application.properties dosyanıza aşağıdaki yapılandırmayı ekleyerek bunları kullanıma açabilirsiniz.
management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
Spring için Yöneticiniz için izin verilen yapılandırma listesi
Aşağıdaki listede, uygulamanız için yapılandırabileceğiniz yönetici bileşeni özellikleri ayrıntılı olarak yer alır. Daha fazla bilgi için bkz . Spring Boot Yöneticisi.
| Özellik adı | Açıklama | Varsayılan değer |
|---|---|---|
spring.boot.admin.server.enabled |
Spring Boot Yönetici Sunucusunu etkinleştirir. | true |
spring.boot.admin.context-path |
Yönetici Sunucusu'nun statik varlıklarının ve API'sinin sunulduğu yol ön eki. Dispatcher-Servlet'e göre. | |
spring.boot.admin.monitor.status-interval |
Örneklerin durumunu denetlemek için milisaniye cinsinden zaman aralığı. | 10,000ms |
spring.boot.admin.monitor.status-lifetime |
Milisaniye cinsinden durum ömrü. Son durumun süresi dolmamış olduğu sürece durum güncelleştirilmez. | 10.000 ms |
spring.boot.admin.monitor.info-interval |
Örneklerin bilgilerini denetlemek için milisaniye cinsinden zaman aralığı. | 1m |
spring.boot.admin.monitor.info-lifetime |
Dakika cinsinden bilgi ömrü. Son bilgiler süresi dolmamış olduğu sürece bilgiler güncelleştirilmez. | 1m |
spring.boot.admin.monitor.default-timeout |
İstek yaparken varsayılan zaman aşımı. Belirli uç noktaların tek tek değerleri kullanılarak spring.boot.admin.monitor.timeout.*geçersiz kılınabilir. |
10,000 |
spring.boot.admin.monitor.timeout.* |
Her endpointId başına zaman aşımı ile anahtar-değer çiftleri. |
Varsayılan olarak default-timeout değerini alır. |
spring.boot.admin.monitor.default-retries |
Başarısız istekler için varsayılan yeniden deneme sayısı. Verileri (PUT, POST, , PATCHDELETE) değiştiren istekler yeniden denenmiyor. Belirli uç noktaların tek tek değerleri kullanılarak spring.boot.admin.monitor.retries.*geçersiz kılınabilir. |
0 |
spring.boot.admin.monitor.retries.* |
Anahtar-değer çiftleri, endpointId başına yeniden deneme sayısıyla. Verileri (PUT, POST, , PATCHDELETE) değiştiren istekler yeniden denenmiyor. |
Varsayılan default-retries değerine ayarlanır. |
spring.boot.admin.metadata-keys-to-sanitize |
Tüm JSON çıktılarında temizleme için kullanılan bu regex desenleriyle eşleşen anahtarların meta veri değerleri. Spring Boot 3'ten itibaren tüm çalıştırıcı değerleri varsayılan olarak maskelenir. Sağlıksızlaştırma işlemini yapılandırma hakkında daha fazla bilgi için bkz . Hassas Değerleri Temizleme. | ".*password$", ".*secret$", ".*key$", ".*token$", ".*credentials.*", ".*vcap_services$" |
spring.boot.admin.probed-endpoints |
Spring Boot 1.x istemci uygulamaları için Spring Boot Yöneticisi, bir OPTIONS istek kullanarak belirtilen uç noktaları yoklar. Yol kimlikten farklıysa, bu değeri olarak id:path belirtebilirsiniz; örneğin, health:ping. |
"health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents" |
spring.boot.admin.instance-proxy.ignored-headers |
İstemcilere istekte bulunurken iletilmeyecek başlıklar. | "Cookie", "Set-Cookie", "Authorization" |
spring.boot.admin.ui.title |
Görüntülenen sayfa başlığı. | "Spring Boot Admin" |
spring.boot.admin.ui.poll-timer.cache |
Yeni önbellek verilerini getirmek için milisaniye cinsinden yoklama süresi. | 2500 |
spring.boot.admin.ui.poll-timer.datasource |
Yeni veri kaynağı verilerini getirmek için milisaniye cinsinden yoklama süresi. | 2500 |
spring.boot.admin.ui.poll-timer.gc |
Yeni gc verilerini almak için milisaniye cinsinden yoklama süresi. | 2500 |
spring.boot.admin.ui.poll-timer.process |
Yeni işlem verilerini getirmek için milisaniye cinsinden yoklama süresi. | 2500 |
spring.boot.admin.ui.poll-timer.memory |
Yeni bellek verilerini çekmek için milisaniye cinsinden yoklama süresi. | 2500 |
spring.boot.admin.ui.poll-timer.threads |
Yeni iş parçacığı verilerini almak için milisaniye cinsinden yoklama süresi. | 2500 |
spring.boot.admin.ui.poll-timer.logfile |
Yeni logfile verilerini getirmek için milisaniye cinsinden yoklama süresi. | 1000 |
spring.boot.admin.ui.enable-toasts |
Bildirim uyarılarını etkinleştirir veya devre dışı bırakır. | false |
spring.boot.admin.ui.title |
Tarayıcının pencere başlığı değeri. | "" |
spring.boot.admin.ui.brand |
Gezinti üst bilgisinde işlenen HTML kodu varsayılan olarak Spring Boot Admin etiketini kullanır. Varsayılan olarak, Spring Boot Yöneticisi logosunun ardından adı eklenir. | "" |
management.scheme |
Aktüatör uç noktalarına erişmek için kullanılan hizmet URL'sinde değiştirilen değer. | |
management.address |
Aktüatör uç noktalarına erişmek için kullanılan hizmet URL'sinde değiştirilen değer. | |
management.port |
Aktüatör uç noktalarına erişmek için kullanılan hizmet URL'sinde değiştirilen değer. | |
management.context-path |
Aktüatör uç noktalarına erişmek için kullanılan hizmet URL'sine eklenen değer. | ${spring.boot.admin.discovery.converter.management-context-path} |
health.path |
Sağlık kontrolü için kullanılan hizmet URL'sine eklenen değer.
EurekaServiceInstanceConverter tarafından yoksayıldı. |
${spring.boot.admin.discovery.converter.health-endpoint} |
spring.boot.admin.discovery.enabled |
DiscoveryClient Yönetici sunucusu desteğini etkinleştirir. |
true |
spring.boot.admin.discovery.converter.management-context-path |
Dönüşümü DefaultServiceInstanceConverter tarafından gerçekleştirilen management-url değerine sahip keşfedilen hizmetin service-url sonuna eklenen değer. |
/actuator |
spring.boot.admin.discovery.converter.health-endpoint-path |
Keşfedilen hizmetin management-url'sine, DefaultServiceInstanceConverter tarafından health-url değeri dönüştürüldüğünde eklenen değer. |
"health" |
spring.boot.admin.discovery.ignored-services |
Keşif kullanılırken yoksayılan ve uygulama olarak kaydedilmeyen hizmetler. , "foo*"ve "*bar"gibi "foo*bar*"basit desenleri destekler. |
|
spring.boot.admin.discovery.services |
Keşif yapıldığında dahil edilen ve uygulama olarak kaydedilen hizmetler. , "foo*"ve "*bar"gibi "foo*bar*"basit desenleri destekler. |
"*" |
spring.boot.admin.discovery.ignored-instances-metadata |
Hizmetler, bu listedeki desenlere uyan en az bir meta veri öğesi içeriyorsa yoksayılır. gibi "discoverable=false"desenleri destekler. |
|
spring.boot.admin.discovery.instances-metadata |
Listedeki desenlere uyan en az bir meta veri öğesi içeren hizmetler. gibi "discoverable=true"desenleri destekler. |
Ortak yapılandırmalar
- İlgili yapılandırmaları günlüğe kaydetme:
- logging.level.*
- logging.group.*
- İsim alanı
logging.*altındaki diğer tüm yapılandırmalar. Örneğin,logging.filegünlük dosyalarını yazmak için kullanmayın.
Sınırlamalar
- Spring Boot Yönetici Panosu, 21Vianet tarafından sağlanan Azure'da kullanılamaz.
İlgili içerik
Spring için yönetilen Yöneticiyi Spring için Eureka Server ile tümleştirme