006_部署ldap

简介: 006_部署ldap

专注方向:

自动化流程服务

it咨询

it在线教学

介绍

https://www.openldap.org/doc/admin25/intro.html

1.3. When should I use LDAP?

This is a very good question. In general, you should use a Directory server when you require data to be centrally managed, stored and accessible via standards based methods.


Some common examples found throughout the industry are, but not limited to:


Machine Authentication

User Authentication

User/System Groups

Address book

Organization Representation

Asset Tracking

Telephony Information Store

User resource management

E-mail address lookups

Application Configuration store

PBX Configuration store

etc…

参考

k8s\yamls\openldap\readme.md

镜像准备

host_ip=192.168.31.21
export  http_proxy="http://${host_ip}:7890"
export  https_proxy="http://${host_ip}:7890"
export  no_proxy="localhost,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local,my-cluster-endpoint.com"
# yeah, ctr can pull images with the env variable http_proxy, but crictl cannot~
ctr -n k8s.io images pull  docker.io/osixia/openldap:1.5.0
ctr -n k8s.io images pull  docker.io/osixia/phpldapadmin:0.9.0

部署服务

cd /git_proj/blogs/k8s/yamls/openldap
kubectl apply -f ldap-deployment.yaml
# namespace/openldap created
# service/ldap-service created
kubectl apply -f phpldapadmin-rc.yaml
kubectl -n openldap get pod
# NAME                            READY   STATUS    RESTARTS   AGE
# ldap-69d574ccfd-7mhpp           1/1     Running   0          30m
# phpldapadmin-controller-d8lkh   1/1     Running   0          49s
kubectl -n openldap get svc
# NAME                   TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
# ldap-service           NodePort   10.100.163.131   <none>        389:32743/TCP   30m
# phpldapadmin-service   NodePort   10.106.14.220    <none>        443:30472/TCP   46s
https://192.168.31.111:30472
# cn=admin,dc=example,dc=org
# admin

对外暴露 ingress

# 自制证书 (购买证书可以免去ssl认证)
mkdir -p /data/crt
cd /data/crt
HOST='ldap.dev.inner.ymk.com'
CERT_NAME='ldap-cert'
KEY_FILE='ldap.key'
CERT_FILE='ldap.crt'
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout ${KEY_FILE} -out ${CERT_FILE} -subj "/CN=${HOST}/O=${HOST}" -addext "subjectAltName = DNS:${HOST}"
kubectl -n openldap create secret tls ${CERT_NAME} --key ${KEY_FILE} --cert ${CERT_FILE}
cd /git_proj/blogs/k8s/yamls/openldap
kubectl apply -f ingress-resource.yaml
kubectl -n openldap get ingress
# NAME               CLASS   HOSTS   ADDRESS   PORTS   AGE
# openldap-ingress   nginx   *                 80      4s
# 详细信息
kubectl describe -n openldap ingress openldap-ingress
# 访问
https://ldap.dev.inner.ymk.com

rewrite error

重定向会导致

Your browser sent a request that this server could not understand.

Reason: You’re speaking plain HTTP to an SSL-enabled server port.

Instead use the HTTPS scheme to access this URL, please.

解决方案

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#ssl-passthrough


ingress-controller 修改启动参数


k8s\deploy\config\ingress\deploy.yaml:444

args 添加 --enable-ssl-passthrough

然后修改 ingress resource 添加 annotations: ssl-passthrough: “true”

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: openldap
  name: openldap-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"

ldap-deployment.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: openldap
  labels:
    name: openldap
---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: openldap
  name: ldap
  labels:
    app: ldap
spec:
  selector:
    matchLabels:
      app: ldap
  replicas: 1
  template:
    metadata:
      labels:
        app: ldap
    spec:
      containers:
        - name: ldap
          image: osixia/openldap:1.5.0
          volumeMounts:
            - name: ldap-data
              mountPath: /var/lib/ldap
            - name: ldap-config
              mountPath: /etc/ldap/slapd.d
            - name: ldap-certs
              mountPath: /container/service/slapd/assets/certs
          ports:
            - containerPort: 389
              name: openldap
          env:
            - name: LDAP_LOG_LEVEL
              value: "256"
            - name: LDAP_ORGANISATION
              value: "Example Inc."
            - name: LDAP_DOMAIN
              value: "example.org"
            - name: LDAP_ADMIN_PASSWORD
              value: "admin"
            - name: LDAP_CONFIG_PASSWORD
              value: "config"
            - name: LDAP_BACKEND
              value: "mdb"
            - name: LDAP_TLS
              value: "true"
            - name: LDAP_TLS_ENFORCE
              value: "false"
      volumes:
        - name: ldap-data
          hostPath:
            path: "/data/ldap/db"
        - name: ldap-config
          hostPath:
            path: "/data/ldap/config"
        - name: ldap-certs
          hostPath:
            path: "/data/ldap/certs"
---
apiVersion: v1
kind: Service
metadata:
  namespace: openldap
  labels:
    app: ldap
  name: ldap-service
spec:
  type: NodePort
  ports:
    - port: 389
  selector:
    app: ldap

phpldapadmin-rc.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: openldap
  labels:
    name: openldap
---
apiVersion: v1
kind: ReplicationController
metadata:
  namespace: openldap
  name: phpldapadmin-controller
  labels:
    app: phpldapadmin
spec:
  replicas: 1
  selector:
    app: phpldapadmin
  template:
    metadata:
      labels:
        app: phpldapadmin
    spec:
      containers:
        - name: phpldapadmin
          image: osixia/phpldapadmin:0.9.0
          volumeMounts:
            - name: phpldapadmin-certs
              mountPath: /container/service/phpldapadmin/assets/apache2/certs
            - name: ldap-client-certs
              mountPath: /container/service/ldap-client/assets/certs
          ports:
            - containerPort: 443
          env:
            - name: PHPLDAPADMIN_LDAP_HOSTS
              value: "ldap-service"
            - name: PHPLDAPADMIN_SERVER_ADMIN
              value: "webmaster@example.org"
            - name: PHPLDAPADMIN_SERVER_PATH
              value: "/phpldapadmin"
            - name: PHPLDAPADMIN_HTTPS
              value: "true"
            - name: PHPLDAPADMIN_LDAP_CLIENT_TLS
              value: "true"
      volumes:
        - name: phpldapadmin-certs
          hostPath:
            path: "/data/phpldapadmin/ssl/"
        - name: ldap-client-certs
          hostPath:
            path: "/data/phpldapadmin/ldap-client-certs/"
---
apiVersion: v1
kind: Service
metadata:
  namespace: openldap
  labels:
    app: phpldapadmin
  name: phpldapadmin
spec:
  type: NodePort
  ports:
    - port: 443
  selector:
    app: phpldapadmin

ingress-resource.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: openldap
  name: openldap-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - ldap.dev.inner.ymk.com
    secretName: ldap-cert
  rules:
  - host: ldap.dev.inner.ymk.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: phpldapadmin
            port:
              number: 443
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 运维 Kubernetes
在k8s上安装Harbor
在k8s上安装Harbor
802 0
Mgo
|
存储 SQL Kubernetes
可观测性革命 - 揭秘OpenObserve开源高性能云原生平台
本文分析OpenObserve 以及其在可观测性方面如何帮助您构建更好的软件并节省观测成本
Mgo
2112 0
|
Kubernetes 网络协议 网络安全
使用cert-manager给阿里云的DNS域名授权SSL证书
背景介绍cert-manager是Kubernetes上一个管理SSL证书的插件,配合nginx-ingress可以对网站配置https访问,在加上letsencrypt提供免费的SSL证书,所有就产生了cert-manager+nginx-ingress+letsencrypt的免费套餐。
8949 0
|
算法 安全 应用服务中间件
ECC+RSA双证书解决方案
ECC+RSA双算法SSL证书的配置方法
1737 0
|
4月前
|
弹性计算 关系型数据库 定位技术
阿里云服务器【地域】如何选择?哪个地域速度快?
选择阿里云服务器地域时,应综合考虑用户地理位置、网络延迟、资源互通、备案要求及预算等因素。用户与服务器距离越近,访问速度越快,如北方用户选北京,南方用户选深圳或广州。多产品需内网互通时应选同一地域,并注意不同地域价格差异及备案要求。参考官方文档优化选择,提升性能与体验。
435 6
|
前端开发 NoSQL 关系型数据库
Nightingale——V6版本部署
Nightingale——V6版本部署
316 1
|
Python
python字符串的拼接和拆分,看这一篇就够了
python字符串的拼接和拆分,看这一篇就够了
403 0
|
消息中间件 网络协议 Java
一文彻底理解BIO、NIO、AIO
一文彻底理解BIO、NIO、AIO
573 0
|
关系型数据库 MySQL 数据安全/隐私保护
问题:ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
问题:ERROR 1819 (HY000) Your password does not satisfy the current policy requirements
185 0
|
网络协议 Unix Linux
Linux命令(34)之lsof
Linux命令(34)之lsof
428 2

热门文章

最新文章