资讯专栏INFORMATION COLUMN

为OKD/Openshift集群配置OpenLDAP认证

mudiyouyou / 1186人阅读

摘要:镜像可先推送到私有仓库测试发现镜像有问题镜像以用户运行切换,赋权对参数做定制将创建域,组织名称为域管理员及管理员密码持久化存储,本例使用已创建好的存储系统,其支持动态提供。

前言

如同Linux操作系统安装完成后,管理员需为应用创建不同的用户,那么,K8S/OKD/Openshift集群同样也需如此,而在OKD/Openshift集群里,我们可集成OpenLDAP目录系统,方法如下所示。

OpenLDAP安装

本文使用helm安装openldap,首先将chars下载下来以方便查看:

git clone https://github.com/helm/charts

可选。镜像可先推送到私有仓库(PS:测试发现latest镜像有问题):

docker pull osixia/openldap:1.2.1
docker tag docker.io/osixia/openldap:1.2.1 okd-lr.zyl.io:5001/osixia/openldap:1.2.1
docker push okd-lr.zyl.io:5001/osixia/openldap:1.2.1

镜像以root用户运行(gosudo切换),赋权:

oc new-project auth-openshift
oc adm policy add-scc-to-user anyuid -z default

openldap char参数做定制:

cd charts/stable/openldap
cp values.yaml values_cs.yaml
vi values_cs.yaml
...

env:
  # LDAP将创建dc=zyl,dc=io域,组织名称为Zyl Inc.
  LDAP_ORGANISATION: "Zyl Inc."
  LDAP_DOMAIN: "zyl.io"
...

# Ldap域管理员(cn=admin,dc=zyl,dc=io)及config管理员(cn=admin,cn=config)密码
adminPassword: admin
configPassword: config

# 持久化存储,本例使用已创建好的glusterfs存储系统,其支持动态提供。
persistence:
  enabled: true
  storageClass: "glusterfs-app"
  accessMode: ReadWriteOnce
  size: 8Gi

执行helm命令安装:

helm install --name openldap -f values_cs.yaml .

Ldap启动后,创建了域dc=zyl,dc=iohdb管理员账户cn=admin,dc=zyl,dc=io。如下所示,在此域下创建用户与组信息:

% oc rsh deploy/openldap
% cat > users.ldif <
配置Master使用Ldap认证

OKD初始安装时若未配置openshift_master_identity_providers,则OKD默认使用如下认证,此认证方式允许任何用户登录集群。

% vi /etc/origin/master/master-config.yaml 
...
oauthConfig:
...
  identityProviders:
  - challenge: true
    login: true
    mappingMethod: claim
    name: allow_all
    provider:
      apiVersion: v1
      kind: AllowAllPasswordIdentityProvider
...

将所有Master配置的如下段删除:

  - challenge: true
    login: true
    mappingMethod: claim
    name: allow_all
    provider:
      apiVersion: v1
      kind: AllowAllPasswordIdentityProvider

替换为如下段:

  - challenge: true
    login: true
    mappingMethod: claim
    name: ldap_auth
    provider:
      apiVersion: v1
      attributes:
        email:
        - mail
        id:
        - dn
        name:
        - cn
        preferredUsername:
        - uid
      bindDN: cn=admin,dc=zyl,dc=io
      bindPassword: admin
      insecure: true
      kind: LDAPPasswordIdentityProvider
      url: ldap://openldap.auth-openshift.svc.cluster.local./ou=People,dc=zyl,dc=io?uid

注意:若启用TLS,即insecure: false,则需提供OpenLDAP的证书,如添加ca: my-ldap-ca.crt,而后将证书拷贝到Master上:/etc/origin/master/my-ldap-ca.crt

Ansible配置文件中的OSEv3.yaml加入以下段,避免升级时被还原回去。

##### Auth
openshift_master_identity_providers:
- name: ldap_auth
  challenge: true
  login: true
  kind: LDAPPasswordIdentityProvider
  bindDN: cn=admin,dc=zyl,dc=io
  bindPassword: admin
  url: ldap://openldap.auth-openshift.svc.cluster.local./ou=People,dc=zyl,dc=io?uid
  attributes:
    id: ["dn"]
    email: ["mail"]
    name: ["cn"]
    preferredUsername: ["uid"]
  insecure: true

而后分别重启Master节点:

master-restart api
master-restart controllers
oc get pod -n kube-system  
master-logs api api                   # 查看日志
master-logs controllers controllers
同步LDAP组信息到OKD

