GItHub:https://github.com/apolloconfig/apollo
官方文档:https://www.apolloconfig.com/#/zh/usage/apollo-user-guide
官方初始化Sql
https://github.com/apolloconfig/apollo-quick-start/tree/master/sql
优秀部署文章:https://blog.csdn.net/weixin_43515220/article/details/113623874
为了避免参数变化引起的频繁的程序改动,通常我们在应用程序中将常用的一些系统参数、启动参数、数据库参数等等写到配置文件或其他的存储介质里面。
Apollo中的几个核心概念:
统一管理不同环境、不同集群的配置
配置修改实时生效(热发布)
版本发布管理
灰度发布
权限管理、发布审核、操作审计
客户端配置信息监控
提供Java和.Net原生客户端
提供开放平台API
架构概念图
Config Service
提供配置获取、配置更新推送的接口; 主要服务于Apollo客户端;
Admin Service
提供配置管理、修改、发布等接口; 主要服务于Portal;
Meta Server
为Portal提供获取 Admin Service 服务列表; 为Client提供获取 Config Service 服务列表;
Eureka
提供服务注册和发现功能(基于Eureka和Spring Cloud Netflix); Config Service和Admin Service会向Eureka注册服务,并保持心跳; 为了简单起见,目前Eureka在部署时和Config Service是在一个JVM进程中的(通过Spring Cloud Netflix);
Portal
提供Web界面供用户管理配置; 通过Meta Server获取Admin Service服务列表(IP+Port),通过IP+Port访问服务; 在Portal侧做load balance、错误重试;
Client
Apollo提供的客户端程序,为应用提供配置获取、实时更新等功能; 通过Meta Server获取Config Service服务列表(IP+Port),通过IP+Port访问服务; 在Client侧做load balance、错误重试;
apollo-configservice
部署2份以上apollo-adminservice
部署2份及以上apollo-portal
部署一份x1#创建文件夹
2mkdir apolloserver
3#创建命名空间
4kubectl create namespace apollo
5
6#添加到仓库,有两个资源 选择其中一个添加
7helm repo add apollo https://www.apolloconfig.com/charts
8
9helm repo add apollo http://ctripcorp.github.io/apollo/charts
10
11#查询仓库中Apollo版本
12helm search repo apollo
13
14#拉取Apollo-service到本地
15helm pull apollo/apollo-service --untar
16
17#进入 apollo-service 文件夹中,修改 vaules.yaml配置
18vim values.yaml
19
修改values.yaml文件中的配置
xxxxxxxxxx
181configdb
2 name apollo-configdb
3 # apolloconfigdb host
4 host"172.11.32.51" # 修改要连接的数据地址
5 port3308
6 dbName ApolloConfigDB
7 # apolloconfigdb user name
8 userName"root" # 修改用户名
9 # apolloconfigdb password
10 password"123456" # 修改密码
11 connectionStringProperties characterEncoding=utf8
12 service
13 # whether to create a Service for this host or not
14 enabledfalse
15 fullNameOverride""
16 port3306
17 type ClusterIP
18
xxxxxxxxxx
401#修改完成后执行
2
3helm install apollo-service -f values.yaml -n apollo apollo/apollo-service
4
5#记录生成的地址需要填写到 apollo-portal配置中
6 NAME: apollo-service
7 LAST DEPLOYED: Tue Aug 16 22:15:07 2022
8 NAMESPACE: apollo
9 STATUS: deployed
10 REVISION: 1
11 TEST SUITE: None
12 NOTES:
13 Meta service url for current release:
14 #此地址需要写入
15 echo 'http://apollo-service-apollo-configservice.apollo:8080'
16
17 For local test use:
18 export POD_NAME=$(kubectl get pods --namespace apollo -l "app=apollo-service-apollo-configservice" -o jsonpath="{.items[0].metadata.name}")
19 echo http://127.0.0.1:8080
20 kubectl --namespace apollo port-forward $POD_NAME 8080:8080
21
22
23# 查看 apollo-configservice、apollo-adminservice 是否启动
24kubectl get pod,svc -n apollo
25
26pod/apollo-service-apollo-adminservice-rgtgp 1/1 Running 0 3h2m
27pod/apollo-service-apollo-adminservice-zft5b 1/1 Running 0 3h2m
28pod/apollo-service-apollo-configservice-9twqp 1/1 Running 0 3h2m
29pod/apollo-service-apollo-configservice-pwwxq 1/1 Running 0 3h2m
30service/apollo-service-apollo-adminservice ClusterIP 10.1.19.161 8090/TCP 3h2m
31service/apollo-service-apollo-configservice ClusterIP 10.1.142.29 8080/TCP 3h2m
32
33#退出到上一级文件夹
34cd ..
35
36#拉取 apollo-portal服务
37helm pull apollo/apollo-portal --untar
38
39#进入 apollo-portal 文件夹中,修改 vaules.yaml配置
40vim values.yaml
修改values.yaml文件中的配置
xxxxxxxxxx
401#填写记录的地址,增加环境变量
2#因已是生产环境,则写 pro
3
4config
5 # spring profiles to activate
6 profiles"github,auth"
7 # specify the env names, e.g. dev,pro
8 envs"pro"
9 # specify the meta servers, e.g.
10 # dev: http://apollo-configservice-dev:8080
11 # pro: http://apollo-configservice-pro:8080
12 metaServers
13 dev http //apollo-service-apollo-configservice.apollo8080
14
15 # specify the context path, e.g. /apollo
16 contextPath""
17 # extra config files for apollo-portal, e.g. application-ldap.yml
18 files
19
20
21
22
23portaldb
24 name apollo-portaldb
25 # apolloportaldb host
26 host"172.11.32.51" # 修改要连接的数据地址
27 port3308
28 dbName ApolloPortalDB
29 # apolloportaldb user name
30 userName"root" # 修改用户名
31 # apolloportaldb password
32 password"123456" # 修改密码
33 connectionStringProperties characterEncoding=utf8
34 service
35 # whether to create a Service for this host or not
36 enabledfalse
37 fullNameOverride""
38 port3306
39 type ClusterIP
40
xxxxxxxxxx
161#修改完成之后
2
3helm install apollo-portal -f values.yaml -n apollo apollo/apollo-portal
4
5#执行成功,生成结果
6NAME: apollo-portal
7LAST DEPLOYED: Wed Aug 17 05:28:11 2022
8NAMESPACE: apollo
9STATUS: deployed
10REVISION: 1
11TEST SUITE: None
12NOTES:
13Portal url for current release:
14 export POD_NAME=$(kubectl get pods --namespace apollo -l "app=apollo-portal" -o jsonpath="{.items[0].metadata.name}")
15 echo "Visit http://127.0.0.1:8070 to use your application"
16 kubectl --namespace apollo port-forward $POD_NAME 8070:8070
因服务不能对外访问,需要增加yaml配置对外映射服务端口
仅对 apollo-configservice、apollo-potal 两个服务对外映射
xxxxxxxxxx
441# cd .. 在apolloserver目录下
2 vim ingress-apollo.yaml
3
4
5apiVersion v1
6kind Service
7metadata
8 namespace apollo
9 name apllo-svc-config-node-port
10 labels
11 app apollo
12spec
13 type NodePort
14 ports
15port8080
16 targetPort8080
17 nodePort 30080 #对外映射的端口
18 selector
19 app apollo-service-apollo-configservice
20
21---
22apiVersion v1
23kind Service
24metadata
25 namespace apollo
26 name apllo-svc-portal-node-port
27 labels
28 app apollo
29spec
30 type NodePort
31 ports
32port8070
33 targetPort8070
34 nodePort 30080 #对外映射的端口
35 selector
36 app apollo-portal
37
38
39
40# 修改完成后执行此服务
41 kubectl apply -f ingress-apollo.yaml
42
43 end
44# 至此创建完成
xxxxxxxxxx
61#更新配置
2helm upgrade apollo-service . -f values.yaml -n apollo
3
4#卸载服务
5helm uninstall apollo-service -n apollo apollo/apollo-service
6helm uninstall apollo-portal -n apollo apollo/apollo-portal
portal为界面管理
地址为{IP}+{apllo-svc-portal-node-port服务对外映射端口号}
界面登录默认账号:apollo
界面登录默认密码:admin
config为客户端调用
地址为{IP}+{apllo-svc-config-node-port服务对外映射端口号}
tsmicronet
默认application 私有 properties 命名空间
此命名空间是本AppId下通用的
需要手动创建通用配置
xxxxxxxxxx
111 Key RedisConfig
2 value { "ConnString": "redis:6379", "DefaultDatabase": 2, "Password": "" }
3 备注 redis配置
4
5 Key LoggerApi
6 value http://172.11.32.80:30004/api/Logger/WriteLogger
7 备注 日志记录地址
8
9 Key AuthUrl
10 value http://172.11.32.80:30003
11 备注 Identityserver,权限校验Url
创建identityserver 私有 json 命名空间
xxxxxxxxxx
191{
2 "AppClientId": "AppClient",
3 "AppIp": "http://172.11.32.80:30011",
4 "AppletClientId": "AppletClient",
5 "AppletIp": "http://172.11.32.80:30012",
6 "CertificatePassword": "123456",
7 "CertificatePath": "ids4.pfx",
8 "HomeUrl": "http://172.11.32.80:30009/Login?isexternal=1",
9 "Ids4ConnectionStrings": "Database=microidentityserverdb-linux;Uid=root;Pwd=123456;",
10 "Issuer": "http://172.11.32.80:5401",
11 "MVCIp": "http://172.11.32.80:30007",
12 "ManagerUrl": "http://172.11.32.80:30010/Login?isexternal=1",
13 "MvcClientId": "MvcClient",
14 "UserConnectionStrings": "Database=microidentitydb;Uid=root;Pwd=123456;",
15 "VUEIp": "http://172.11.32.80:30009",
16 "VueClientId": "VueClient",
17 "VueManageClientId": "VueManageClient",
18 "VueManageIp": "http://172.11.32.80:30010"
19}
创建初始化秘钥文件,并执行。
xxxxxxxxxx
91vim local-secrets.txt
2
3AppId=tsmicronet # Apollo中的AppId
4MetaServer=http://172.11.32.80:30081 # Apollo中的ConfigServer的Url
5RedisHost=redis:6379
6RedisPassword=
7
8#创建完成后加入到k8s secrets中
9kubectl create secret generic daprsecrets --from-env-file=local-secrets.txt -n netapp-demo
xxxxxxxxxx
171# 创建秘钥管理配置 k8s
2vim secretstore-k8s.yaml
3
4apiVersion dapr.io/v1alpha1
5kind Component
6metadata
7 name local-secret-store
8 namespace netapp-demo
9spec
10 type secretstores.kubernetes
11 version v1
12 metadata
13
14
15#创建完成后执行
16kubectl apply -f secretstore-k8s.yaml
17