当前位置: 首页 > news >正文

OpenLDAP-OpenLDAP应⽤容器化06

1、Docker部署OpenLDAP

1.1 基础环境准备

1、创建LDAP⽬录

mkdir -p /data/ldap/{certs,config,data}

2、创建TLS证书⽂件,并配置好对应的域名。

openssl req -x509 -nodes -days 3650 \
-newkey rsa:2048 \
-keyout /data/ldap/certs/ldapserver.key \
-out /data/ldap/certs/ldapserver.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=oldxu/OU=edu/CN=openldap.oldxu.net" \
-addext "subjectAltName=DNS:docker-ldap.oldxu.net,DNS:docker-openldap.oldxu.net,DNS:openldap-server"

3、创建⾃定义⽹络(让容器间能通过容器名称访问)

docker network create ldap-net

4、下载镜像

docker pull uhub.service.ucloud.cn/oldxu/openldap:latest
docker pull uhub.service.ucloud.cn/oldxu/phpldapadmin:latest
docker pull uhub.service.ucloud.cn/oldxu/self-service-password:1.7

1.2 部署OpenLDAP

1、 使⽤Docker运⾏LDAP

docker run -d --name openldap-server \
--network ldap-net \
--restart=always \
--hostname="docker-ldap.oldxu.net" \
-e LDAP_ORGANISATION="oldxu" \
-e LDAP_DOMAIN="oldxu.net" \
-e LDAP_ADMIN_USERNAME=admin \
-e LDAP_ADMIN_PASSWORD="123456" \
-e LDAP_TLS=true \
-e LDAP_TLS_CA_CRT_FILENAME="ldapserver.crt" \
-e LDAP_TLS_CRT_FILENAME="ldapserver.crt" \
-e LDAP_TLS_KEY_FILENAME="ldapserver.key" \
-v /data/ldap/certs:/container/service/slapd/assets/certs \
-v /data/ldap/config:/etc/ldap/slapd.d \
-v /data/ldap/data:/var/lib/ldap \
-p 389:389 \
-p 636:636 \
uhub.service.ucloud.cn/oldxu/openldap:latest

参数含义:

  • --hostname="docker-ldap.oldxu.net" :设定容器的主机名称。
  • LDAP_ORGANISATION="OldXu Organization" :定义组织名称。
  • LDAP_DOMAIN="oldxu.net" :定义根域 dc=oldxu,dc=net 。
  • LDAP_ADMIN_USERNAME=admin :定义管理员⽤户, cn=admin,dc=oldxu,dc=net
  • LDAP_ADMIN_PASSWORD="123456" :定义管理员密码。
  • LDAP_TLS=true :启⽤ TLS/SSL,确保能正常对接Linux系统。
  • LDAP_TLS_CA_CRT_FILENAME="ldapserver.crt" :指定 CA 的crt。
  • LDAP_TLS_CRT_FILENAME="ldapserver.crt" :指定服务器证书crt。
  • LDAP_TLS_KEY_FILENAME="ldapserver.key" :指定服务器证书 key。
  • -v /data/ldap/certs:/container/service/slapd/assets/certs :将宿主机证书挂载⾄指定位置,确保ldap能加载。
  • -v /data/ldap/config:/etc/ldap/slapd.d :持久化ldap配置。
  • -v /data/ldap/data:/var/lib/ldap :持久化ldap数据。

1.3 验证OpenLDAP

1、默认LDAP中没有OU相关的信息,因此我们创建⼀点信息⽤于测试与验证。

docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=dev,dc=oldxu,dc=net
objectClass: organizationalUnit
objectClass: top
ou: dev
EOF'
docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=ops,dc=oldxu,dc=net
objectClass: organizationalUnit
objectClass: top
ou: ops
EOF'
docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=docker,dc=oldxu,dc=net
objectClass: organizationalUnit
objectClass: top
ou: docker
EOF'

2、通过命令⽅式查询数据

# TLS查询
docker exec -it openldap-server sh -c 'ldapsearch -x -LLL -H ldaps://docker-ldap.oldxu.net:636 -b "dc=oldxu,dc=net" -D "cn=admin,dc=oldxu,dc=net" -w "123456"'
# ⾮TLS查询
docker exec -it openldap-server sh -c 'ldapsearch -x -LLL -H ldap://docker-ldap.oldxu.net:389 -b "dc=oldxu,dc=net" -D "cn=admin,dc=oldxu,dc=net" -w "123456"'

1.4 配置memberOf

