• Gitlab 安装

    介绍 Gitlab 的安装和部署,Gitlab 作为 Choerodon 的代码托管库和分支管理工具。


    安装所需镜像及文件

    构建镜像

    在使用mysql作为gitlab的数据库时,需要自行安装mysql的依赖和驱动包,使用postgresql则无需构建镜像。进入devops-install-docs/devops/gitlab-ce目录,下文我们将以此目录进行讲解。

      # 在镜像仓库中已有也可直接pull
      docker build -t registry.saas.choerodon.com/tools/gitlab-ce:10.2.0-hand -f .
    

    创建数据库

      # 创建用户
      CREATE USER 'gitlab'@'%' IDENTIFIED BY '******';
      
      # 创建数据库并给gitlab用户授权:
      CREATE DATABASE gitlabhq_production DEFAULT CHARACTER SET utf8;
      GRANT ALL PRIVILEGES ON gitlabhq_production.* TO gitlab@'%';
      FLUSH PRIVILEGES;
    

    资源调整

    若集群各节点资源充足可跳过此步。 由于gitlab运行需要大量的资源并且要保证其稳定性,不受到其他pod的影响,这里专们调整一台节点部署,这里我们选择了node5(4c16g)

      # 首先给node5节点打上标签
      kubectl label nodes node5 gitlab="true"
      # 对选好的节点上的pod进行驱赶
      kubectl taint nodes node5 gitlab="true":NoSchedule
    
      # 查看kube-flannel和kube-proxy部署是否在此命名空间下
      kubectl get daemonset -n kube-system
      # 进行修改kube-flannel配置
      kubectl edit daemonset kube-flannel -n kube-system
      # 以下配置请配置在containers属性中,与containers的image属性平级
            tolerations:
            - effect: NoSchedule
              key: node-role.kubernetes.io/master
              operator: Exists
            - effect: NoSchedule
              operator: Exists
      
      # 进行修改kube-flannel配置
      kubectl edit daemonset kube-proxy -n kube-system
      # 以下配置请配置在containers属性中,与containers的image属性平级
            tolerations:
            - effect: NoSchedule
              key: node-role.kubernetes.io/master
              operator: Exists
            - effect: NoSchedule
              operator: Exists
    
      # 以下配置请配置在containers属性中,与containers的image属性平级
            nodeSelector:
              gitlab: "true"
            tolerations:
            - effect: NoSchedule
              key: gitlab
              operator: Exists
    
      # 以下配置请配置在containers属性中,与containers的image属性平级
            nodeSelector:
              gitlab: "true"
            tolerations:
            - effect: NoSchedule
              key: gitlab
              operator: Exists
    

    安装

    Redis

    gitlab

    重要: 当容器通过健康检查后,就可以通过域名进行访问了,第一次访问须设置root用户初始密码。若配合Devops平台使用,请进入管理界面创建用户名为SonarQube和Gitlab的两个用户并将其设置为admin用户,并生成私钥保存下来,后面的其他服务搭建会用到它。


    配置Gitlab

    重要: 此步须等待gitlab容器已运行成功健康检查通过且Hapcloud框架服务也可使用了才进行后续操作

    重要: 请认真阅读以下配置,修改参数后粘贴进/etc/gitlab/gitlab.rb文件中,若须其他配置请参考gitlab/gitlab.rb

      # 回调地址为gitlab将要访问的地址
      {
          "name": "digital_gitlab",
          "resourceIds": "default",
          "secret": "secret",
          "scope": "default",
          "authorizedGrantTypes": "password,implicit,client_credentials,authorization_code,refresh_token",
          "webServerRedirectUri": "http://git.************.com",
          "autoApprove": "default"
      }
    

    优化

    如果在gitlab中需要使用emoji图标(比如在issue、comment、merge request区域),那么需要做以下配置:

    首先,需要对数据库表编码和行类型进行转换,如果一开始创建表时就使用utf8mb4格式,会造成初始化时列的长度超出限制的错误(7674)。所以先使用utf8初始化完成后,再用sql进行转换。

    这样在gitlab里就可以使用emoji图标了。对于postgresql是可以直接使用utf8mb4编码的。而在mysql5.7中可以将ROW_FORMAT = "Dynamic"这一值设置为默认属性,因此可能不会遇到这个问题。