创建如下文件:

cat > rfc2307_config_user_defined.yaml <

执行如下命令同步:

% oc adm groups sync --sync-config=rfc2307_config_user_defined.yaml --confirm
group/zyl
group/admin
group/openshift_user
group/openshift_admin

openshift_admin作为管理员组、openshift_user为普通用户组,赋权:

oc adm policy add-cluster-role-to-group cluster-admin openshift_admin
oc adm policy add-cluster-role-to-group basic-user openshift_user

登录用户:

oc login -uadmin -pchangeme

用户登录后,OKD会生成自己的用户与LDAP对应:

% oc get groups
NAME              USERS
admin             admin
openshift_admin   admin
openshift_user    zyl
zyl               zyl                

% oc get users
NAME      UID                                    FULL NAME   IDENTITIES
admin     3c4ae0bf-338c-11e9-b2f8-52540042814f   admin       ldap_auth:uid=admin,ou=People,dc=zyl,dc=io

% oc get identities
NAME                                         IDP NAME    IDP USER NAME                      USER NAME   USER UID
ldap_auth:uid=admin,ou=People,dc=zyl,dc=io   ldap_auth   uid=admin,ou=People,dc=zyl,dc=io   admin       3c4ae0bf-338c-11e9-b2f8-52540042814f
参考文档

OpenLDAP Helm Chart:https://github.com/helm/chart...;

osixia/openldap:https://github.com/osixia/doc...;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33175.html

相关文章

  • OKD/Openshift集群配置OpenLDAP认证

    摘要:镜像可先推送到私有仓库测试发现镜像有问题镜像以用户运行切换,赋权对参数做定制将创建域,组织名称为域管理员及管理员密码持久化存储,本例使用已创建好的存储系统,其支持动态提供。 前言 如同Linux操作系统安装完成后,管理员需为应用创建不同的用户,那么,K8S/OKD/Openshift集群同样也需如此,而在OKD/Openshift集群里,我们可集成OpenLDAP目录系统,方法如下所示...

    gclove 评论0 收藏0
  • 堡垒跳板机实现——ldap配置

    摘要:进程由软件包提供,根据配置信息,与后端的认证服务器进行交互。 这是关于堡垒跳板机的第三篇文章,之前介绍了实现堡垒跳板机的整体三层架构 和 设计实现:堡垒跳板机整体架构堡垒跳板机架构实现 本篇介绍整个体系中的一个补充,对第三层ldap架构的实现的具体操作进行下记录。 整体目标 后端服务器数量日益增加,账号的数量也在不断增加,账号的统一管理变得尤为重要。结合堡垒机,主要针对服务器账号体系接...

    Charles 评论0 收藏0
  • LDAP部署统一认证机制以及phpldapadmin(Centos7环境)

    摘要:部署统一认证机制以及一简介由于公司内部系统剧增服务器太多每个系统服务器的账号都各不相同。所以决定采用的方式来一统用户统一认证。 LDAP部署统一认证机制以及phpldapadmin 一、LDAP简介 由于公司内部系统剧增,服务器太多,每个系统、服务器的账号都各不相同。所以决定采用LDAP的方式来一统Linux用户统一认证。背景随着团队人员、服务器增多,每台服务器的账号都独立管理,从而导...

    morgan 评论0 收藏0
  • LDAP部署统一认证机制以及phpldapadmin(Centos7环境)

    摘要:部署统一认证机制以及一简介由于公司内部系统剧增服务器太多每个系统服务器的账号都各不相同。所以决定采用的方式来一统用户统一认证。 LDAP部署统一认证机制以及phpldapadmin 一、LDAP简介 由于公司内部系统剧增,服务器太多,每个系统、服务器的账号都各不相同。所以决定采用LDAP的方式来一统Linux用户统一认证。背景随着团队人员、服务器增多,每台服务器的账号都独立管理,从而导...

    huayeluoliuhen 评论0 收藏0
  • 乐心医疗的 Kubernetes云平台建设实践

    摘要:宋体自年被开源以来,很快便成为了容器编排领域的标准。宋体年月,乐心医疗的第一个生产用集群正式上线。所以于年推出后,乐心医疗的运维团队在开会讨论之后一致决定尽快迁移到。Kubernetes 自 2014 年被 Google 开源以来,很快便成为了容器编排领域的标准。因其支持自动化部署、大规模可伸缩和容器化管理等天然优势,已经被广泛接纳。但由于 Kubernetes 本身的复杂性,也让很多企业的...

    testHs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<