1、查询默认是否配置了memberof

[root@k8s-node34 ~]# docker exec -it openldap-server sh -c 'ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" -LLL -Q "(olcOverlay=*)"'
dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: {0}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOfdn: olcOverlay={1}refint,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
olcOverlay: {1}refint
olcRefintAttribute: owner
olcRefintAttribute: manager
olcRefintAttribute: uniqueMember
olcRefintAttribute: member
olcRefintAttribute: memberOf

2、如果希望⽀持memberof,可以将默认的 groupOfUniqueNames 修改为 groupofNames

docker exec -it openldap-server sh -c 'ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF
dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcMemberOfGroupOC
olcMemberOfGroupOC: groupOfNames
-
replace: olcMemberOfMemberAD
olcMemberOfMemberAD: member
EOF'# 查询
[root@k8s-node34 ~]# docker exec -it openldap-server sh -c 'ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" -LLL -Q "(olcOverlay=*)"'
dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcMemberOf
olcOverlay: {0}memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfMemberOfAD: memberOf
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
...

2、创建ou

# app-users
docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=app-users,dc=oldxu,dc=net
objectClass: organizationalUnit
ou: app-users
EOF'
# app-groups
docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=app-groups,dc=oldxu,dc=net
objectClass: organizationalUnit
ou: app-groups
EOF'

3、创建⽤户

# docker
docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: uid=docker,ou=app-users,dc=oldxu,dc=net
objectClass: inetOrgPerson
uid: docker
cn: docker
sn: App Server User
mail: docker@qq.com
userPassword: docker_password
EOF'
# oldxu
docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: uid=oldxu,ou=app-users,dc=oldxu,dc=net
objectClass: inetOrgPerson
uid: oldxu
cn: oldxu
sn: App Server User
mail: oldxuedu@qq.com
userPassword: oldxu_password
EOF'

3、创建 docker-group 组,并将 docker、oldxu ⽤户加⼊组中

docker exec -it openldap-server sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: cn=docker-group,ou=app-groups,dc=oldxu,dc=net
objectClass: groupOfNames
cn: docker-group
member: uid=docker,ou=app-users,dc=oldxu,dc=net
member: uid=oldxu,ou=app-users,dc=oldxu,dc=net
EOF'

4、验证结果

[root@k8s-node34 ~]# docker exec -it openldap-server sh -c 'ldapsearch -LLL -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 -b "dc=oldxu,dc=net" "(uid=oldxu)" memberof'
dn: uid=oldxu,ou=app-users,dc=oldxu,dc=net
memberOf: cn=docker-group,ou=app-groups,dc=oldxu,dc=net[root@k8s-node34 ~]# docker exec -it openldap-server sh -c 'ldapsearch -LLL -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 -b "dc=oldxu,dc=net" "(uid=docker)" memberof'
dn: uid=docker,ou=app-users,dc=oldxu,dc=net
memberOf: cn=docker-group,ou=app-groups,dc=oldxu,dc=net

2、Docker部署phpldapadmin

2.1 部署phpldapadmin

使⽤Docker运⾏phpldapadmin

docker run -d --name phpldapadmin \
--network ldap-net \
--restart=always \
--privileged=true \
-e PHPLDAPADMIN_LDAP_HOSTS="openldap-server" \
-e PHPLDAPADMIN_HTTPS=false \
-p 80:80 \
uhub.service.ucloud.cn/oldxu/phpldapadmin:latest

参数含义:

  • --privileged=true :启⽤特权模式
  • PHPLDAPADMIN_LDAP_HOSTS="openldap-server" :指定 LDAPServer的地址
  • PHPLDAPADMIN_HTTPS=false :禁⽤HTTPS

2.2 访问phpldapadmin

1、配置好对应的域名解析,然后访问 http://docker-ldap.oldxu.net , 输⼊管理员⽤户与密码

  • 管理员⽤户: cn=admin,dc=oldxu,dc=net
  • 管理员密码: 123456

2、检查对应的数据

3、Docker部署Self-Service-Password

3.1 部署Self-Service-Password

1、准备配置⽂件

