K8S部署apollo配置中心
說明:最近在用K8S部署微服務,而微服務的配置文件眾多,需要一個配置中心來處理配置文件。於是采用apollo來作為配置中心。本實例介紹了如何采用K8S部署高可用的apollo集群。
一、前提條件
1、已經搭建了一個K8S集群
2、一個可用的mysql數據庫
apollo是需要用到mysql數據庫的,所以必須要有一個可用的mysql數據庫。
二、apollo鏡像構建
采用K8S部署apollo時,需要用到多個鏡像。這些鏡像,需要自己構建。
1.獲取鏡像構建腳本
鑒於在K8S中使用的apollo鏡像需要自己構建(注意是多個鏡像),apollo給出了構建這些鏡像所需要的腳本。可從 https://github.com/ctripcorp/apollo 或者 國內的gitee https://gitee.com/nobodyiam/apollo 下載腳本。國內下載會比較快。
git clone https://github.com/ctripcorp/apollo.git (或者 git clone https://gitee.com/nobodyiam/apollo.git)
獲取文件后,進入到 /scripts/apollo-on-kubernetes。這里面,每一個文件夾,對應着相應的腳本。有打apollo鏡像的腳本,有mysql數據庫的腳本,也有k8s下運行apollo的腳本。
2.獲取apollo的壓縮包,並解壓。
在 https://github.com/ctripcorp/apollo/releases 可以獲取apollo的壓縮包,現在的最新版本是v1.8.2
2.1 文件下載
假如下載的是最新的版本:
apollo-portal-1.8.2-github.zip
apollo-adminservice-1.8.2-github.zip
apollo-configservice-1.8.2-github.zip
2.2 文件解壓
解壓 apollo-portal-1.8.2-github.zip
獲取 apollo-portal-1.8.2.jar, 重命名為 apollo-portal.jar, 放到 scripts/apollo-on-kubernetes/apollo-portal-server
解壓 apollo-adminservice-1.8.2-github.zip
獲取 apollo-adminservice-1.8.2.jar, 重命名為 apollo-adminservice.jar, 放到 scripts/apollo-on-kubernetes/apollo-admin-server
解壓 apollo-configservice-1.8.2-github.zip
獲取 apollo-configservice-1.8.2.jar, 重命名為 apollo-configservice.jar, 放到 scripts/apollo-on-kubernetes/apollo-config-se
2.3 打docker鏡像
當文件解壓,並放入對應的腳本文件夾后,就可以構建鏡像了(腳本文件夾中有對應的dockerfile)。
構建 alpine-bash 鏡像
進入 scripts/apollo-on-kubernetes/alpine-bash-3.8-image,執行:
docker build -t alpine-bash:3.8 .
構建 apollo-admin-server 鏡像
進入 scripts/apollo-on-kubernetes/apollo-admin-server,執行:
docker build -t apollo-admin-server:v1.8.2 .
構建 apollo-config-server 鏡像
進入 scripts/apollo-on-kubernetes/apollo-config-server,執行:
docker build -t apollo-config-server:v1.8.2 .
構建 apollo-portal-server 鏡像
進入 scripts/apollo-on-kubernetes/apollo-portal-server,執行:
docker build -t apollo-portal-server:v1.8.2 .
三、創建mysql數據庫
apollo需要用到mysql,apollo服務端共需要兩個數據庫:ApolloConfigDB 和 ApolloPortalDB 。在目錄 scripts/apollo-on-kubernetes/db 中,給出了 dev、test-alpha、test-beta、prod 四個環境的ApolloConfigDB腳本,而ApolloPortalDB 是通用的。我這里只部署prod環境的。當然,可以同時部署四個環境的數據庫。
腳本執行如下所示:
四、執行yaml文件,K8S部署apollo.
進入 scripts/apollo-on-kubernetes/kubernetes,里面有各個環境的yaml文件。由於我只部署prod環境,對apollo-env-prod 中的yaml文件進行相應的更改。同時更改 service-apollo-portal-server.yaml 的配置。然后根據 kubectl-apply.sh 文件中的順序執行就可以了。
1.部署后apollo的Eureka注冊中心。
apollo自帶了一個Eureka注冊中心。
2.部署環境完成portal頁面圖
輸入用戶名密碼:apollo/admin,就可以看到portal頁面圖。
五、文件參考
1.https://developer.51cto.com/art/202101/640183.htm
2.https://github.com/ctripcorp/apollo/tree/master/scripts/apollo-on-kubernetes