接入 LDAP / AD 域账号(Beta)

如果您的企业使用 LDAP 作为用户认证系统,您可以在 KubeSphere 中通过脚本配置内置的 OpenLDAP 接入您的 LDAP 用户系统,从而允许用户使用他们的 LDAP 账号来登录 KubeSphere 控制台。

以下将说明 KubeSphere 如何接入 AD 域账号,同样适用于对接外部 LDAP。

说明:本方法将通过后台脚本接入,3.0 版本将支持在 UI 通过更简单的配置方式来接入 LDAP / AD 域账号。

查看 AD 域

在 windows server 2016 上,进入 Active Director 管理中心,获取 managerDN (可以是只读账号)

接入 LDAP / AD 域账号(Beta) - 图1

创建并编辑脚本

登陆 KubeSphere 后台节点,创建一个 inject-ks-account.sh 的脚本,然后修改脚本中 host、managerDN、managerPWD、userSearchBase 这四个配置为您 AD 域实际的参数:

  1. #!/bin/bash
  2. set -e
  3. host="139.198.111.111:30222" # 将 host 的值改为实际的服务器 IP 与 端口
  4. managerDN="cn=Administrator,cn=Users,dc=kubesphere,dc=com" # 值修改为实际的 AD 域的管理账号, 可以为只读账号
  5. managerPWD="123456789" # 管理账号密码
  6. userSearchBase="cn=Users,dc=kubesphere,dc=com" # 根据实际配置进行修改
  7. sidecar="kubespheredev/ad-sidecar:v0.0.1"
  8. generate_config() {
  9. cat << EOF
  10. apiVersion: v1
  11. data:
  12. sync.yaml: |
  13. sync:
  14. interval: "300s"
  15. src:
  16. host: "${host}"
  17. managerDN: "${managerDN}"
  18. managerPWD: "${managerPWD}"
  19. userSearchBase: "${userSearchBase}"
  20. usernameAttribute: "sAMAccountName"
  21. descriptionAttribute: "description"
  22. mailAttribute: "mail"
  23. dst:
  24. host: "openldap.kubesphere-system.svc:389"
  25. managerDN: "cn=admin,dc=kubesphere,dc=io"
  26. managerPWD: "admin"
  27. userSearchBase: "ou=Users,dc=kubesphere,dc=io"
  28. kind: ConfigMap
  29. metadata:
  30. name: ad-sync-config
  31. namespace: kubesphere-system
  32. EOF
  33. }
  34. # apply sync config
  35. generate_config | kubectl apply -f -
  36. # inject sidecar
  37. kubectl -n kubesphere-system get deploy ks-account -o json | jq '.spec.template.spec.volumes += [{"configMap":{"name":"ad-sync-config"},"name":"ad-sync-config"}]' | jq '.spec.template.spec.containers += [{"command":["ad-sidecar","--logtostderr=true","--v=2"],"image":"'${sidecar}'","imagePullPolicy":"IfNotPresent","name":"ad-sidecar","ports":[{"containerPort":19090,"protocol":"TCP"}],"volumeMounts":[{"mountPath":"/etc/kubesphere/sync.yaml","name":"ad-sync-config","subPath":"sync.yaml"}]}]' | kubectl apply -f -
  38. # use proxy port
  39. kubectl -n kubesphere-system get svc ks-account -o json | jq '.spec.ports[0].targetPort=19090' | kubectl apply -f -

执行脚本并验证账号接入

创建完成后,后台执行 inject-ks-account.sh

该脚本会重启 ks-account 的 Pod,会有短暂几分钟账号无法登陆。待 ks-account 的 pod 就绪后, 登录 KubeSphere 可以看到 AD 中的账户数据:

接入 LDAP / AD 域账号(Beta) - 图2

接入的账号默认无任何权限,需要在平台的用户管理页面给接入的用户授予角色。当接入的账号授予集群角色后,即可用 AD 域中的账户登录 KubeSphere。