[root@ldap-client01 ~]# cat /data/ldap/docker-ssp.conf.php
<?php
// LDAP 配置
$ldap_url = "ldap://openldap-server:389"; // LDAP 服务器地址
$ldap_binddn = "cn=admin,dc=oldxu,dc=net"; // LDAP 管理员账户
$ldap_bindpw = "123456"; // LDAP 管理员密码
$ldap_base = "dc=oldxu,dc=net"; // LDAP 搜索基准
$ldap_login_attribute = "uid"; // ⽤户名字段(如 uid 或 cn)
$ldap_fullname_attribute = "cn"; // ⽤户全名字段
$ldap_filter = "(&(objectClass=person)(uid={login}))"; // ⽤户过滤器
// 邮件通知
$reset_url = "http://docker-ssp.oldxu.net:8080/"; // 重置密码的域名
$mail_address_use_ldap = true; // 从 LDAP 属性中获取邮件地址。
$mail_from = "572891887@qq.com"; // 发件⼈地址
$mail_from_name = "Self-Service Password"; // 发件⼈名称
$mail_smtp_host = "smtp.qq.com"; // SMTP 服务器地址
$mail_smtp_auth = true; // 启⽤ SMTP 身份验证
$mail_smtp_user = "572891887@qq.com"; // SMTP ⽤户名
$mail_smtp_pass = "jkgibvlqsepbbeic"; // SMTP 密码
$mail_smtp_port = 587; // SMTP 端⼝
$mail_smtp_secure = "tls"; // 使⽤ SSL 加密
$mail_smtp_autotls = true;
// 密码以加密⽅式显示
$hash = "SSHA";
// 加密密钥(必须设置)
$keyphrase = "oldxuedu_20990000"; // ⽤于加密敏感数据的密钥
?>

2、使⽤Docker运⾏Self-Service-Password

docker run -itd \
--name self-service-password \
--network ldap-net \
-p 8080:80 \
-v /data/ldap/docker-ssp.conf.php:/var/www/conf/config.inc.local.php \
-it uhub.service.ucloud.cn/oldxu/self-service-password:1.7

参数说明:

  • -v /data/ldap/docker-ssp.conf.php:/var/www/conf/config.inc.local.php 配置文件
  • -p 8080:80 容器 80 端口映射到宿主机 8080

3、 访问Self-Service-Password

4、Kubernetes部署OpenLDAP

  • 1、使⽤ StatefulSet 部署,以便每个 Pod 都拥有稳定的⽹络名称(如 openldap-0 , openldap-1 )。
  • 2、配置 PersistentVolumeClaim(PVC),确保 Pod 数据能够持久化到本地。
  • 3、配置 Headless Service(⽆ ClusterIP),为 StatefulSet 的 Pod 提供DNS 名称解析。

4.1创建Secrts

1、创建TLS证书⽂件,证书⽂件中需要包含Kubernetes内部访问的域名。

在Kubernetes 中,服务的内部域名根据 Service 的名称和部署的 Namespace ⽣成。如果将 OpenLDAP 部署到 default Namespace:

  • 同 Namespace 的服务可以使⽤短域名 openldap-svc 访问。
  • 也可以使⽤ 完整域名 openldap-svc.default.svc.cluster.local 进⾏访问和 TLS 认证。
openssl req -x509 -nodes -days 3650 \
-newkey rsa:2048 \
-keyout ldapserver.key \
-out ldapserver.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=oldxu/OU=edu/CN=openldap.oldxu.net" \
-addext "subjectAltName=DNS:k8s-ldap.oldxu.net,DNS:k8s-openldap.net,DNS:openldap-svc,DNS:openldap-svc.default.svc.cluster.local"

2、将证书转为Secrts

kubectl create secret generic ldap-certs \--from-file=ldapserver.crt=./ldapserver.crt \--from-file=ldapserver.key=./ldapserver.key

4.2 创建Service

[root@master01 ldap]# cat 01-openldap-service.yml
apiVersion: v1
kind: Service
metadata:name: openldap-svcnamespace: default
spec:type: ClusterIPselector:app: openldapports:- name: ldapport: 389targetPort: 389- name: ldapsport: 636targetPort: 636

4.3 创建StatefulSet

1、 OpenLDAP 需要挂载⾃签名的证书⽂件(包括 CA 证书、服务端证书和私钥),路径为 /container/service/slapd/assets/certs 。

2、 OpenLDAP 的运⾏配置⽬录 /etc/ldap/slapd.d 和数据⽬录 /var/lib/ldap 需要持久化,确保重启或重新调度 Pod 时数据不会丢失。

