Apollo 集成 OpenLDAP

一、docker 部署 apollo

1.1 下载 apollo 安装包

1
[admin@centos7 ~]$ https://github.com/nobodyiam/apollo-build-scripts

1.2 启动 docker-compose

1
2
[admin@centos7 ~]$ cd apollo-build-scripts
[admin@centos7 apollo-build-scripts]$ docker-compose up

1.3 导入 apollo mysql 数据

ApolloPortalDB库:apolloportaldb.sql

ApolloConfigDB库: apolloconfigdb.sql

使用客户端导入以上两个库的基础数据,数据库默认用户root,没有密码。

1.4 重启 apollo 服务

1
[admin@centos7 apollo-portal]$ docker restart apollo-quick-start

第一次启动因为mysql数据库里没有基础数据,肯定会启动失败再重启一次即可。

二、apollo 集成 OpenLDAP

2.1 配置 apollo 集成 OpenLDAP

apollo-quick-start/portal 目录下新建一个config目录,在config目录下创建application-ldap.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[admin@centos7 apollo-build-scripts]$ docker exec -it apollo-quick-start bash
bash-4.3# cd apollo-quick-start/portal/
bash-4.3# mkdir config
bash-4.3# vim config/application-ldap.yml
spring:
ldap:
base: "dc=sys,dc=com"
username: "ou=apollo,ou=groups,dc=sys,dc=com" #配置管理员账号,用于搜索、匹配用户
password: "abc.apollo"
searchFilter: "(cn={0})" #用户过滤器,登录的时候用这个过滤器来搜索用户
urls:
- "ldap://192.168.48.138:389"

ldap:
mapping: #配置 ldap 属性
objectClass: "inetOrgPerson" #ldap 用户 objectClass 配置
loginId: "cn" #ldap 用户惟一 id,用来作为登录的 id
userDisplayName: "sn" #ldap 用户名,用来作为显示名
email: "mail" #ldap 邮箱属性
filter: #配置过滤,目前只支持 memberOf
memberOf: "cn=apollo,ou=apollo,ou=groups,dc=sys,dc=com"

apollo 支持OpenLDAP 基于memberOf过滤用户基于Group过滤用户,个人推荐使用前者,因为对基于Group的支持还不是很好,这里使用的apollo版本为1.7.1。

更多LDAP接入方式和配置请参考官方GitHUB

2.2 修改启动脚本

docker-compose启动的apollo修改demo.sh,将-Deureka.client.enabled后面的auth替换为ldap即可。

1
2
3
bash-4.3# vi /apollo-quick-start/demo.sh

PORTAL_JAVA_OPTS="$BASE_JAVA_OPTS -Ddev_meta=$config_server_url -Dspring.profiles.active=github,ldap -Deureka.client.enabled=false -Dhibernate.query.plan_cac

重启apollo服务

1
[admin@centos7 apollo-portal]$ docker restart apollo-quick-start

三、使用 LDAP 账户登录

待服务完成重启便可以使用 ldap 账户进行登录了

图片1

创建项目

图片2

如果使用的是基于Group过滤用户,在应用负责人项目管理员这里可能无法显示成员。

四、apollo 添加多个集群

4.1 修改数据库配置

如果要同时配置多个环境,需要修改portal数据库。打开ApolloPortalDB库的serverconfig表,修改keyapollo.portal.envsvalue来添加环境。环境之间使用英文逗号隔开(大小写不敏感)。目前apollo默认支持环境可以参考枚举类com.ctrip.framework.apollo.core.enums.Env

1
2
3
public enum Env{
LOCAL, DEV, FWS, FAT, UAT, LPT, PRO, TOOLS, UNKNOWN;
}

4.2 修改apollo启动参数

docker-compose 部署的apollo 修改demo.sh

1
PORTAL_JAVA_OPTS="$BASE_JAVA_OPTS -Ddev_meta=$config_server_url -Duat_meta=$config_server_url -Dspring.profiles.active=github,ldap -Deureka.client.enabled=fa

采用二进制部署方式,则修改portal下的config/apollo-env.properties文件

1
2
3
4
5
6
7
[root@centos7 apollo-portal]$ cat config/apollo-env.properties
local.meta=http://localhost:8080
dev.meta=http://localhost:8080
fat.meta=http://localhost:8080
uat.meta=http://localhost:8080
lpt.meta=${lpt_meta}
pro.meta=http://localhost:8080

最后重启服务,进入apollo即可看到多个集群了

图片3

-------------本文结束感谢您的阅读-------------