1 |
在一个分布式环境中,同类型的服务往往会部署很多实例。这些实例使用了一些配置,为了更好地维护这些配置就产生了配置管理服务。通过这个服务可以轻松地管理成千上百个服务实例的配置问题。配置中心的特点: |

特性:
- 配置的增删改查;
- 不同环境配置隔离(开发、测试、预发布、灰度/线上);
- 高性能、高可用性;
- 请求量多、高并发;
- 读多写少
本文使用场景为(dev/fat/uat)、生产环境(prod)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#官方源码 git clone https://github.com/ctripcorp/apollo.git #国外 git clone https://github.com/apolloconfig/apollo.git #国内 git clone https://github.com/everylasting/shooter.git #自用(本文) #官方jar包获取 https://github.com/ctripcorp/apollo/releases #官方提供的Dockerfile(打包用) apollo-adminservice/src/main/docker/Dockerfile apollo-configservice/src/main/docker/Dockerfile apollo-portal/src/main/docker/Dockerfile #官方sql脚本 https://github.com/apolloconfig/apollo/tree/master/scripts/sql |
1.创建数据库(本人使用的是本地化部署mysql)
1 2 3 4 5 6 7 8 9 |
需要创建的数据库如下: dev环境: apolloconfigdb_dev_k fat环境: apolloconfigdb_fat_k uat环境: apolloconfigdb_uat_k pro环境: apolloconfigdb_pro_k 统一导入官方提供的sql脚本 apolloconfigdb.sql ###用户数据库(所有环境用一份即可) apolloportaldb_test 导入官方sql脚本 apolloportaldb.sql |
2.构建最新镜像
2.1获取 apollo 压缩包
1 2 3 4 5 |
从官方 https://github.com/ctripcorp/apollo/releases 下载预先打好的 java 包 例如你下载的是: apollo-portal-1.9.0-github.zip apollo-adminservice-1.9.0-github.zip apollo-configservice-1.9.0-github.zip |
2.2解压压缩包, 获取程序 jar 包
1 2 3 4 5 6 7 8 |
解压 apollo-portal-1.9.0-github.zip 获取 apollo-portal-1.9.0.jar, 重命名为 apollo-portal.jar, 放到apollo/scripts/apollo-on-kubernetes/apollo-portal-server #项目路径 解压 apollo-adminservice-1.9.0-github.zip 获取 apollo-adminservice-1.9.0.jar, 重命名为 apollo-adminservice.jar, 放到apollo/scripts/apollo-on-kubernetes/apollo-admin-server 解压 apollo-configservice-1.9.0-github.zip 获取 apollo-configservice-1.9.0.jar, 重命名为 apollo-configservice.jar, 放到项目的apollo/scripts/apollo-on-kubernetes/apollo-config-server |
2.3 构建镜像(build image)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
需要分别为 alpine-bash-3.8-image(用大佬提供的即可) pollo-config-server(构建) apollo-admin-server(构建) apollo-portal-server(构建) docker build -t apollo-portal-server:v1.9.0 . docker build -t apollo-admin-server:v1.9.0 . docker build -t apollo-config-server:v1.9.0 . #本人镜像: registry.cn-shanghai.aliyuncs.com/shooer/alpine-bash:v3.8 registry.cn-shanghai.aliyuncs.com/shooer/apollo-portal-server:v1.9.0 registry.cn-shanghai.aliyuncs.com/shooer/apollo-admin-server:v1.9.0 registry.cn-shanghai.aliyuncs.com/shooer/apollo-config-server:v1.9.0 |
打包时候可能会遇到如下错误:

解决办法:
1 2 3 |
vim /etc/docker/daemon.json #添加 "dns": ["8.8.8.8","114.114.114.114"] |
3.修改yaml(这里yaml是按照这位大佬的配置做的)
1 2 3 4 5 |
https://github.com/everylasting/shooter/tree/master/apollo/scripts/apollo-on-kubernetes/kubernetes 1.修改yaml镜像为你自己的镜像地址 2.添加imagePullSecrets(拉取镜像仓库认证) 3.执行yaml |
3.1开始修改yaml(将yaml里的镜像全部替换为我们上面打包的镜像)
1 2 3 |
本文环境 yaml 下载地址: 链接:https://pan.baidu.com/s/19EzT-YTeZZAEDhIidXHFsA 提取码:gnek |
3.2 创建获取远程仓库镜像的secret(如果镜像提前下载在本地,可忽略)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
kubectl create secret docker-registry regcred \ --docker-server=<你的镜像仓库服务器> \ --docker-username=<你的用户名> \ --docker-password=<你的密码> \ --docker-email=<你的邮箱地址> 例: kubectl create secret docker-registry aliyun-registry -n [namespace]\ --docker-server=registry.cn-shanghai.aliyuncs.com \ --docker-username=dadawang \ --docker-password=123456 \ #注意密码不能有$符号会被屏蔽 --docker-email=tuobalongshen@126.com 然后再yaml的containers之上添加 imagePullSecrets: - name: aliyun-registry |

3.3下载配置之后执行kubectl-apply.sh,直接创建4个环境
1 |
sh kubectl-apply.sh |

3.4所有环境pod启动之后,查看svc

3.4.1 记得给数据库apolloprotaldb里添加以上的四套环境(否则默认只显示dev)
1 |
DEV,FAT,UAT,PRO |

3.5访问 apollo service
- server 端(即 portal)
kubernetes-master-ip:30001 - client 端, 在 client 端无需再实现负载均衡
1 2 3 4 5 6 7 8 9 |
Eureka 各个环境svc nodeport端口 Dev kubernetes-master-ip:30002 Fat kubernetes-master-ip:30003 Uat kubernetes-master-ip:30004 Prod kubernetes-master-ip:30005 |
访问:http://192.168.0.177:30001/signin

4.设置对外服务域名访问(Ingress)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-apollo namespace: sre annotations: nginx.ingress.kubernetes.io/affinity: "cookie" nginx.ingress.kubernetes.io/session-cookie-name: "route" nginx.ingress.kubernetes.io/session-cookie-expires: "172800" nginx.ingress.kubernetes.io/session-cookie-max-age: "172800" spec: rules: - host: apollo.shooter.com http: paths: - path: backend: serviceName: service-apollo-config-server-dev servicePort: 8080 - host: apollo.protal.com http: paths: - path: / backend: serviceName: service-apollo-portal-server servicePort: 8070 |

域名访问登录

1 2 |
默认账号密码: apollo admin |

(完成)
- 本文固定链接: https://www.yoyoask.com/?p=6760
- 转载请注明: shooter 于 SHOOTER 发表