Öğretici: Azure Container Apps'te Spring için yönetilen bir Yapılandırma Sunucusuna bağlanma
Spring için Yapılandırma Sunucusu, yapılandırma verilerini birden çok uygulamanın kullanımına sunmak için merkezi bir konum sağlar. Bu makalede, Azure Container Apps'te barındırılan bir uygulamayı Spring örneği için Java Config Server'a bağlamayı öğreneceksiniz.
Spring Java için Yapılandırma Sunucusu bileşeni, yapılandırma ayarları için kaynak olarak bir GitHub deposu kullanır. Yapılandırma değerleri, bileşen ile kapsayıcı uygulamanız arasında bir bağlama aracılığıyla kapsayıcı uygulamanız için kullanılabilir hale getirilir. Yapılandırma sunucusunda değerler değiştikçe, bunlar uygulamanızı yeniden derlemenize veya yeniden dağıtmanıza gerek kalmadan uygulamanıza otomatik olarak akar.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Spring Java bileşeni için yapılandırma sunucusu oluşturma
- Spring için Yapılandırma Sunucusu'nu kapsayıcı uygulamanıza bağlama
- Yapılandırma sunucusunu uygulamanıza bağlamadan önce ve sonra yapılandırma değerlerini gözlemleyin
- Yapılandırma değerlerini simetrik anahtarla şifreleme ve şifresini çözme
Ö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 Config Server'da çalışırken aşağıdaki ayrıntılara dikkat edin:
Kalem | Açıklama |
---|---|
Scope | Spring için Yapılandırma Sunucusu, bağlı kapsayıcı uygulamasıyla aynı ortamda çalışır. |
Ölçeklendirme | Tek bir gerçek kaynağını korumak için Spring için Yapılandırma Sunucusu ölçeklendirilmiyor. Ölçeklendirme özellikleri minReplicas ve maxReplicas her ikisi de olarak 1 ayarlanır. |
Kaynaklar | Spring için Yapılandırma Sunucusu için kapsayıcı kaynak ayırması sabittir, CPU çekirdeklerinin sayısı 0,5 ve bellek boyutu 1Gi'dir. |
Fiyatlandırma | Spring faturalaması için Yapılandırma Sunucusu 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ı uygulaması, bağlama yoluyla Spring için bir Yapılandırma Sunucusuna bağlanır. Bağlama, 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. |
Ayarlama
Spring için Yapılandırma Sunucusu ile çalışmaya başlamadan önce gerekli kaynakları oluşturmanız gerekir.
Kaynak grubunuzu ve Container Apps ortamınızı oluşturmak için aşağıdaki komutları yürütebilirsiniz.
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 JAVA_COMPONENT_NAME=configserver export APP_NAME=my-config-client export IMAGE="mcr.microsoft.com/javacomponents/samples/sample-service-config-client:latest" export URI="https://github.com/Azure-Samples/azure-spring-cloud-config-java-aca.git"
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ı. JAVA_COMPONENT_NAME
Kapsayıcı uygulamanız için oluşturulan Java bileşeninin adı. Bu durumda Spring Java bileşeni için bir Yapılandırma Sunucusu oluşturursunuz. IMAGE
Kapsayıcı uygulamanızda kullanılan kapsayıcı görüntüsü. URI
URI'yi git depo url'nizle değiştirebilirsiniz; özelse ve spring.cloud.config.server.git.password
gibispring.cloud.config.server.git.username
ilgili kimlik doğrulama yapılandırmalarını ekleyebilirsiniz.Azure CLI ile Azure'da oturum açın.
az login
Kaynak grubu oluşturun.
az group create --name $RESOURCE_GROUP --location $LOCATION
Kapsayıcı uygulamaları ortamınızı oluşturun.
az containerapp env create \ --name $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --location $LOCATION
Bu ortam hem Spring java için Yapılandırma Sunucusu bileşenini hem de kapsayıcı uygulamanızı barındırmak için kullanılır.
Spring Java için Yapılandırma Sunucusu bileşenini oluşturma
Artık bir Container Apps ortamınız olduğuna göre, kapsayıcı uygulamanızı oluşturabilir ve spring java bileşeni için bir Yapılandırma Sunucusu'na bağlayabilirsiniz. Kapsayıcı uygulamanızı bağladığınızda yapılandırma değerleri Yapılandırma Sunucusu bileşeninden uygulamanıza otomatik olarak eşitlenir.
Spring Java için Yapılandırma Sunucusu bileşenini oluşturun.
az containerapp env java-component config-server-for-spring create \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 1 \ --max-replicas 1 \ --configuration spring.cloud.config.server.git.uri=$URI
Spring Java için Yapılandırma Sunucusu bileşenini güncelleştirin.
az containerapp env java-component config-server-for-spring update \ --environment $ENVIRONMENT \ --resource-group $RESOURCE_GROUP \ --name $JAVA_COMPONENT_NAME \ --min-replicas 2 \ --max-replicas 2 \ --configuration spring.cloud.config.server.git.uri=$URI spring.cloud.config.server.git.refresh-rate=60
Burada bileşene, özelliği aracılığıyla
uri
yapılandırma bilgilerinizi barındıran depoyu nerede bulacağını anlatacaksınız. özelliği,refresh-rate
Container Apps'e git deponuzdaki değişiklikleri ne sıklıkta denetleyeceklerini bildirir.
Kapsayıcı uygulamanızı Spring Java için Yapılandırma Sunucusu bileşenine bağlama
Yapılandırma verilerini kullanan kapsayıcı uygulamasını oluşturun.
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 \ --query properties.configuration.ingress.fqdn
Bu komut, yapılandırma verilerini kullanan kapsayıcı uygulamanızın URL'sini döndürür. Url'yi bir metin düzenleyicisine kopyalayarak gelecek adımda kullanabilirsiniz.
Uygulamanızı tarayıcıda ziyaret ederseniz,
connectTimeout
döndürülen değer varsayılan değeridir0
.Spring için Yapılandırma Sunucusuna bağlanın.
Artık kapsayıcı uygulaması ve Yapılandırma Sunucusu oluşturulduğuna göre, bunları kapsayıcı uygulamanıza komutuyla
update
bağlarsınız.az containerapp update \ --name $APP_NAME \ --resource-group $RESOURCE_GROUP \ --bind $JAVA_COMPONENT_NAME
parametresi,
--bind $JAVA_COMPONENT_NAME
kapsayıcı uygulamanızla yapılandırma bileşeni arasındaki bağlantıyı oluşturur.
Kapsayıcı uygulaması ve Yapılandırma Sunucusu bileşeni birbirine bağlandıktan sonra yapılandırma değişiklikleri otomatik olarak kapsayıcı uygulamasıyla eşitlenir.
Uygulamanın URL'sini yeniden ziyaret ettiğinizde değeri connectTimeout
şimdi 10000
olur. Bu değer, başlangıçta yapılandırma bileşeninin $URI
kaynağı olarak ayarlanan değişkende ayarlanan git deposundan gelir. Özel olarak, bu değer deponun connectionTimeout
application.yml dosyasındaki özelliğinden çekilir.
Bağlama isteği, uygulamaya ortam değişkenleri olarak yapılandırma ayarı ekler. Bu değerler artık yapılandırma sunucusundan yapılandırma ayarları getirilirken kullanılacak uygulama kodu tarafından kullanılabilir.
Bu durumda, aşağıdaki ortam değişkenleri uygulama tarafından kullanılabilir:
SPRING_CLOUD_CONFIG_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CLOUD_CONFIG_COMPONENT_URI=http://[JAVA_COMPONENT_INTERNAL_FQDN]:80
SPRING_CONFIG_IMPORT=optional:configserver:$SPRING_CLOUD_CONFIG_URI
Kendi SPRING_CONFIG_IMPORT
öğesini özelleştirmek istiyorsanız ortam değişkenine SPRING_CLOUD_CONFIG_COMPONENT_URI
başvurabilirsiniz. Örneğin, gibi Java -Dspring.config.import=optional:configserver:${SPRING_CLOUD_CONFIG_COMPONENT_URI}?fail-fast=true
komut satırı bağımsız değişkenleriyle geçersiz kılabilirsiniz.
Bağlamayı uygulamanızdan da kaldırabilirsiniz.
(İsteğe bağlı) Spring Java için Yapılandırma Sunucusu 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
Uygulamanın URL'sini yeniden ziyaret ettiğinizde değeri connectTimeout
olarak değişir 0
.
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