首頁>技術>

本文開放原始碼。之前的文章說了如何在k8s構建apollo及用Ingress配置了portal頁面,需要了解的朋友可以開啟文章中心或者跳到下面觀看:

https://www.toutiao.com/i6915360860336783876/

本文將演示如何整合配置中心apollo config的ingress及建立一個springboot專案呼叫k8s裡面的apollo,獲取配置中心的值,切換環境,並在apollo的portal頁面進行增加、修改、回滾等操作。

apollo操作頁面

一、建立客戶端要連線的config服務的Ingress檔案

因我們的apollo叢集是部署在k8s裡面的,所以我們訪問裡面的服務需要用Ingress來對映。ingress是一個API物件,ingress透過http或https暴露叢集內部service,依靠ingress-controller給service提供外部URL、負載均衡、SSL/TLS能力以及基於host的反向代理。

建立了3個環境,3個環境對應的ingress檔案為:

apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: zizai-apollo-client-dev  namespace: zizaispec:  rules:    - host: zizai-apollo-client-dev.test.thinkinpower.net      http:        paths:          - path: /            backend:              serviceName: service-apollo-meta-server-dev              servicePort: 8080---apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: zizai-apollo-client-test  namespace: zizaispec:  rules:    - host: zizai-apollo-client-test.test.thinkinpower.net      http:        paths:          - path: /            backend:              serviceName: service-apollo-meta-server-test-alpha              servicePort: 8080---apiVersion: extensions/v1beta1kind: Ingressmetadata:  name: zizai-apollo-client-prod  namespace: zizaispec:  rules:    - host: zizai-apollo-client-prod.test.thinkinpower.net      http:        paths:          - path: /            backend:              serviceName: service-apollo-meta-server-prod              servicePort: 8080

依次建立就可以。建立成功如下:

config建立ingress成功頁面

//zizai-apollo-client-dev.test.thinkinpower.net.confserver {  listen     80;  server_name  zizai-apollo-client-dev.test.thinkinpower.net;  access_log  /data/logs/nginx/zizai-apollo-client-dev.test.thinkinpower.net.access.log  main;  error_log  /data/logs/nginx/zizai-apollo-client-dev.test.thinkinpower.net.error.log;  root   /data/webapps/zizai-apollo-client-dev.test.thinkinpower.net/test/static;  index  index.html index.htm;  client_max_body_size 50m;  location   / {    proxy_set_header Host $http_host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_pass http://kubernetes;  # 指向叢集的  }}//zizai-apollo-client-test.test.thinkinpower.net.confserver {  listen     80;  server_name  zizai-apollo-client-test.test.thinkinpower.net;  access_log  /data/logs/nginx/zizai-apollo-client-test.test.thinkinpower.net.access.log  main;  error_log  /data/logs/nginx/zizai-apollo-client-test.test.thinkinpower.net.error.log;  root   /data/webapps/zizai-apollo-client-test.test.thinkinpower.net/test/static;  index  index.html index.htm;  client_max_body_size 50m;  location   / {    proxy_set_header Host $http_host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_pass http://kubernetes;  # 指向叢集的  }}//zizai-apollo-client-prod.test.thinkinpower.net.confserver {  listen     80;  server_name  zizai-apollo-client-prod.test.thinkinpower.net;  access_log  /data/logs/nginx/zizai-apollo-client-prod.test.thinkinpower.net.access.log  main;  error_log  /data/logs/nginx/zizai-apollo-client-prod.test.thinkinpower.net.error.log;  root   /data/webapps/zizai-apollo-client-prod.test.thinkinpower.net/test/static;  index  index.html index.htm;  client_max_body_size 50m;  location   / {    proxy_set_header Host $http_host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_pass http://kubernetes;  # 指向叢集的  }}

這樣就可以在外面訪問了。可以透過域名直接訪問了看註冊中心Eureka,例如:我的開發環境為如下圖所示:

開啟

