Öğretici: Azure Container Apps'te spring için yönetilen eureka sunucusuna bağlanma

Spring için Eureka Server, mikro hizmetlerin kendilerini kaydetmesine ve diğer hizmetleri keşfetmesine olanak tanıyan bir hizmet kayıt defteridir. Azure Container Apps bileşeni olarak sunulan kapsayıcı uygulamanızı, Eureka sunucusuna otomatik kayıt için Spring için Eureka Sunucusu'na bağlayabilirsiniz.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Spring Java bileşeni için Eureka Sunucusu oluşturma
  • Kapsayıcı uygulamanızı Spring Java için Eureka Server bileşenine bağlama

Önemli

Bu öğreticide Azure faturanızı etkileyebilecek hizmetler kullanılır. Adım adım izlemeye karar verirseniz, beklenmeyen faturalamayı önlemek için bu makalede öne çıkan kaynakları sildiğinizden emin olun.

Önkoşullar

Bu projeyi tamamlamak için aşağıdaki öğeler gerekir:

Gereksinim Yönergeler
Azure hesabı Etkin bir abonelik gereklidir. Kuruluşunuz yoksa şimdi ücretsiz olarak bir tane oluşturabilirsiniz.
Azure CLI Azure CLI’yi yükleyin.

Dikkat edilmesi gereken noktalar

Azure Container Apps'te Spring için Eureka Server'da çalışırken aşağıdaki ayrıntılara dikkat edin:

Kalem Açıklama
Scope Spring için Eureka Sunucusu bileşeni, bağlı kapsayıcı uygulamasıyla aynı ortamda çalışır.
Ölçeklendirme Spring için Eureka Sunucusu ölçeklendirilemiyor. Ölçeklendirme özellikleri minReplicas ve maxReplicas her ikisi de olarak 1ayarlanır. Yüksek kullanılabilirlik elde etmek için Azure Container Apps'te Yüksek Oranda Kullanılabilir Eureka Hizmeti Oluşturma konusuna başvurabilirsiniz.
Kaynaklar Spring için Eureka Server için kapsayıcı kaynak ayırma işlemi düzeltildi. CPU çekirdeklerinin sayısı 0,5, bellek boyutu ise 1Gi'dir.
Fiyatlandırma Spring için Eureka Server faturalaması tüketime dayalı fiyatlandırma kapsamındadır. Yönetilen Java bileşenleri tarafından tüketilen 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 Spring için Eureka Server bileşenine 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 Spring için Eureka Server'a bağlanabilir.

Ayarlama

Spring için Eureka Server ile çalışmaya başlamadan önce gerekli kaynakları oluşturmanız gerekir.

Kaynak grubunuzu, kapsayıcı uygulamaları ortamınızı oluşturmak için aşağıdaki komutları yürütebilirsiniz.

  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-services-resource-group
    export ENVIRONMENT=my-environment
    export EUREKA_COMPONENT_NAME=eureka
    export APP_NAME=my-eureka-client
    export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-eureka-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 Azure Container Apps ortam adı.
    RESOURCE_GROUP Tanıtım uygulamanızın Azure kaynak grubu adı.
    EUREKA_COMPONENT_NAME Kapsayıcı uygulamanız için oluşturulan Java bileşeninin adı. Bu durumda Spring Java için bir Eureka Server 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
    
  4. Kapsayıcı uygulamaları ortamınızı oluşturun.

    az containerapp env create \
      --name $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION
    

Spring Java için Eureka Server bileşenini oluşturma

Artık mevcut bir ortamınız olduğuna göre kapsayıcı uygulamanızı oluşturabilir ve Spring için Eureka Server'ın Java bileşen örneğine bağlayabilirsiniz.

  1. Spring Java için Eureka Server bileşenini oluşturun.

    az containerapp env java-component eureka-server-for-spring create \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME
    
  2. İsteğe bağlı: Spring Java bileşen yapılandırması için Eureka Server'ı güncelleştirin.

    az containerapp env java-component eureka-server-for-spring update \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME 
      --configuration eureka.server.renewal-percent-threshold=0.85 eureka.server.eviction-interval-timer-in-ms=10000
    

Kapsayıcı uygulamanızı Spring Java için Eureka Server bileşenine bağlama

  1. Kapsayıcı uygulamasını oluşturun ve Spring için Eureka Server'a 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 $EUREKA_COMPONENT_NAME \
      --query properties.configuration.ingress.fqdn
    

Uygulamanızın URL'sini bir metin düzenleyicisine kopyalayarak bunu önümüzdeki adımda kullanabilirsiniz.

