Bu konuda, yapılandırma yönetimi için Spring Cloud Alibaba Nacos Config kullanan örnek bir Spring Cloud uygulamasının nasıl oluşturulacağı, bu uygulamanın SAE üzerinde nasıl dağıtılacağı ve yapılandırmaların SAE konsolu aracılığıyla nasıl yönetileceği adım adım açıklanmaktadır.
Yapılandırma değerlerini kod içinde tutmak dağıtımları kırılgan hale getirir; tek bir ayarın değiştirilmesi bile uygulamanın yeniden derlenip dağıtılmasını gerektirir. Yapılandırmayı Nacos ile dışa aktararak, koda dokunmadan veya hizmeti yeniden başlatmadan çalışma zamanında değerleri güncelleyebilirsiniz. SAE, Uygulama Yapılandırma Yönetimi (ACM) üzerinden açık kaynaklı Nacos ile entegre çalışır. Bir uygulamayı SAE üzerinde dağıttığınızda, SAE konsolu yapılandırma değişikliklerini doğrudan çalışan örneklere iletir.
Bu konuda nacos-config-example demo uygulaması kullanılmaktadır. Adımları takip etmek için nacos-config-example.zip dosyasını indirin.
Ön koşullar
Başlamadan önce aşağıdakileri yaptığınızdan emin olun:
Maven indirilmiş ve sistem PATH değişkeninize eklenmiş olmalıdır.
Yerel makinenizde bağımsız modda çalışan bir Nacos Server bulunmalıdır (bkz. Nacos Server'ı başlatın).
Yerel Nacos Server konsolunda bir yapılandırma oluşturulmuş olmalıdır (bkz. Yerel Nacos Server'da yapılandırma oluşturun).
Nacos Server'ı başlatın
Nacos Server paketini indirin ve arşivden çıkarın.
-
nacos/bindizinine gidin ve işletim sisteminize uygun başlatma komutunu çalıştırın:Linux, Unix veya macOS:
sudo sh startup.sh -m standaloneWindows:
startup.cmd -m standalone
-m standalonebayrağı, Nacos'u küme modu (varsayılan) yerine bağımsız modda başlatır. Windows'tastartup.cmddosyasına çift tıklamak onu küme modunda başlatır ve başarısız olur. Bunu düzeltmek için dosyayı açıpMODE="standalone"olarak ayarlayın. Ayrıntılar için Nacos Hızlı Başlangıç Kılavuzu konusuna bakın.
Yerel Nacos Server'da yapılandırma oluşturun
Nacos Server konsoluna giriş yapın. Varsayılan kullanıcı adı ve parola
nacosdeğeridir.Sol gezinme bölmesinde Configurations seçeneğine tıklayın. Configurations sayfasında, sağ üst köşedeki
simgesine tıklayın.-
Create configuration sayfasında aşağıdaki parametreleri ayarlayın ve Publish seçeneğine tıklayın:
Data ID:
nacos-config-example.propertiesGroup:
DEFAULT_GROUPConfiguration Content:
test.name=nacos-config-test
Adım 1: Uygulama yapılandırmalarını yönetmek için Nacos Config'i kullanın
Sürüm uyumluluğu
Bu örnekte Spring Boot 2.1.4.RELEASE ve Spring Cloud Greenwich.SR1 kullanılmaktadır. Spring Cloud sürümünüzle eşleşen Spring Cloud Alibaba sürümünü seçin:
| Spring Cloud sürümü | Spring Cloud Alibaba sürümü |
|---|---|
| Greenwich | 2.1.1.RELEASE |
| Finchley | 2.0.1.RELEASE |
| Edgware | 1.5.1.RELEASE (kullanımdan kaldırılmıştır; kullanmayın) |
Uygulamayı oluşturun
nacos-config-exampleadında bir Maven projesi oluşturun.-
Aşağıdaki bağımlılıkları
pom.xmldosyasına ekleyin. Bu örnekte Spring Cloud Greenwich kullanıldığından,spring-cloud-starter-alibaba-nacos-configsürümü2.1.1.RELEASEolarak ayarlanmıştır.<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.1.1.RELEASE</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> src/main/javadizini altındacom.aliware.edaspaketini oluşturun.-
com.aliware.edaspaketi içindeNacosConfigExampleApplicationbaşlangıç sınıfını oluşturun:import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class NacosConfigExampleApplication { public static void main(String[] args) { SpringApplication.run(NacosConfigExampleApplication.class, args); } } -
com.aliware.edaspaketi içindeEchoControllerdenetleyicisini oluşturun:@Value("${test.name}")anotasyonu, Nacos Config'den gelentest.nameanahtarının değerini enjekte eder.@RefreshScopeanotasyonu, Nacos bir yapılandırma değişikliği gönderdiğinde bean'in yeniden oluşturulmasını sağlar. Böylece enjekte edilen değer, yeniden başlatmaya gerek kalmadan otomatik olarak güncellenir. Bu anotasyon olmadan uygulama yapılandırmayı yalnızca başlangıçta okur ve sonraki değişiklikleri yok sayar.
import org.springframework.beans.factory.annotation.Value; import org.springframework.cloud.context.config.annotation.RefreshScope; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RefreshScope public class EchoController { @Value("${test.name}") private String userName; @RequestMapping(value = "/") public String echo() { return userName; } } -
src/main/resourcesdizini altındabootstrap.propertiesdosyasını oluşturun ve uygulamayı yerel Nacos Server'a bağlamak için aşağıdaki yapılandırmayı ekleyin.127.0.0.1:8848varsayılan Nacos Server adresidir;18081ise uygulamanın hizmet portudur. Nacos Server'ınız başka bir yerde çalışıyorsa adresi ve portu buna göre değiştirin.spring.application.name=nacos-config-example server.port=18081 spring.cloud.nacos.config.server-addr=127.0.0.1:8848Kullanılabilir tüm yapılandırma seçenekleri için bkz. Yapılandırma referansı.
Uygulamayı yerel olarak başlatmak için
NacosConfigExampleApplicationiçindekimainyöntemini çalıştırın.
Adım 2: Uygulamayı SAE üzerinde dağıtın
Yerel testleri tamamladıktan sonra uygulamayı SAE üzerinde dağıtın. Dağıtım talimatları için bkz. Uygulamaları dağıtın.
SAE'nin Nacos ayarlarını geçersiz kılma yöntemi
Uygulama SAE üzerinde çalışırken, SAE aşağıdaki Nacos bağlantı ayrıntılarını bootstrap.properties dosyanızdaki değerlerden daha yüksek öncelikle otomatik olarak enjekte eder: Nacos Server IP adresi ve hizmet portu, ad alanı, erişim anahtarı, gizli anahtar ve bağlam yolu. bootstrap.properties dosyasında değişiklik yapmanıza gerek yoktur; orijinal değerleri koruyabilir veya kaldırabilirsiniz.
Çalışma zamanı ortamı
SAE konsolu üzerinden Deployment with JAR Packages kullanarak ilk kez dağıtım yaparken, Application Runtime Environment seçeneğini Standard Java Application Runtime Environment olarak ayarlayın. Java Environment için Open JDK 8 seçeneğini ve File Upload Method için Upload JAR Package seçeneğini belirleyin.
SAE'de eşleşen yapılandırmayı oluşturun
Dağıtımdan önce, uygulamanın dağıtım sonrasında bu yapılandırmayı okuyabilmesi için aynı yapılandırmayı SAE'nin yapılandırma yönetiminde yeniden oluşturun.
SAE konsoluna giriş yapın. Sol gezinme bölmesinde Namespace seçeneğine tıklayın, ardından üst menü çubuğundan bir bölge seçin.
Namespace sayfasında, hedef ad alanının adına tıklayın.
Sol gezinme bölmesinde Distributed Configuration Management > Configurations yolunu izleyin. Configurations sayfasında Create Configuration seçeneğine tıklayın.
-
Create configuration panelinde parametreleri ayarlayın ve Create seçeneğine tıklayın.
Parametre Açıklama Data ID Yapılandırma tanımlayıcısı. Bu örnek için nacos-config-example.propertieskullanın. Benzersizlik sağlamak amacıylapackage.classadlandırma kuralını izleyin; örneğin,com.taobao.tc.refund.log.level.Group Yapılandırma grubu. Bu örnek için DEFAULT_GROUPkullanın. Benzersizlik sağlamak amacıylaproduct name:module namebiçimini kullanın; örneğin,ACM:Test. Gruplar kimlik doğrulamayı destekler.Data Encryption Hassas değerler içeren yapılandırmalar için şifrelemeyi etkinleştirir. Key Management Service (KMS) aktivasyonu ve ACM izinlerinin verilmesini gerektirir. Şifrelenmiş yapılandırmaların Data ID'si `cipher-` önekiyle başlar. Bkz. Şifrelenmiş yapılandırma oluşturma ve kullanma. Configuration Format Yapılandırma içeriğinin biçimi. Bu örnek için TEXT seçeneğini belirleyin. Configuration Content Yapılandırma içeriği. Bu örnek için test.name=nacos-config-testgirin.Configuration Description Yapılandırma için isteğe bağlı bir açıklama. More Configurations Application (More Configuration altında) Yapılandırmanın ait olduğu uygulama adı. Label (More Configuration altında) Yapılandırmaları düzenlemek için kullanılan etiketler. Her yapılandırma için en fazla beş etiket belirtilebilir.
Adım 3: Sonucu doğrulayın
Uygulama SAE üzerinde başladıktan sonra, yapılandırmayı SAE'den doğru şekilde okuduğunu doğrulayın.
-
Aşağıdaki komutu çalıştırın.
<application instance IP>ve<service port>değerlerini uygulamanızın gerçek değerleriyle değiştirin.curl http://<application instance IP>:<service port>Örnek:
curl http://192.168.0.34:8080Komut, uygulama yapılandırmayı başarıyla yüklediyse
nacos-config-testdeğerini döndürür. > Tip: Komut beklenen değeri döndürmezse, SAE konsolundaki uygulama günlüklerini kontrol ederek Nacos bağlantısının başarılı olduğunu teyit edin ve SAE'deki Data ID ile Group değerlerininbootstrap.propertiesdosyasındaki değerlerle eşleştiğini doğrulayın. -
SAE konsolunda, yapılandırma içeriğini
nacos-config-testdeğerindennacos-config-test2değerine güncelleyin, ardındancurlkomutunu tekrar çalıştırın.curl http://192.168.0.34:8080Komut artık
nacos-config-test2değerini döndürür. Bu durum, SAE'nin güncellenen yapılandırmayı çalışan uygulamaya yeniden başlatma gerektirmeden ilettiğini gösterir.EchoControllerüzerindeki@RefreshScopeanotasyonu otomatik yenilemeyi tetikler.
Yapılandırma referansı
Gerekirse aşağıdaki öğelerden herhangi birini bootstrap.properties dosyasına ekleyin.
| Yapılandırma öğesi | Anahtar | Varsayılan | Zorunlu | Açıklama |
|---|---|---|---|---|
| Sunucu adresi | spring.cloud.nacos.config.server-addr |
Yok | Evet | Nacos Server adresi. |
| Data ID öneki | spring.cloud.nacos.config.prefix |
${spring.application.name} |
Hayır | Data ID öneki. |
| Grup | spring.cloud.nacos.config.group |
DEFAULT_GROUP |
Hayır | Yapılandırma grubu. |
| Data ID soneki ve yapılandırma biçimi | spring.cloud.nacos.config.file-extension |
properties |
Hayır | Data ID soneki ve yapılandırma dosyası biçimi. Desteklenen değerler: properties, yaml, yml. |
| İçerik kodlaması | spring.cloud.nacos.config.encode |
UTF-8 |
Hayır | Yapılandırma içeriğinin kodlaması. |
| Alma zaman aşımı | spring.cloud.nacos.config.timeout |
3000 |
Hayır | Yapılandırmanın alınması için milisaniye cinsinden zaman aşımı süresi. |
| Ad alanı | spring.cloud.nacos.config.namespace |
Yok | Hayır | Yapılandırmaları ortamlar arasında (örneğin, geliştirme, test ve üretim) izole eder. |
| Göreceli yol | spring.cloud.nacos.config.context-path |
Yok | Hayır | Sunucu API'sinin göreceli yolu. |
| Uç nokta | spring.cloud.nacos.config.endpoint |
UTF-8 |
Hayır | Bölgedeki bir hizmetin uç noktası. Sunucu adresini dinamik olarak çözmek için kullanılır. |
| Dinleyiciyi ve otomatik yenilemeyi etkinleştir | spring.cloud.nacos.config.refresh.enabled |
true |
Hayır | Yapılandırma dinlemeyi ve otomatik yenilemeyi etkinleştirir. Varsayılan değerde bırakın. |
Tüm yapılandırma öğelerinin tam listesi için bkz. Spring Cloud Alibaba Nacos Config belgeleri.
Sonraki adımlar
Uygulamaları dağıtın — Spring Cloud uygulamanızı JAR paketleri veya diğer yöntemler kullanarak SAE üzerinde dağıtın.
Şifrelenmiş yapılandırma oluşturma ve kullanma — Hassas yapılandırma değerlerini KMS destekli şifreleme ile koruyun.