Openshift 3.11和LDAP的集成
1. OpenLDAP的安装
只记录主要步骤,详细可参考
https://access.redhat.com/solutions/2484371
# yum install -y openldap openldap-clients openldap-servers [root@rhel7 ~]# cd /etc/openldap/slapd.d/
[root@rhel7 slapd.d]# ls -l
drwxr-x---. ldap ldap Aug : cn=config
-rw-------. ldap ldap Aug : cn=config.ldif
[root@rhel7 slapd.d]# cd cn\=config
[root@rhel7 cn=config]# ls -l
drwxr-x---. ldap ldap Aug : cn=schema
-rw-------. ldap ldap Aug : cn=schema.ldif
-rw-------. ldap ldap Aug : olcDatabase={}config.ldif
-rw-------. ldap ldap Aug : olcDatabase={-}frontend.ldif
-rw-------. ldap ldap Aug : olcDatabase={}monitor.ldif
drwxr-x---. ldap ldap Aug : olcDatabase={}hdb.ldif [root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{\}hdb.ldif
olcSuffix: dc=mydomain,dc=com [root@rhel7 cn=config]# vi /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{\}hdb.ldif
olcRootDN: cn=Manager,dc=example,dc=com
olcRootPW: redhat [root@rhel7 cn=config]# vi olcDatabase\=\{\}config.ldif
olcRootDN: cn=config
olcRootPW: secret [root@rhel7 cn=config]# slaptest -u
config file testing succeeded
启动
# systemctl start slapd
插入主要的schema(/etc/openldap/schema)
[root@node2 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=cosine,cn=schema,cn=config" [root@node2 schema]# ldapadd -Y EXTERNAL -H ldapi:/// -f ./inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=+uidNumber=,cn=peercred,cn=external,cn=auth
SASL SSF:
adding new entry "cn=inetorgperson,cn=schema,cn=config"
加入用户和组的信息
$ cat base.ldif
dn: dc=mydomain,dc=com
objectClass: dcObject
objectClass: organization
o: mydomain.com dn: ou=users,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: users dn: ou=groups,dc=mydomain,dc=com
objectClass: organizationalUnit
objectClass: top
ou: groups
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f base.ldif
adding new entry "dc=mydomain,dc=com" adding new entry "ou=users,dc=mydomain,dc=com" adding new entry "ou=groups,dc=mydomain,dc=com"
加入用户信息
设置密码
slappasswd -s welcome1
[root@node2 ~]# cat users.ldif
dn: cn=admin,ou=users,dc=mydomain,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: admin
sn: admin
displayName: admin
mail: admin@mydomain.com
userPassword: {SSHA}KX9+kEHfc/ywaGlZTF3ZsqSecbARs9Yp
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f users.ldif
adding new entry "cn=admin,ou=users,dc=mydomain,dc=com"
再加一个
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f eric.ldif
adding new entry "cn=eric,ou=users,dc=mydomain,dc=com"
基于search可以全部列出
ldapsearch -x -D 'cn=Manager,dc=mydomain,dc=com' -b dc=mydomain,dc=com -w redhat
2.OpenShift和LDAP集成
- 修改master的配置文件
/etc/origin/master/master-config.yaml
主要是oauth部分,我把完整的贴上来
oauthConfig:
assetPublicURL: https://master.example.com:8443/console/
grantConfig:
method: auto
identityProviders:
- challenge: true
login: true
mappingMethod: claim
name: my_ldap_provider
provider:
apiVersion: v1
attributes:
email:
id:
- dn
name:
- cn
preferredUsername:
- uid
bindDN: ''
bindPassword: ''
ca: ''
insecure: true
kind: LDAPPasswordIdentityProvider
url: ldap://192.168.56.105:389/ou=users,dc=mydomain,dc=com?cn
masterCA: ca-bundle.crt
masterPublicURL: https://master.example.com:8443
masterURL: https://master.example.com:8443
sessionConfig:
sessionMaxAgeSeconds:
sessionName: ssn
sessionSecretsFile: /etc/origin/master/session-secrets.yaml
tokenConfig:
accessTokenMaxAgeSeconds:
authorizeTokenMaxAgeSeconds:
- 修改后重启master
# master-restart api
# master-restart controllers
注意点如下:
- 只修改identityProviders部分,其他的不要修改,我不小心一个删除,然后定位了一下午才知道错误在哪里
- 不需要bindDN和bindPassword,虽然在LDAP录入的时候需要Manager的密码,但这里完全不需要。
3.如何定位问题
- 打开log level设置,缺省为2,最高为8,各级别如下
[root@master ~]# cat /etc/origin/master/master.env # Proxy configuration
# See https://docs.openshift.com/container-platform/latest/install_config/http_proxies.html#configuring-hosts-for-proxies-using-ansible DEBUG_LOGLEVEL=

- 基于命令master-logs查看
/usr/local/bin/master-logs api api
当然也有
# /usr/local/bin/master-logs controllers controllers
# /usr/local/bin/master-logs api api
# /usr/local/bin/master-logs etcd etcd
没有错误后,发现ldap用户登录成功,可以用oc get users进行验证一下
[root@master ~]# oc get users
NAME UID FULL NAME IDENTITIES
admin c746e175-f46f-11e8-ba5a-080027dc991a htpasswd_auth:admin
alice 0b722de4-f7b9-11e8-88eb-080027dc991a alice my_ldap_provider:cn=alice,ou=users,dc=mydomain,dc=com
cn=eric,ou=users,dc=mydomain,dc=com 03ae746c-f7b9-11e8-88eb-080027dc991a eric my_ldap_provider:cn=eric,ou=users,dc=mydomain,dc=com
tom 4c9a87fd-f7b9-11e8-88eb-080027dc991a tom my_ldap_provider:cn=tom,ou=users,dc=mydomain,dc=com
显示格式有问题,看这个图

为什么NAME字段eric有一堆的后缀,查了一下ldif文件,发现eric没有定义uid, 删除重新加
[root@node2 ~]# ldapdelete -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat "cn=eric,ou=users,dc=mydomain,dc=com"
[root@node2 ~]# vi eric.ldif
[root@node2 ~]# ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -w redhat -f eric.ldif
adding new entry "cn=eric,ou=users,dc=mydomain,dc=com"
同步时间太长了。
4.LDAP组的同步
现在LDAP中插入组,方法和插入用户一致
[root@node2 ~]# cat group.ldif
dn: cn=admins,ou=groups,dc=mydomain,dc=com
objectClass: groupOfNames
cn: admins
owner: cn=Manager,dc=mydomain,dc=com
member: cn=eric,ou=users,dc=mydomain,dc=com
写一个执行同步的yaml文件
kind: LDAPSyncConfig
apiVersion: v1
url: ldap://192.168.56.105:389
insecure: true
rfc2307:
groupsQuery:
baseDN: "ou=groups,dc=mydomain,dc=com"
scope: sub
derefAliases: never
filter: (objectclass=groupOfNames)
groupUIDAttribute: dn
groupNameAttributes: [ cn ]
groupMembershipAttributes: [ member ]
usersQuery:
baseDN: "ou=users,dc=mydomain,dc=com"
scope: sub
derefAliases: never
pageSize:
userUIDAttribute: dn
userNameAttributes: [ dn ]
tolerateMemberNotFoundErrors: true
tolerateMemberOutOfScopeErrors: true
运行及验证
[root@master ~]# oc adm groups sync --sync-config=groups.yaml --confirm
group/admins
[root@master ~]# oc get groups
NAME USERS
admins cn=eric,ou=users,dc=mydomain,dc=com
授权LDAP用户 alice为集群管理员
[root@master ~]# oc adm policy add-cluster-role-to-user cluster-admin alice
cluster role "cluster-admin" added: "alice"
alice登录后也能看到admin能看到的所有的项目了。

Openshift 3.11和LDAP的集成的更多相关文章
- python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用
11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...
- (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案二
http://blog.csdn.net/yerenyuan_pku/article/details/52894958 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...
- (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
http://blog.csdn.net/yerenyuan_pku/article/details/52888808 前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框 ...
- openshift 3.11安装部署
openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...
- openshift 3.11 安装部署
openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...
- Istio在Openshift 3.11的安装
详细安装步骤及解释参考 https://docs.openshift.com/container-platform/3.11/servicemesh-install/servicemesh-insta ...
- OpenShift 3.11离线环境的jenkins演示
离线安装完成后,一般情况下只装了个基础环境,catalog镜像没有导入,本文主要侧重在jenkins的一些环境设置和演示. 1.导入镜像 首先follow下面链接下载镜像 https://docs.o ...
- SonarQube配置LDAP认证集成
1.准备工作 获取LDAP服务信息.admin账号.安装sonarldap插件. 2.LDAP配置 #LDAP settings #admin sonar.security.realm=LDAP ld ...
- [SharePoint2010开发入门经典]11、与Office集成
本章概要: 1.创建office集成解决方案使用代码或非代码形式 2.使用内容类型作为能映射到文档库的文档 3.使用InfoPath管理表单 4.使用工作流管理业务流程 5.使用office2010服 ...
随机推荐
- appium---【Mac】appium-doctor提示WARN:“fbsimctl cannot be found”解决方案
报错提示截图如下: 解决方案: brew tap facebook/fb brew install fbsimctl --HEAD 执行完命令重新运营appium-doctor即可看到成功已安装此包:
- 使用BEEGO建立一个基本的API框架
用BEE API命令生成框架. 然后自行更改MODELS,加入MYSQL支持ORM. 然后,自定义了字段的对应,表的名称等. 参考URL: http://www.cnblogs.com/studyzy ...
- C++中对已分配空间的指针调用一个类的构造函数
在看MINIBASE的源代码的时候发现里面有类似于这样的东西 bufTable = (BufDesc*) MINIBASE_SHMEM->malloc( numBuffers * sizeof( ...
- 查看loadrunner运行日志
查看loadrunner运行日志 日志分两种 1.在VUGEN中运行后的日志 2.在controller中运行后的日志日志设置分两步: 1.首先,在VUGEN或controller中run-tim ...
- HTML5 Canvas 初探
仅仅只是一个简单的hello world. js代码很简单: <!DOCTYPE HTML> <html lang="cn"> <head> & ...
- C# 字符串提取数字
转自:http://www.cnblogs.com/dolphin-gjh/p/6121792.html 一.使用正则表达式 1 string str = "sztq数字提取123sztq数 ...
- 红黑树(RB Tree)
看到一篇很好的文章 文章来源:http://www.360doc.com/content/15/0730/00/14359545_488262776.shtml 红黑树是一种高效的索引树,多于用关联数 ...
- CodeForcs 797E Array Queries
$dp$预处理,暴力. 如果$k > sqrt(n)$,那么答案不会超过$sqrt(n)$,暴力模拟即可.如果$k <= sqrt(n)$,那么可以$dp$预处理打表. #include ...
- Selenium模拟登陆简书
from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.c ...
- Hibernate fetching strategies(抓取策略)
抓取策略(fetching strategies)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略.抓取策略可以在O/R映射的 ...