kubernetes之LDAP

简介: 本文将介绍如何使用Helm在kubernetes 集群上搭建一个OpenLDAP服务

安装OpenLDAP

编写Helm values.yaml

编写我们需要修改的Helm values.yaml文件,将我们需要修改的字段信息增加到文件中,用来替换默认的字段

env:
  LDAP_ORGANISATION: "deamo Inc."
  LDAP_DOMAIN: "deamo.com"
  LDAP_BACKEND: "hdb"
  LDAP_TLS: "true"
  LDAP_TLS_ENFORCE: "false"
  LDAP_REMOVE_CONFIG_AFTER_SETUP: "true"
AI 代码解读

这里主要是修改了LDAP_DOMAIN(域名),和LDAP_ORGANISATION(公司名称),可以根据自己的需求进行修改。
因为各个Chart的版本values.yaml有所不同,需要留意一下,我的Chart版本如下:

[user@S01 /]# helm search  stable/openldap
NAME               CHART VERSION    APP VERSION    DESCRIPTION                     
stable/openldap        1.1.0          2.4.47   Community developed LDAP software
AI 代码解读

接下来我们使用helm进行openldap进行安装

首先我们先进行repo更新,并查看openldap Chart最新版本

[user@S01 openldap]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "incubator" chart repository
...Successfully got an update from the "stable" chart repository
Update Complete.
[user@S01 /]# helm search  stable/openldap
NAME               CHART VERSION    APP VERSION    DESCRIPTION                     
stable/openldap        1.1.0          2.4.47   Community developed LDAP software
AI 代码解读

接下来进行openldap安装

[user@S01 ~]# helm install -n openldap --namespace default -f zb.yaml stable/openldap
NAME:   openldap
LAST DEPLOYED: Fri Aug 16 14:37:24 2019
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME          DATA  AGE
openldap-env  6     0s

==> v1/Pod(related)
NAME                       READY  STATUS             RESTARTS  AGE
openldap-858575df78-6kpgd  0/1    ContainerCreating  0         0s

==> v1/Secret
NAME      TYPE    DATA  AGE
openldap  Opaque  2     0s

==> v1/Service
NAME      TYPE       CLUSTER-IP      EXTERNAL-IP  PORT(S)          AGE
openldap  ClusterIP  10.109.187.113  <none>       389/TCP,636/TCP  0s

==> v1beta2/Deployment
NAME      READY  UP-TO-DATE  AVAILABLE  AGE
openldap  0/1    1           0          0s


NOTES:
OpenLDAP has been installed. You can access the server from within the k8s cluster using:

  openldap.default.svc.cluster.local:389


You can access the LDAP adminPassword and configPassword using:

  kubectl get secret --namespace default openldap -o jsonpath="{.data.LDAP_ADMIN_PASSWORD}" | base64 --decode; echo
  kubectl get secret --namespace default openldap -o jsonpath="{.data.LDAP_CONFIG_PASSWORD}" | base64 --decode; echo


You can access the LDAP service, from within the cluster (or with kubectl port-forward) with a command like (replace password and domain):
  ldapsearch -x -H ldap://openldap-service.default.svc.cluster.local:389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w $LDAP_ADMIN_PASSWORD


Test server health using Helm test:
  helm test openldap


You can also consider installing the helm chart for phpldapadmin to manage this instance of OpenLDAP, or install Apache Directory Studio, and connect using kubectl port-forward.
AI 代码解读

因admin密码是随机生成并使用base64进行了加密,所以我们可以根据helm安装提示获取openldap的admin密码

[user@S01 ~]# kubectl get secret --namespace default openldap -o jsonpath="{.data.LDAP_ADMIN_PASSWORD}" | base64 --decode; echo
B74G7RiwwSYXC8LRqAagNaqkDGcZ5RRL
AI 代码解读

验证openldap是否安装成功

输入一下命令查看openldap是否安装成功

[root@ZabbixServer01 ~]# helm list openldap
NAME        REVISION    UPDATED                     STATUS      CHART             APP VERSION    NAMESPACE
openldap    1           Fri Aug 16 14:37:24 2019    DEPLOYED    openldap-1.1.0    2.4.47         default
AI 代码解读

或者使用kubetl查看Pod的状态进行验证

[root@ZabbixServer01 ~]# kubectl get pods openldap-858575df78-6kpgd 
NAME                        READY   STATUS    RESTARTS   AGE
openldap-858575df78-6kpgd   1/1     Running   0          11m
AI 代码解读

STATUS为Running表示Pod运行正常

openldap端口开放和客户端连接

默认情况下openladp只能在kubernetes集群上通信,此处使用nodeport的方式进行端口开放
直接修改集群openldap service

[user@S01 ~]# kubectl get svc openldap 
NAME       TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)                   AGE
openldap   NodePort   10.109.187.113   <none>        389:389/TCP,636:636/TCP   50m

[user@S01 ~]# kubectl edit -n default svc openldap

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2019-08-16T06:37:24Z"
  labels:
    app: openldap
    chart: openldap-1.1.0
    heritage: Tiller
    release: openldap
  name: openldap
  namespace: default
  resourceVersion: "9925276"
  selfLink: /api/v1/namespaces/default/services/openldap
  uid: 4eb64b71-bff0-11e9-97d3-525400eeff5c
spec:
  clusterIP: 10.109.187.113
  ports:
  - name: ldap-port
    port: 389
    nodePort: 389
    protocol: TCP
    targetPort: ldap-port
  - name: ssl-ldap-port
    port: 636
    nodePort: 636
    protocol: TCP
    targetPort: ssl-ldap-port
  selector:
    app: openldap
    release: openldap
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
AI 代码解读

添加nodePort: 389 和nodePort: 636 并将type修改为NodePort ,默认情况下kubernetes开放的端口为30000-32768,需要开放其他端口需要修改kube-apiserver启动参数
查看主机端口开放情况

[user@S01 ~]# netstat -tnpl |grep :389
tcp6       0      0 :::389                  :::*                    LISTEN      5285/kube-proxy     
AI 代码解读

下载客户端:LdapAdmin
打开客户端进行连接:
LdapAdmin

  • 点击Start或者图标,弹出Connections页面
  • New connections添加一个新连接
  • 输入Connection name
  • 输入openldap Host IP或者域名(前提要域名能解释到Host IP)
  • 如果与Host连接正常,点击Fetch DNs会自动填充Base信息
  • 输入Username,如:cn=admin,dc=zb,dc=com Password为我们安装openldap时admin的密码
  • 点击Test connection,所有信息填写正确,会弹出提示框提示Connection is successful.
  • 点击OK进行保存使用客户端登陆到openldap后就可以进行OU和用户创建
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
打赏
0
0
0
0
34
分享
相关文章
NVIDIA GPU Operator分析一:NVIDIA驱动安装
背景我们知道,如果在Kubernetes中支持GPU设备调度,需要做如下的工作:节点上安装nvidia驱动节点上安装nvidia-docker集群部署gpu device plugin,用于为调度到该节点的pod分配GPU设备。除此之外,如果你需要监控集群GPU资源使用情况,你可能还需要安装DCCM exporter结合Prometheus输出GPU资源监控信息。要安装和管理这么多的组件,对于运维
5045 0
NVIDIA GPU Operator分析一:NVIDIA驱动安装
云原生|kubernetes|CKA真题解析-------(1-5题)
云原生|kubernetes|CKA真题解析-------(1-5题)
1007 0
将service类型由"ClusterIP"改为"NodePort"无法使用nodeip+端口访问服务解决方法.
将service类型由"ClusterIP"改为"NodePort"无法使用nodeip+端口访问服务解决方法.
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
【kubernetes】解决: kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = faile...
15137 0
containerd配置HTTP私仓
在240个字符内,以下是摘要: 在Ubuntu 22.04上,配置K8S基础环境后,安装Docker并设置镜像加速,接着部署私有的Harbor仓库(HTTP访问)。要将镜像推送到Harbor,需编辑Docker的`daemon.json`加入不安全注册表,然后重启服务。通过`docker login`、`docker tag`和`docker push`推送到Harbor。此外,配置`containerd`以信任Harbor的HTTP地址,更新`/etc/containerd/certs.d/`,重启服务后,使用`ctr`拉取和推送镜像至Harbor。
containerd配置HTTP私仓
Kubernetes 集群部署 NFS-Subdir-External-Provisioner 存储插件
Kubernetes 对 Pod 进行调度时,以当时集群中各节点的可用资源作为主要依据,自动选择某一个可用的节点,并将 Pod 分配到该节点上。在这种情况下,Pod 中容器数据的持久化如果存储在所在节点的磁盘上,就会产生不可预知的问题,例如,当 Pod 出现故障,Kubernetes 重新调度之后,Pod 所在的新节点上,并不存在上一次 Pod 运行时所在节点上的数
7577 3
Kubernetes 集群部署 NFS-Subdir-External-Provisioner 存储插件
阿里云服务器云盘有何区别?(ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘)
阿里云服务器云盘种类如何选?目前阿里云服务器有ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘可供选择,很多新手用户并不清楚他们之间的区别,也就不知道应该如何选择,因为不同的云盘在最大IOPS、最大吞吐量等性能上是有区别的,下面我们一起来他们之间的区别,这样就有助于我们选择适合自己需求的系统盘与存储盘了。
阿里云服务器云盘有何区别?(ESSD AutoPL、高效云盘、ESSD云盘、SSD云盘)
从零开始:Nexus私服搭建与Maven仓库配置的完全指南
从零开始:Nexus私服搭建与Maven仓库配置的完全指南
19020 7
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问