背景:

要安装一系列的工具 ,如:jenkins spinnaker gitlab。账号系统是一件烦人的事情。前两年自己也试过openladap这样的统一账号管理认证。现在就想再用一下.把几个软件的账户系统整合一下(主要是想上spinnaker了)。搭建方式基本参照:https://mutoulazy.github.io/2021/04/01/kubernetes/openLDAP/#%E5%9C%A8k8s%E4%B8%AD%E9%83%A8%E7%BD%B2。不过这个哥们写的配置文件也比较乱,起码的pv,pvc应该先创建吧?yaml顺序整的杂七乱八的都是创建了服务后导出的…..,另外还有这里两个的可以参考:Kubernetes - - k8s - v1.12.3 OpenLDAP统一认证kubernetes实战(十一):k8s使用openLDAP统一认证
反正就结合这几个搞一下吧!

kubernetes 搭建openLDAP

1.创建pvc

默认存储cbs,直接使用了腾讯云的cbs块存储(最小10G的步长也是10G)

  1. cat <<EOF > pvc.yaml
  2. apiVersion: v1
  3. kind: PersistentVolumeClaim
  4. metadata:
  5. name: ldap-data-pvc
  6. namespace: kube-ops
  7. spec:
  8. accessModes:
  9. - ReadWriteOnce
  10. resources:
  11. requests:
  12. storage: 10Gi
  13. storageClassName: cbs
  14. ---
  15. apiVersion: v1
  16. kind: PersistentVolumeClaim
  17. metadata:
  18. name: ldap-config-pvc
  19. namespace: kube-ops
  20. spec:
  21. accessModes:
  22. - ReadWriteOnce
  23. resources:
  24. requests:
  25. storage: 10Gi
  26. storageClassName: cbs
  27. EOF
  28. kubectl apply -f pvc.yaml

d92f7059ef9153eef2c605f6de376ec.png

2. 创建ldap deployment svc服务

  1. cat <<EOF > ldap-deployment.yaml
  2. kind: Deployment
  3. apiVersion: apps/v1
  4. metadata:
  5. name: openldap
  6. namespace: kube-ops
  7. labels:
  8. app: openldap
  9. annotations:
  10. app.kubernetes.io/alias-name: LDAP
  11. app.kubernetes.io/description: 认证中心
  12. spec:
  13. replicas: 1
  14. selector:
  15. matchLabels:
  16. app: openldap
  17. template:
  18. metadata:
  19. labels:
  20. app: openldap
  21. spec:
  22. containers:
  23. - name: openldap
  24. image: 'osixia/openldap:1.5.0'
  25. ports:
  26. - name: tcp-389
  27. containerPort: 389
  28. protocol: TCP
  29. - name: tcp-636
  30. containerPort: 636
  31. protocol: TCP
  32. env:
  33. - name: LDAP_ORGANISATION
  34. value: devops
  35. - name: LDAP_DOMAIN
  36. value: xxx.com
  37. - name: LDAP_ADMIN_PASSWORD
  38. value: xxxxxxxx
  39. - name: LDAP_CONFIG_PASSWORD
  40. value: xxxxxxx
  41. - name: LDAP_BACKEND
  42. value: mdb
  43. resources:
  44. limits:
  45. cpu: 500m
  46. memory: 500Mi
  47. requests:
  48. cpu: 100m
  49. memory: 100Mi
  50. volumeMounts:
  51. - name: ldap-config-pvc
  52. mountPath: /etc/ldap/slapd.d
  53. - name: ldap-data-pvc
  54. mountPath: /var/lib/ldap
  55. volumes:
  56. - name: ldap-config-pvc
  57. persistentVolumeClaim:
  58. claimName: ldap-config-pvc
  59. - name: ldap-data-pvc
  60. persistentVolumeClaim:
  61. claimName: ldap-data-pvc
  62. ---
  63. apiVersion: v1
  64. kind: Service
  65. metadata:
  66. name: openldap-svc
  67. namespace: kube-ops
  68. labels:
  69. app: openldap-svc
  70. spec:
  71. ports:
  72. - name: tcp-389
  73. port: 389
  74. protocol: TCP
  75. targetPort: 389
  76. - name: tcp-636
  77. port: 636
  78. protocol: TCP
  79. targetPort: 636
  80. selector:
  81. app: openldap
  82. EOF
  83. kubectl apply -f ldap-deployment.yaml

image.png

  1. logs -f openldap-6d9859cdb-944pp -n kube-ops

Kuberneters 搭建openLDAP - 图4

3.创建phpldap deployments svc服务

  1. cat <<EOF > ldap-phpldapadmin.yaml
  2. kind: Deployment
  3. apiVersion: apps/v1
  4. metadata:
  5. name: ldap-phpldapadmin
  6. namespace: kube-ops
  7. labels:
  8. app: ldap-phpldapadmin
  9. annotations:
  10. app.kubernetes.io/alias-name: LDAP
  11. app.kubernetes.io/description: LDAP在线工具
  12. spec:
  13. replicas: 1
  14. selector:
  15. matchLabels:
  16. app: ldap-phpldapadmin
  17. template:
  18. metadata:
  19. labels:
  20. app: ldap-phpldapadmin
  21. spec:
  22. containers:
  23. - name: phpldapadmin
  24. image: 'osixia/phpldapadmin:stable'
  25. ports:
  26. - name: tcp-80
  27. containerPort: 80
  28. protocol: TCP
  29. env:
  30. - name: PHPLDAPADMIN_HTTPS
  31. value: 'false'
  32. - name: PHPLDAPADMIN_LDAP_HOSTS
  33. value: openldap-svc
  34. resources:
  35. limits:
  36. cpu: 500m
  37. memory: 500Mi
  38. requests:
  39. cpu: 10m
  40. memory: 10Mi
  41. ---
  42. apiVersion: v1
  43. kind: Service
  44. metadata:
  45. name: ldap-phpldapadmin-svc
  46. namespace: kube-ops
  47. labels:
  48. app: ldap-phpldapadmin-svc
  49. spec:
  50. ports:
  51. - name: tcp-80
  52. port: 80
  53. protocol: TCP
  54. targetPort: 80
  55. selector:
  56. app: ldap-phpldapadmin
  57. EOF
  58. kubectl apply -f ldap-phpldapadmin.yaml

6664a1c3e8ca504d0be4604c53e26f0.png

  1. kubectl get svc -n kube-ops

image.png

4. 创建ingress 代理

  1. cat <<EOF > traefik-ldap.yaml
  2. apiVersion: networking.k8s.io/v1
  3. kind: Ingress
  4. metadata:
  5. name: ldap-ui
  6. namespace: kube-ops
  7. annotations:
  8. kubernetes.io/ingress.class: traefik
  9. traefik.ingress.kubernetes.io/router.entrypoints: web
  10. spec:
  11. rules:
  12. - host: ldap.xxx.com
  13. http:
  14. paths:
  15. - pathType: Prefix
  16. path: /
  17. backend:
  18. service:
  19. name: ldap-phpldapadmin-svc
  20. port:
  21. number: 80
  22. EOF
  23. kubectl apply -f traefik-ldap.yaml

5. 验证

登陆 https://ldap.xxxx.com

Login DN:

cn=admin,dc=xxx,dc=com
Password:
系统变量中的:LDAP_ADMIN_PASSWORD

image.png
深深的感受到了远古页面的感觉:
image.png
先整到这里 ,然后测试一下spinnaker集成。快一年没有搞了,整通了一起测试写一下spinnaker jenkins等应用的集成!