3、OpenLDAP启动需要传递对应的环境变量

  • 3.1、组织名称: LDAP_ORGANISATION
  • 3.2、LDAP 根域: LDAP_DOMAIN
  • 3.3、LDAP管理员⽤户与密码: LDAP_ADMIN_USERNAME、LDAP_ADMIN_PASSWORD
  • 3.4、是否启⽤ TLS(布尔值 true 或 false ) : LDAP_TLS
  • 3.5、CA 证书⽂件名称: LDAP_TLS_CA_CRT_FILENAME
  • 3.6、服务端证书⽂件名称: LDAP_TLS_CRT_FILENAME
  • 3.7、服务端私钥⽂件名称: LDAP_TLS_KEY_FILENAME
# 02-openldap-statefulset.yml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: openldap-servernamespace: default
spec:serviceName: "openldap-svc"replicas: 1selector:matchLabels:app: openldaptemplate:metadata:labels:app: openldapspec:# 默认的 TLS 挂载是只读的volumes:- name: ldap-tlssecret:secretName: ldap-certs# tls-write 目录用于可写副本- name: ldap-tls-writeemptyDir: {}# 初始化容器用于处理 TLS 证书挂载后无法进行 chown 操作initContainers:- name: copy-certsimage: uhub.service.ucloud.cn/oldxu/busybox:latestcommand: ["sh", "-c", "cp /tls/* /tls-write"]volumeMounts:- name: ldap-tlsmountPath: /tls/- name: ldap-tls-writemountPath: /tls-writecontainers:- name: openldapimage: uhub.service.ucloud.cn/oldxu/openldap:latestimagePullPolicy: Alwaysports:- name: ldapcontainerPort: 389- name: ldapscontainerPort: 636env:- name: LDAP_ORGANISATIONvalue: "oldxu"- name: LDAP_DOMAINvalue: "oldxu.net"- name: LDAP_ADMIN_USERNAMEvalue: "admin"- name: LDAP_ADMIN_PASSWORDvalue: "123456"- name: LDAP_TLSvalue: "true"- name: LDAP_TLS_CA_CRT_FILENAMEvalue: "ldapserver.crt"- name: LDAP_TLS_CRT_FILENAMEvalue: "ldapserver.crt"- name: LDAP_TLS_KEY_FILENAMEvalue: "ldapserver.key"volumeMounts:- name: ldap-tls-writemountPath: /container/service/slapd/assets/certs- name: ldap-datasubPath: configmountPath: /etc/ldap/slapd.d- name: ldap-datasubPath: datamountPath: /var/lib/ldapvolumeClaimTemplates:- metadata:name: ldap-dataspec:accessModes: ["ReadWriteOnce"]storageClassName: "nfs-provisioner-storage"resources:requests:storage: 2Gi

4.4 验证OpenLDAP

1、创建组织

kubectl exec -it openldap-server-0 -- sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=dev,dc=oldxu,dc=net
objectClass: organizationalUnit
objectClass: top
ou: dev
EOF'
kubectl exec -it openldap-server-0 -- sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=ops,dc=oldxu,dc=net
objectClass: organizationalUnit
objectClass: top
ou: ops
EOF'
kubectl exec -it openldap-server-0 -- sh -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=k8s,dc=oldxu,dc=net
objectClass: organizationalUnit
objectClass: top
ou: k8s
EOF'

2、验证结果

TLS查询,有延迟
kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapsearch -x -LLL -H ldaps://openldap-svc:636 -b "dc=oldxu,dc=net" -D "cn=admin,dc=oldxu,dcnet" -w "123456"'
⾮TLS查询
kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapsearch -x -LLL -H ldap://openldap-svc:389 -b "dc=oldxu,dc=net" -D "cn=admin,dc=oldxu,dc=net" -w "123456"'

4.5 配置memberOf

1、查询默认的memberof

kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=config" -LLL -Q "(olcOverlay=*)"'

2、将默认的 groupOfUniqueNames 修改为 groupofNames

kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapmodify -Y EXTERNAL -H ldapi:/// <<EOF
dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
changetype: modify
replace: olcMemberOfGroupOC
olcMemberOfGroupOC: groupOfNames
-
replace: olcMemberOfMemberAD
olcMemberOfMemberAD: member
EOF'

3、创建ou

# app-users
kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=app-users,dc=oldxu,dc=net
objectClass: organizationalUnit
ou: app-users
EOF'
# app-groups
kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: ou=app-groups,dc=oldxu,dc=net
objectClass: organizationalUnit
ou: app-groups
EOF'

3、创建⽤户

# k8s
kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: uid=k8s,ou=app-users,dc=oldxu,dc=net
objectClass: inetOrgPerson
uid: k8s
cn: k8s
sn: App Server User
mail: k8s@qq.com
userPassword: k8s_password
EOF'
# oldxu
kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: uid=oldxu,ou=app-users,dc=oldxu,dc=net
objectClass: inetOrgPerson
uid: oldxu
cn: oldxu
sn: App Server User
mail: 2601988372@qq.com
userPassword: oldxu_password
EOF'

3、创建groupofnames组,并将⽤户加⼊组中

kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapadd -x -D cn=admin,dc=oldxu,dc=net -w 123456 <<EOF
dn: cn=k8s-group,ou=app-groups,dc=oldxu,dc=net
objectClass: groupOfNames
cn: k8s-group
member: uid=k8s,ou=app-users,dc=oldxu,dc=net
member: uid=oldxu,ou=app-users,dc=oldxu,dc=net
EOF'

4、验证结果

kubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapsearch -LLL -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 -b "dc=oldxu,dc=net" "(uid=oldxu)" memberof'
dn: uid=oldxu,ou=app-users,dc=oldxu,dc=net
memberOf: cn=k8s-group,ou=app-groups,dc=oldxu,dc=netkubectl exec -it openldap-server-0 -- /bin/bash -c 'ldapsearch -LLL -x -D "cn=admin,dc=oldxu,dc=net" -w 123456 -b "dc=oldxu,dc=net" "(uid=k8s)" memberof'
dn: uid=k8s,ou=app-users,dc=oldxu,dc=net
memberOf: cn=k8s-group,ou=app-groups,dc=oldxu,dc=net

5、Kubernetes部署phpldapadmin

5.1 部署phpldapadmin

1、创建deployment

[root@master01 ldap]# cat 03-phpldapadmin-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:name: phpldapadminnamespace: default
spec:replicas: 1selector:matchLabels:app: phpldapadmintemplate:metadata:labels:app: phpldapadminspec:containers:- name: phpldapadminimage: uhub.service.ucloud.cn/oldxu/phpldapadmin:latestports:- name: httpcontainerPort: 80env:- name: PHPLDAPADMIN_LDAP_HOSTSvalue: "openldap-svc" # 填写对应openldap的service- name: PHPLDAPADMIN_HTTPSvalue: "false"securityContext:privileged: true

5.2 发布phpldapadmin

1、创建service

[root@master01 ldap]# cat 04-phpldapadmin-service.yml
apiVersion: v1
kind: Service
metadata:name: phpldapadmin-svcnamespace: default
spec:selector:app: phpldapadmintype: ClusterIPports:- port: 80targetPort: 80# NodePort
apiVersion: v1
kind: Service
metadata:name: phpldapadmin-svcnamespace: default
spec:selector:app: phpldapadmintype: NodePortports:- port: 80targetPort: 80nodePort: 30080

2、创建Ingress

[root@master01 ldap]# cat 05-phpldapadmin-ingress.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: phpldapadmin-ingressnamespace: default
spec:ingressClassName: "nginx"rules:- host: "k8s-ldap.oldxu.net"http:paths:- path: /pathType: Prefixbackend:service:name: phpldapadmin-svcport:number: 80

5.3 访问phpldapadmin

1、配置好对应的域名解析,然后访问 http://k8s-ldap.oldxu.net ,输⼊ 管理员⽤户与密码

  • 管理员⽤户: cn=admin,dc=oldxu,dc=net
  • 管理员密码: 123456

2、检查对应数据

6、Kubernetes部署Self-Service-Password

1、准备Self-Service-Password配置⽂件

[root@master01 ldap]# cat k8s-ssp.conf.php
<?php
// LDAP 配置
$ldap_url = "ldap://openldap-svc:389"; // LDAP 服务器地址(填写对应Service的地址即可)
$ldap_binddn = "cn=admin,dc=oldxu,dc=net"; // LDAP 管理员账户
$ldap_bindpw = "123456"; // LDAP 管理员密码
$ldap_base = "dc=oldxu,dc=net"; // LDAP 搜索基准
$ldap_login_attribute = "uid"; // ⽤户名字段(如 uid 或 cn)
$ldap_fullname_attribute = "cn"; // ⽤户全名字段
$ldap_filter = "(&(objectClass=person)(uid={login}))"; // ⽤户过滤器
// 邮件通知
$reset_url = "http://k8s-ssp.oldxu.net/"; // 重置密码的域名
$mail_address_use_ldap = true; // 从 LDAP 属性中获取邮件地址。
$mail_from = "572891887@qq.com"; // 发件⼈地址
$mail_from_name = "Self-Service Password"; // 发件⼈名称
$mail_smtp_host = "smtp.qq.com"; // SMTP 服务器地址
$mail_smtp_auth = true; // 启⽤ SMTP 身份验证
$mail_smtp_user = "572891887@qq.com"; // SMTP ⽤户名
$mail_smtp_pass = "jkgibvlqsepbbeic"; // SMTP 密码
$mail_smtp_port = 587; // SMTP 端⼝
$mail_smtp_secure = "tls"; // 使⽤ SSL 加密
$mail_smtp_autotls = true;
// 密码以加密⽅式显示
$hash = "SSHA";
// 加密密钥(必须设置)
$keyphrase = "oldxuedu_20990000"; // ⽤于加密敏感数据的密钥
?>

