Aracılığıyla paylaş


Azure Container Apps'te Spring için yönetilen yöneticiye bağlanma

Spring yöneticisi tarafından yönetilen bileşen, aktüatör uç noktalarını kullanıma sunan 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.

Spring insights için Yönetici panosuna genel bir bakış gösteren ekran görüntüsü.

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 for Spring ile tümleştirmek istiyorsanız bkz . Spring için Admin'i Container Apps'te Spring için Eureka Server ile tümleştirme.

Ö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 olarak 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:

Kalem Açıklama
Kapsam Bileşenler, bağlı kapsayıcı uygulamasıyla aynı ortamda çalışır.
Ölçeklendirme Bileşen ölçeklendirilemiyor. Ölçeklendirme özellikleri minReplicas ve maxReplicas her ikisi de olarak 1ayarlanır.
Kaynaklar Bileşenler için kapsayıcı kaynak ayırması düzeltildi. CPU çekirdeklerinin sayısı 0,5 ve bellek boyutu 1 Gi'dir.
Fiyatlandırma Bileşen faturalaması tüketime dayalı fiyatlandırmanın altındadır. Yönetilen bileşenler tarafından kullanılan kaynaklar etkin/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ı bağlama yoluyla bir bileşene 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.

  1. 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
    LOCATION Kapsayıcı uygulamanızı ve Java bileşenini oluşturduğunuz Azure bölgesi konumu.
    ENVIRONMENT Tanıtım uygulamanızın kapsayıcı uygulaması ortam adı.
    RESOURCE_GROUP Tanıtım uygulamanızın Azure kaynak grubu adı.
    JAVA_COMPONENT_NAME Kapsayıcı uygulamanız için oluşturulan Java bileşeninin adı. Bu durumda Spring Java için bir Yönetici bileşeni oluşturursunuz.
    IMAGE Kapsayıcı uygulamanızda kullanılan kapsayıcı görüntüsü.
  2. Azure CLI ile Azure'da oturum açın.

    az login
    
  3. Kaynak grubu oluşturun.

    az group create \
        --name $RESOURCE_GROUP \
        --location $LOCATION \
        --query "properties.provisioningState"
    

    parametresini --query kullandığınızda, yanıt basit bir başarı veya hata iletisine göre filtrelenir.

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

  1. 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 1
    
  2. Spring 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

  1. 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 öncelikle özelliği olmak üzere SPRING_BOOT_ADMIN_CLIENT_URL ortam değişkenlerinden yapılandırma değerlerini okuyabilir ve Spring bileşeni için Yönetici'ye bağlanabilir.

Bağlama ayrıca aşağıdaki özelliği de ekliyor:

"SPRING_BOOT_ADMIN_CLIENT_INSTANCE_PREFER-IP": "true",

Bu özellik, Spring için Yönetici bileşen istemcisinin Spring sunucusu için Yönetici'ye bağlandığınızda kapsayıcı uygulama örneğinin IP adresini tercih etmesi 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 en azından yönetilen ortam kaynağında Microsoft.App/managedEnvironments/write hesabınıza atanmış rolün 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 Azure China 21Vianet'te kullanılamaz.

  1. Ö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>"]
    }'
    

    Köşeli ayraçlar arasındaki <> yer tutucuları değerlerinizle değiştirdiğinden emin olun.

  2. 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)
    
  3. 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_ID
    

    Not

    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.

  4. 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 tsv
    

    Bu komut, Spring panosunun Yöneticisi'ne erişmek için kullanabileceğiniz URL'yi döndürür. Panoyla, aşağıdaki ekran görüntüsünde gösterildiği gibi kapsayıcı uygulamanızı da görebilirsiniz.

    Spring için Yönetici panosuna genel bakışı gösteren ekran görüntüsü.

Kaynakları temizleme

Bu öğreticide oluşturulan kaynakların Azure faturanız üzerinde etkisi vardır. Bu hizmetleri uzun vadeli kullanmayacaksanı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

Dependency

Kendi kapsayıcı uygulamanızda yönetici bileşenini kullandığınızda, pom.xml dosyanıza aşağıdaki bağımlılığı eklemeniz gerekir. 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>

Yapılandırılabilir özellikler

Spring Boot 2'den başlayarak ve info dışındaki health 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 Default value
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.* Başına endpointIdzaman aşımı ile anahtar-değer çiftleri. Varsayılan değerdir default-timeout .
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 hiçbir zaman yeniden denenemez. 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.* Başına endpointIdyeniden deneme sayısıyla anahtar-değer çiftleri. Verileri (PUT, POST, , PATCHDELETE) değiştiren istekler hiçbir zaman yeniden denenemez. Varsayılan değerdir default-retries .
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 üst bilgiler. "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 getirmek 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 getirmek için milisaniye cinsinden yoklama süresi. 2500
spring.boot.admin.ui.poll-timer.threads Yeni iş parçacığı verilerini getirmek 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 bildirimlerini 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 Sistem durumu denetimi için kullanılan hizmet URL'sine eklenen değer. tarafından yoksayıldı EurekaServiceInstanceConverter. ${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 Değeri tarafından DefaultServiceInstanceConverterdönüştürüldüğünde service-url bulunan hizmetin management-url sonuna eklenen değer. /actuator
spring.boot.admin.discovery.converter.health-endpoint-path Değeri tarafından DefaultServiceInstanceConverterdönüştürüldüğünde management-url bulunan hizmetin health-url sonuna eklenen değer. "health"
spring.boot.admin.discovery.ignored-services Bulma kullanılırken yoksayılan ve uygulama olarak kaydedilmeyen hizmetler. , "*bar"ve "foo*bar*"gibi "foo*"basit desenleri destekler.
spring.boot.admin.discovery.services Bulma kullanılırken dahil edilen ve uygulama olarak kaydedilen hizmetler. , "*bar"ve "foo*bar*"gibi "foo*"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.*
    • Ad alanı altındaki logging.* diğer yapılandırmalar yasak olmalıdır. Örneğin, kullanarak logging.file günlük dosyalarını yazmak yasak olmalıdır.

Sınırlamalar

  • Spring Boot Yönetici Panosu Azure China 21Vianet'te kullanılamaz.

Spring için yönetilen Yöneticiyi Spring için Eureka Server ile tümleştirme