zizai-apollo-client-dev.test.thinkinpower.net
三、建立springboot專案

下面建立一個springboot專案進行訪問apollo的鍵值。

1、用idea建立一個springboot專案

(1)新建專案

(2)如下圖選擇專案

再下一步,選擇jdk8

再下一步,就可以完成專案的建立

(3)引入maven包

可以進入https://mvnrepository.com/,進行搜尋。本文軟體包的連結為:

https://mvnrepository.com/artifact/com.ctrip.framework.apollo/apollo-client/1.7.0

本文用的是最新的版本。

如下放入maven的檔案即可以。

 <dependency>            <groupId>com.ctrip.framework.apollo</groupId>            <artifactId>apollo-client</artifactId>            <version>1.7.0</version>  </dependency>

具體的pom.xml為:

import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class DemoController {    @Value("${timeout:100}")    private int timeout;    @RequestMapping("/getValue")    public String getValue(){        return "get value is: " + timeout;    }}

(5)修改application.properties檔案

spring.application.name=demoserver.port=8989#AppId是應用的身份資訊,是配置中心獲取配置的一個重要資訊。app.id=zizai-community-apiapollo.meta=zizai-apollo-client-dev.test.thinkinpower.net#apollo.meta=zizai-apollo-client-test.test.thinkinpower.net#apollo.meta=zizai-apollo-client-prod.test.thinkinpower.net#在應用啟動階段,向Spring容器注入被託管的application.properties檔案的配置資訊。apollo.bootstrap.enabled=true#將Apollo配置載入提到初始化日誌系統之前。apollo.bootstrap.eagerLoad.enabled=true#調整 controller 包的 log 級別,為了後面演示在配置中心動態配置日誌級別。logging.level.com.gf.controller=debug# 指定apollo配置緩衝路徑,預設為 linux: /opt/data/{appId}/config-cache Windows: C:\opt\data\{appId}\config-cache# apollo.cacheDir=/opt/data/some-cache-dir#設定叢集#apollo.cluster=SomeCluster#設定apollo裡的namespace,#apollo.bootstrap.namespaces: application

具體的選項看裡面的註釋。

注意:app.id=zizai-community-api裡的值和portal裡面的應用id必須一致。apollo.meta=zizai-apollo-client-dev.test.thinkinpower.net的值為config裡的訪問連結。

如:

和下面的是一致的

(6)環境配置

因為本文的apollo是部署在k8s的,在用Idea測試的時候必須要配置下面2個變數,不然會失敗,獲取不到值。

env: 應用使用 Apollo 哪個環境,設定為 DEV 為開發環境,設定為 PROD 是生產環境。apollo.configService: 配置中心的地址,在本地Idea跑程式碼時,指定 meta 地址無效。因為 Apollo 是部署在 k8s 中,需要在啟動時,將configService 和 meta 的值保持一致。

所以在Idea啟動的時候,如果是開發環境要加上:

-Dapollo.configService=http://zizai-apollo-client-dev.test.thinkinpower.net -Denv=DEV

如果是 java 命令啟動

$ java -Dapollo.configService=http://zizai-apollo-client-dev.test.thinkinpower.net -Denv=DEV -jar apollo-demo.jar

Idea的配置如圖:

這樣就可以拿到值了。

四、測試及演示

1、登入apollo的portal設定值

timeout設定為400。

2、啟動springboot專案,訪問值

(1)啟動專案後,會看到拉配置中心的值

訪問下面url獲取值

http://localhost:8989/getValue

返回:400,和portal裡配置的一致

(2)修改timeout的值為4000

可以看到專案日誌,會獲取到值

調介面,獲取值為4000,和portal裡配置的一致

切換環境的操作也是一樣,不再詳細說明。

五、原始碼

連結:https://pan.baidu.com/s/1zSDpslkwdLWwNXi4iRGHOg

提取碼:ouuy

15
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 使用 SkyWalking 和 Envoy 訪問日誌服務