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