Microservice Config Yönetimi (Cloud Config Server)

Geliştirdiğimiz uygulamaların dağıtımı, geliştirme ortamları çeşitli config’lere ihtiyaç duymaktadır. Ayrıca bu uygulamaların çalışma anında config’lerinin değiştirilmesi, güncellenmesi ihtiyaçları doğmaktadır. Gelişen ve değişen uygulama yapılarında config’lerin tek bir ortamdan yönetilmesi kaçınılmaz olmuştur.

Özellikle microservice yapılarında birden fazla servisin farklı ortamlarda çalıştığını düşünecek olursak, config server’ın ne kadar önemli olduğu ortaya çıkacaktır. Konuyu pekiştirmek amacıyla örnek bir çalışmaya göz atalım. Java spring boot ile gelen Spring Cloud Config ile bir örnek yapalım.

Daha önceki örneklerimizde de kullandığımız https://start.spring.io/ adresine giderek yeni bir proje oluşturalım.

Maven projesini seçerek Dependencies kısmından Config Server’ı ekleyelim. İndirdiğimiz projeyi Eclipse veya kullandığımız farklı bir ide ile açarak src/main/resources dizinine application.yml dosyası oluşturalım.

server:
port: 8980
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://github.com/akaramanapp/CloudConfifServer
profiles:
active: native
management:
security:
enabled: false

Uygulama ana dizinine test için config-client.yaml dosyası ekleyerek aşağıdaki config bilgilerini ekleyelim.

baseDataUri: "http://localhost"
fetchInterval: "00:05:00"

Uygulamamızın main methoduna EnableConfigServer attribute ekleyelim.

Evet uygulamamızı çalıştırarak test edelim.

http://localhost:8980/config-client/default/master

Evet config server’ımız başarılı şekilde çalıştı.

Config dosyalarını tanımlarken aşağıdaki kurallara dikkat etmemiz gerekmektedir.

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties

Not: Repo (git) üzerinde bu dosyaların biri bulunamadığı durumda. Default olarak config-client.yaml dosyasından okumaktadır.

Örnek olarak development ortamına bir config tanımlayacaksanız aşağıdaki config bilgisini application.yml altına tanımlamanız gerekmektedir.

profiles:
active: development

Böylece repo üzerinde ise config-client-development.yml dosyası arayacaktır.

Config-server uygulamamızı tamamladık şimdi bu config’leri kullanacak örnek bir client uygulaması yazalım. Yine https://start.spring.io/ sitesinden boş bir spring projesi oluşturalım ve dependencies’lere config client ekleyelim.

Oluşturduğumuz config-client projesinde src/main/resource altına bootstarp.properties içine aşağıdaki config’leri ekleylim.

spring.application.name=config-client spring.cloud.config.uri=http://localhost:8980

Application name ve bağlanacağımız config-server’ın adresini giriyoruz. Uygulama üzerine yeni bir endpoint (UrlResource.java) oluşturarak ilgili config’e erişelim.

Uygulamayı 8981 portu üzerinden çalıştırarak http://localhost:8981/rest/url adresinden test ettiğimizde git config (config-client.yaml) üzerinde tanımladığımız http://localhost url’in geldiğini göreceksiniz.

Repo:

Faydalı olması dileğiyle.

--

--