Portalda kapsayıcı uygulamasına dönün ve uygulamanızın URL'sini bir metin düzenleyicisine kopyalayarak bunu önümüzdeki adımda kullanabilirsiniz.

/allRegistrationStatus Spring için Eureka Server'a kayıtlı tüm uygulamaları görüntülemek için yola gidin.

Bağlama, uygulamaya öncelikle özelliği olmak üzere ortam değişkenleri olarak çeşitli yapılandırmalar eureka.client.service-url.defaultZone ekler. Bu özellik, Eureka Server Java bileşeninin iç uç noktasını gösterir.

Bağlama ayrıca aşağıdaki özellikleri de eklemektedir:

"eureka.client.register-with-eureka":    "true"
"eureka.client.fetch-registry":          "true"
"eureka.instance.prefer-ip-address":     "true"

özelliği, eureka.client.register-with-eureka Eureka sunucusuna kaydı zorunlu kılmak için olarak ayarlanır true . Bu kayıt, içindeki yerel ayarın application.propertiesüzerine yapılandırma sunucusundan yazar ve bu şekilde devam eder. olarak ayarlamak falseisterseniz, kapsayıcı uygulamanızda bir ortam değişkeni ayarlayarak üzerine yazabilirsiniz.

eureka.instance.prefer-ip-address, kapsayıcı uygulaması ortamındaki belirli DNS çözümleme kuralı nedeniyle olarak ayarlanırtrue. Bağlamayı kesmemesi için bu değeri değiştirmeyin.

(İsteğe bağlı) Kapsayıcı uygulamanızı Spring Java için Eureka Server bileşeninden bağlama

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

Uygulamayı pano aracılığıyla 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. Kaynağa açıkça veya Contributor rol atayabilir Owner ya da özel bir rol tanımı oluşturup bunu hesabınıza atamak için adımları izleyebilirsiniz.

  1. Özel rol tanımını oluşturun.

    az role definition create --role-definition '{
        "Name": "<YOUR_ROLE_NAME>",
        "IsCustom": true,
        "Description": "Can access managed Java Component dashboards in managed environments",
        "Actions": [
            "Microsoft.App/managedEnvironments/write"
        ],
        "AssignableScopes": ["/subscriptions/<SUBSCRIPTION_ID>"]
    }'
    

    Değerdeki köşeli ayraçlar arasındaki <> yer tutucuyu AssignableScopes abonelik kimliğiniz ile 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 -o tsv)
    
  3. Rolü hesabınıza atayın.

    Bu komutu çalıştırmadan önce köşeli ayraçlar arasındaki yer tutucuyu <> kullanıcı veya hizmet sorumlusu kimliğiniz ile değiştirin.

    az role assignment create \
      --assignee <USER_OR_SERVICE_PRINCIPAL_ID> \
      --role "<ROLE_NAME>" \
      --scope $ENVIRONMENT_ID
    

    Not

    <> USER_OR_SERVICE_PRINCIPAL_ID genellikle Azure Portal'a erişmek için kullandığınız kimlik olmalıdır. <> ROLE_NAME, 1. adımda atadığınız addır.

  4. Spring için Eureka Server panosunun URL'sini alın.

    az containerapp env java-component eureka-server-for-spring show \
      --environment $ENVIRONMENT \
      --resource-group $RESOURCE_GROUP \
      --name $EUREKA_COMPONENT_NAME \
      --query properties.ingress.fqdn -o tsv
    

    Bu komut, Spring için Eureka Server panosuna erişmek için kullanabileceğiniz URL'yi döndürür. Aşağıdaki ekran görüntüsünde gösterildiği gibi pano aracılığıyla kapsayıcı uygulamanız da size sunulur.

Spring için Eureka Sunucusu panosunun ekran görüntüsü.

İsteğe bağlı: Spring için Eureka Server ve Spring Java bileşenleri için Yönetici'yi tümleştirme

Spring için Eureka Server ve Spring Java bileşenleri için Yönetici'yi tümleştirmek istiyorsanız bkz . Spring için yönetilen Yöneticiyi Spring için Eureka Server ile tümleştirme.

Kaynakları temizleme

Bu öğreticide oluşturulan kaynakların Azure faturanız üzerinde etkisi vardır. Bu hizmetleri uzun süreli kullanmayacaksanız, bu öğreticide oluşturulan her şeyi kaldırmak için aşağıdaki komutu çalıştırın.

az group delete \
  --resource-group $RESOURCE_GROUP

Sonraki adımlar