LDAP服務的部署和使用(含mongo)


在k8s里部署LDAP服務

LDAP服務由ldapadmin和ldapserver兩個無狀態服務組成

ldapadmin服務(通過該服務的外部接口能訪問LDAP服務,服務端)

容器配置:

鏡像名稱:osixia/phpldapadmin:latest (首先在本地pull該鏡像,再上傳到環境上)
CPU請求:0.5Core
CPU上限:1Core
內存請求:1GiB
內存上限:2GiB
掛載路徑:/var/lib/ldap(持久化數據)

鍵值對:
PHPLDAPADMIN_LDAP_HOSTS:ldapserver
PHPLDAPADMIN_HTTPS:false  

訪問配置:

訪問類型:集群內訪問
訪問端口:HTTP協議/80容器端口

訪問類型:集群外訪問
訪問端口:HTTP協議/80容器端口/32000節點端口

ldapserver服務(重要)

容器配置:

鏡像名稱:osixia/openldap:latest (首先在本地pull該鏡像,再上傳到環境上)
CPU請求:0.5Core
CPU上限:1Core
內存請求:1GiB
內存上限:2GiB
掛載路徑:/var/lib/ldap(持久化數據)

訪問配置:

ldapserver   (要與ldapadmin里的PHPLDAPADMIN_LDAP_HOSTS的值一樣!!)
訪問類型:集群內訪問
訪問端口1:TCP協議/389容器端口
訪問端口2:UDP協議/389容器端口

ldapservernodeport
訪問類型:外部訪問
訪問端口1:TCP協議/389容器端口/30089

ldap服務器設置

服務器地址:ldapserver的外部訪問IP   (要有內部的訪問權限才能從外網進去訪問LDAP服務器) 解決方法:從內部打開一個端口,然后通過外部ip:port進行訪問
端口:外部訪問的端口號這里為30089
賬號:cn=admin,dc=example,dc=org
密碼:admin
BaseDN:dc=example,dc=org
賬號字段:cn
姓名字段:sn
郵箱字段:mail

往LDAP數據庫添加數據:

進入LDAP服務👉import
代碼格式:

創建base:

# Entry 1: dc=example,dc=org
dn: dc=example,dc=org
dc: example
o: Example Inc.
objectclass: top
objectclass: dcObject
objectclass: organization

新增成員:

dn: cn=aaa,dc=example,dc=org
cn: aaa
mail: email
objectclass: top
objectclass: inetOrgPerson
sn:: 5rWZ5ZWGdGVzdA==
uid:: 5rWZ5ZWGdGVzdA==
userpassword: 123456

也可以直接從另一個LDAP里export數據,復制黏貼,注意要修改BaseDN

 

從后端mongo數據庫查看LDAP用戶

首先遠程連接環境ip

查看mongo的pod

kubectl get pod | grep 'mongo'

 

 進入pod服務:kubectl exec -it infra-mongo-mongo-v1-0-0 mongo

 

 re.status() 查找到master節點上的mongo服務,只有master節點上的可以操作 (哨兵模式)

 

 

 關鍵字段:PRIMARY,就是master節點的mongo:infra-mongo-mongo-v1-0-0

接下來進入這個pod進行數據庫操作

show dbs 列出數據庫

 

 

 LDAP配置信息存在console-web

LDAP用戶信息存在cauth_v2里,所以我們要use cauth_v2

 

 

 這樣就查到所有的users的信息了,要查LDAP,就加過濾條件就行

刪除里面的數據:

db.users.remove({條件信息})

舉例為tenants:

db.users.save({信息}) 修改數據信息

db.users.find({"_id" : {$regex:"username-*"}})  查詢語句匹配regex:正則表達式,$and多個條件,$or同,$options不區分大小寫

db.users.find({"_id" : {$regex:"username-*"}}).limit(10).skip(100).sort({"gtime": -1, "ctime": 1}) 返回結果為10,略過第100項,gtime降序,ctime升序

 

在Docker上部署LDAP服務

首先在你自己的環境里docker pull 兩個鏡像

docker pull osixia/openldap   (openldap構建ldap服務)

docker pull osixia/phpldapadmin    (admin是用來管理ldap數據庫的)

 

運行鏡像(參數也可以不填,都為默認)

docker run -p 30389:389 -p 30636:636 \                

--name myfirstldap \

--network bridge \

--hostname openldap \

--env LDAP_ORGANISATION="mylitboy" \

--env LDAP_DOMAIN="mylitboy.com" \

--env LDAP_ADMIN_PASSWORD="ldap123" \

--detach osixia/openldap

配置LDAP組織者:--env LDAP_ORGANISATION="firstldap"

配置LDAP域:--env LDAP_DOMAIN="firstldap.org"                  (這里也就是dc=firstldap,dc=org)

配置LDAP密碼:--env LDAP_ADMIN_PASSWORD="admin123"

默認登錄用戶名:admin

(389端口是用來從外部進入ldap訪問數據的,像我這樣是把389映射到30389上了,外部就通過port30389來讀取數據)

docker ps 查看一下是否運行起來了

docker stop <id>  \  docker rm <id>   停止,刪除這個鏡像

 

openldap運行起來之后,來啟動ldapadmin進行管理

docker run -d --privileged -p 10086:80 \

--name myphpldapadmin \

--env PHPLDAPADMIN_HTTPS=false \

--env PHPLDAPADMIN_LDAP_HOSTS=172.17.0.4 \

--detach osixia/phpldapadmin

配置的Ldap地址:--env PHPLDAPADMIN_LDAP_HOSTS=172.17.0.4  (這個ip用docker inspect --format '{{ .NetworkSettings.IPAddress }}' <id>來獲取就是之前啟動的openldap

配置不開啟HTTPS:--env PHPLDAPADMIN_HTTPS=false(默認是true,就是https訪問,遠程讀取時會有些麻煩,沒特殊需要建議http)

(如果選擇https方式,一定要映射443端口,我這里http所以可以是80,對應的10086就是之后訪問ldap服務的port了)

docker ps查看一下是否啟動成功

然后通過172.17.0.4:10086來訪問服務 (都要看你自己的配置來)

成功的頁面是這樣的:

 

 

 

 點擊login登錄

賬號:  cn=admin,dc=firstldap,dc=org     (看之前openldap的配置)

密碼:   admin123

 

 

登錄后是這樣的,通過import可以導入數據,導入格式在上面有講

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM