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:
- mail
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的集成的更多相关文章

  1. python+selenium自动化软件测试(第11章):持续集成jenkins和GitHub的使用

    11.1 jenkins持续集成环境 相关安装包下载链接:http://pan.baidu.com/s/1qYhmlg4 密码:dcw2赠送jenkins集成selenium环境视频链接http:// ...

  2. (转)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 ...

  3. (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一

    http://blog.csdn.net/yerenyuan_pku/article/details/52888808 前面我们已经集成了Spring4.2.5+Hibernate4.3.11这两个框 ...

  4. openshift 3.11安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  5. openshift 3.11 安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  6. Istio在Openshift 3.11的安装

    详细安装步骤及解释参考 https://docs.openshift.com/container-platform/3.11/servicemesh-install/servicemesh-insta ...

  7. OpenShift 3.11离线环境的jenkins演示

    离线安装完成后,一般情况下只装了个基础环境,catalog镜像没有导入,本文主要侧重在jenkins的一些环境设置和演示. 1.导入镜像 首先follow下面链接下载镜像 https://docs.o ...

  8. SonarQube配置LDAP认证集成

    1.准备工作 获取LDAP服务信息.admin账号.安装sonarldap插件. 2.LDAP配置 #LDAP settings #admin sonar.security.realm=LDAP ld ...

  9. [SharePoint2010开发入门经典]11、与Office集成

    本章概要: 1.创建office集成解决方案使用代码或非代码形式 2.使用内容类型作为能映射到文档库的文档 3.使用InfoPath管理表单 4.使用工作流管理业务流程 5.使用office2010服 ...

随机推荐

  1. Linux文件系统的详解

    这里以 EXT2 文件系统为例 在Linux下,一个磁盘的最前面是MBR,大小为512Byte 在每一个分区下,第一部分是boot sector,接下来是super block,再接下来是inode, ...

  2. vuejs学习——vue+vuex+vue-router项目搭建(二)

    前言 最近比较忙,所有第二章发布晚了,不好意思各位. vuejs学习——vue+vuex+vue-router项目搭建(一) 中我们搭建好了vue项目,我相信大家已经体验了vue其中的奥妙了,接下来我 ...

  3. Codeforces Round #285 (Div. 1) B - Misha and Permutations Summation 康拓展开+平衡树

    思路:很裸的康拓展开.. 我的平衡树居然跑的比树状数组+二分还慢.. #include<bits/stdc++.h> #define LL long long #define fi fir ...

  4. Windows 下安装 tensorflow & keras & opencv 的避坑指南!

    安装 Anaconda3 关键的一步: conda update pip 下面再去安装各种你需要的包,一般不会再报错. pip install -U tensorflow pip install -U ...

  5. Xcode代码提示里的字母含义

    P -- 协议 M -- 成员方法 C -- 类 K -- 枚举 .常量 V -- 成员变量 T -- typedef类型 G -- 全局变量 f -- 函数 # -- #define指令

  6. New Year Tree 【DFS序+线段树区间查询修改+二进制保存状态】

    题目链接[http://codeforces.com/problemset/problem/620/E] 题意:给出n个数,每个数有一个初始的颜色.由这n个数组成一颗树.有两种操作1.将以节点u为根的 ...

  7. noip200204过河卒

    如图,A 点有一个过河卒,需要走到目标 B 点.卒行走规则:可以向下.或者向右.同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点.例如上图 C ...

  8. ACM -- 算法小结(七)Phone list解题报告

          HDOJ -- Phone list解题报告 问题描述:给出一些电话号码,如果有共同前缀则输出NO,如果没有则输出YES. 解题关键:将电话号码进行字符串排序,相邻的电话号码进行比较 Sa ...

  9. PHP 基础函数(一)数组的键名和值

    array_values($arr);  获取数组的值,键名消失,原数组不变,返回转变后的数组:

  10. 安装与使用adb

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ...