• kubernetes实战(十二):k8s使用helm持久化部署redmine集成openLDAP


    1、基本概念

      此次安装的有Jenkins、Gitlab、Redmine,我公司目前使用的是独立于k8s集群之外单独部署的Jenkins等服务,此文章会介绍三种服务基于k8s的部署方式,之后集成之前部署的openLDAP实现统一认证。之后将进行简单持续集成持续部署的演示,最后再结合我公司的项目进行实战操作,应付出现的各种使用场景。

    2、使用Helm安装redmine

    [root@k8s-master01 ci]# git clone https://github.com/dotbalo/helm.git
    [root@k8s-master01 ci]# cd redmine/redmine/

      更改values.yaml相关配置,也可以通过--set设置

    redmineUsername:可选,默认为user
    redminePassword:可选
    redmineEmail:用于项目通知
    smtpHost: smtp.xxx.com
    smtpPort: 465
    smtpUser: dukuan@xxx.com
    smtpPassword: xxx
    smtpTls: true
    serviceType: ClusterIP
    # 修改mariadb的storageClass: "gluster-heketi",使用gfs动态存储

       注意:redmine的持久化使用的nfs

      创建redmine的pv

    [root@k8s-master01 redmine]# kubectl create -f redmine.pv

      安装redmine

    helm install --name redmine .  --debug --namespace public-service

      安装成功后如下:

    NOTES:
    1. Get the Redmine URL:
    
      NOTE: It may take a few minutes for the LoadBalancer IP to be available.
            Watch the status with: 'kubectl get svc --namespace public-service -w redmine-redmine'
    
    
      export SERVICE_IP=$(kubectl get svc --namespace public-service redmine-redmine --template "{{index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}")
      echo http://$SERVICE_IP/
    
    2. Login with the following credentials
    
      echo Username: admin
      echo Password: $(kubectl get secret --namespace public-service redmine-redmine -o jsonpath="{dmine-password}" | base64 --decode)

       查看pods

    [root@k8s-master01 redmine]# kubectl get po -n public-service
    NAME                               READY     STATUS    RESTARTS   AGE
    redmine-mariadb-0                  1/1       Running   0          20m
    redmine-redmine-6995ddf776-s5zww   1/1       Running   0          20m

      创建ingress,也可以直接在values.yaml指定

    [root@k8s-master01 redmine]# kubectl create -f traefik-redmine.yaml

      访问redmine

      查看密码

    [root@k8s-master01 redmine]# kubectl get secret --namespace public-service redmine-redmine -o jsonpath={.data.redmine-password} | base64 --decode 
    7AOZGCVJOQ

     2.1 redmine配置

      语言配置

      密码修改

      LDAP配置

       填写如下

      连接测试

    2.2 用户配置

      上述虽然勾选了即时生成用户,但是并未生成,所以需要创建与之对应的用户。注意:我采用的email认证,为了防止重名,如果使用用户名的话登录名属性填写uid。

      创建一个项目:DevItem

      创建dev组

      创建对应用户

      注意上述使用的mail认证方式,所以登录名为邮箱,如果采用uid则写cn的名字

      加入组和项目

      登录测试

    3、邮件测试

      点击发送测试邮件

    4、插件安装

      下载地址:http://www.redmineup.com/pages/plugins/agile

      将安装包解压并复制到redmine的插件目录,默认为/home/redmine/data/plugins

      获取到redmine的pv地址的path

    [root@k8s-master01 ~]# kubectl get pv | grep redmine
    pvc-f81dace8-fc4f-11e8-bf2f-000c298bf023   3Gi        RWO            Delete           Bound    public-service/data-redmine-mariadb-0              gluster-heketi              19h
    redmine-data                               4Gi        RWO            Recycle          Bound    public-service/redmine-redmine                     redmine-data                19h
    [root@k8s-master01 ~]# kubectl describe pv redmine-data
    Name:            redmine-data
    Labels:          <none>
    Annotations:     pv.kubernetes.io/bound-by-controller: yes
    Finalizers:      [kubernetes.io/pv-protection]
    StorageClass:    redmine-data
    Status:          Bound
    Claim:           public-service/redmine-redmine
    Reclaim Policy:  Recycle
    Access Modes:    RWO
    Capacity:        4Gi
    Node Affinity:   <none>
    Message:         
    Source:
        Type:      NFS (an NFS mount that lasts the lifetime of a pod)
        Server:    192.168.2.2
        Path:      /k8s/redmine
        ReadOnly:  false
    Events:        <none>

      挂载该path至宿主机

    [root@k8s-master01 ~]# mount -t nfs 192.168.2.2:/k8s/redmine /mnt/

      上次压缩包并解压

    [root@k8s-master01 plugins]# unzip redmine_agile-1_4_7-light.zip
    [root@k8s-master01 plugins]# rm -f redmine_agile-1_4_7-light.zip 
    [root@k8s-master01 plugins]# pwd
    /mnt/plugins

      重启redmine即可,其他插件安装方式相同

    赞助作者:

      

  • 相关阅读:
    尴尬的事情又发生Newtonsoft.Json vs Protobuf.net
    python的多线程到底有没有用?
    Python中单线程、多线程和多进程的效率对比实验
    Python 一篇学会多线程
    Python中threading的join和setDaemon的区别及用法
    Python 函数定义以及参数传递
    python的thread和threading区别
    mod_python
    Maven 入门
    微信开发 没有认证过的服务号怎么办?微信提供了測试号(开通了认证过的服务号的功能)
  • 原文地址:https://www.cnblogs.com/dukuan/p/10020266.html
Copyright © 2020-2023  润新知