2、将配置⽂件加载为ConfigMap,并命名为 ssp-config

[root@master01 ldap]# kubectl create configmap ssp-config --from-file k8s-ssp.conf.php

6.2 部署Self-Service-Password

1、创建Deployment

[root@master01 ldap]# cat 06-ssp-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:name: sspnamespace: default
spec:replicas: 1selector:matchLabels:app: ssptemplate:metadata:labels:app: sspspec:volumes:- name: ssp-config-phpconfigMap:name: ssp-configcontainers:- name: self-service-passwordimage: uhub.service.ucloud.cn/oldxu/self-service-password:1.7ports:- name: httpcontainerPort: 80volumeMounts:- name: ssp-config-phpsubPath: k8s-ssp.conf.php # ConfigMap 的 Key 名称mountPath: /var/www/conf/config.inc.local.php # 挂载内容⾄容器对应的路径

6.3 发布Self-Service-Password

1、创建Service

[root@master01 ldap]# cat 07-ssp-service.yml
apiVersion: v1
kind: Service
metadata:name: ssp-svcnamespace: default
spec:selector:app: ssptype: ClusterIPports:- port: 80targetPort: 80

2、创建Ingress

[root@master01 ldap]# cat 08-ssp-ingress.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ssp-ingressnamespace: default
spec:ingressClassName: "nginx"rules:- host: "k8s-ssp.oldxu.net"http:paths:- path: /pathType: Prefixbackend:service:name: ssp-svcport:number: 80

6.4 访问Self-Service-Password

http://www.sczhlp.com/news/12428/

相关文章:

  • 优化索引和 SQL 语句
  • windows环境下安装kafka
  • DAY 37 早停策略和模型权重的保存 - 实践
  • SDIO SD卡电路设计全流程指南:从连接图到调试验证
  • OpenLDAP篇-OpenLDAP主从及高可用05
  • 普科差分探头PKDV5151助力客户完成高低压电机驱动波形测量
  • KMP算法字符串的匹配
  • 第五届机械制造与智能控制国际学术会议(ICMMIC 2025)
  • 开发手记(一)——Windows设置开机自启动后台服务
  • 新高一暑假集训随记2 - -MornStar
  • OpenLDAP篇-OpenLDAP管理进阶实践03
  • 2025CSP-S模拟赛35 比赛总结
  • [转]案例分享:windows不能在本地计算机启动iis admin service错误代码-2146893818
  • 笔记
  • ToDesk远程控制来袭,办公学习神器必备!
  • 智能合约迁移机制详解:从数据回收到新合约部署
  • 近期理工类学术会议推荐|电力系统、 智能控制、 人工智能、物理、可再生能源等EI会议合集
  • 在K8S中,PV 和 PVC有何作用?
  • 如何在最新版Chrome网页内嵌本地原生金山WPS Office?
  • 梦与现实 (关于如何处理梦-现实链接,现实-梦链接,梦-梦链接)
  • 伪排练:解决NLP灾难性遗忘的简易方案
  • 《战地6》公测遭遇33万次作弊!官方应对得非常好!
  • 通过Docker部署FRP实现内网穿透功能
  • 【IEEE出版】2025年数字化社会、信息科学与风险管理国际学术会议(ICDIR 2025)
  • 从封闭到开放:开源TTS应用引领文本转语音技术民主化浪潮
  • 基于PKDV508E高压差分探头的开关电源测试方案
  • 【IEEE出版】第四届可再生能源与电气科技国际学术会议(ICREET 2025)
  • 在K8S中,PV 生命周期内的有哪些阶段?
  • 在K8S中,CSI模型有哪些?
  • 第二天数据结构