• Gitlab部署

    仓库设置

    1. 本地添加远程仓库

      helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
      
    2. 更新本地仓库信息

      helm repo update 
      

    部署Gitlab

    启用持久化存储请执行提前创建所对应的物理目录,PV和PVC可使用以下语句进行创建;可在部署命令中添加--debug --dry-run参数,进行渲染预览不进行部署。

    创建mysql所需PV和PVC

    helm install c7n/create-pv \
        --set type=nfs \
        --set pv.name=gitlab-mysql-pv \
        --set nfs.path=/u01/io-choerodon/gitlab/mysql \
        --set nfs.server=nfs.example.choerodon.io \
        --set pvc.name=gitlab-mysql-pvc \
        --set size=3Gi \
        --set accessModes={ReadWriteOnce} \
        --name gitlab-mysql-pv --namespace=choerodon-devops-prod
    

    部署mysql

    helm install c7n/mysql \
        --set persistence.enabled=true \
        --set persistence.existingClaim=gitlab-mysql-pvc \
        --set env.open.MYSQL_ROOT_PASSWORD=password \
        --set service.port=3306 \
        --name=gitlab-mysql --namespace=choerodon-devops-prod
    

    创建数据库

    部署gitlab所需Redis

    helm install c7n/redis --name=gitlab-redis --namespace=choerodon-devops-prod
    

    创建gitlab所需PV和PVC

    helm install c7n/create-pv \
        --set type=nfs \
        --set pv.name=gitlab-pv \
        --set nfs.path=/u01/io-choerodon/gitlab/data \
        --set nfs.server=nfs.example.choerodon.io \
        --set pvc.name=gitlab-pvc \
        --set size=3Gi \
        --set accessModes={ReadWriteOnce} \
        --name gitlab-pv --namespace=choerodon-devops-prod
    

    部署gitlab

    参数GITLAB_EXTERNAL_URL和ingress.hosts[]这两个地址的域名必须一致,但写法不能一样,GITLAB_EXTERNAL_URL必须写上http://前缀,ingress.hosts[]不能带上http://前缀,这两个参数使用的地方是不同的GITLAB_EXTERNAL_URL是Gitlab内置参数,ingress.hosts[]是创建k8s中ingress对象所要使用的。
    helm install c7n/gitlab \
        --set persistence.enabled=true \
        --set persistence.existingClaim=gitlab-pvc \
        --set env.config.GITLAB_EXTERNAL_URL=http://gitlab.example.choerodon.io \
        --set env.config.GITLAB_TIMEZONE=Asia/Shanghai \
        --set env.config.CHOERODON_OMNIAUTH_ENABLED=false \
        --set env.config.GITLAB_DEFAULT_CAN_CREATE_GROUP=true \
        --set env.config.MYSQL_HOST=gitlab-mysql \
        --set env.config.MYSQL_PORT=3306 \
        --set env.config.MYSQL_USERNAME=gitlab \
        --set env.config.MYSQL_PASSWORD=password \
        --set env.config.MYSQL_DATABASE=gitlabhq_production \
        --set env.config.REDIS_HOST=gitlab-redis \
        --set env.config.REDIS_PORT=6379 \
        --set env.config.SMTP_ENABLE=true \
        --set env.config.SMTP_ADDRESS=smtp.mxhichina.com \
        --set env.config.SMTP_PORT=465 \
        --set env.config.SMTP_USER_NAME=git.sys@example.com \
        --set env.config.SMTP_PASSWORD=password \
        --set env.config.SMTP_DOMAIN=smtp.mxhichina.com \
        --set env.config.SMTP_AUTHENTICATION=login \
        --set env.config.GITLAB_EMAIL_FROM=git.sys@example.com \
        --set env.config.SMTP_ENABLE_STARTTLS_AUTO=true \
        --set env.config.SMTP_TLS=true \
        --set env.config.PROMETHEUS_ENABLE=false \
        --set env.config.NODE_EXPORTER_ENABLE=false \
        --set service.enabled=true \
        --set ingress.enabled=true \
        --set ingress.hosts={gitlab.example.choerodon.io} \
        --name=gitlab --namespace=choerodon-devops-prod 
    

    验证部署

    启用SSH协议

    必须开启SSH协议功能

    修改节点SSH默认端口

    CentOS各发行版中SSH端口默认为22,为了开启Gitlab的SSH需要修改掉默认的22端口号。

    Gitlab需要绑定22端口,所以需要更换SSH端口为非22端口,否则Choerodon的持续部署将无法正常使用。

    如果您启用了防火墙iptables或者安全组,那么必须先添加新开的SSH端口

    添加Gitlab SSH Service

    1. 确认Gitlab版本

      • 登录Gitlab
      • 访问http://gitlab.example.choerodon.io/help页面查看版本号。
    2. 在Master节点新建gitlab-ssh-svc.yml文件,按版本号添加以下信息:

      • 版本号为GitLab Community Edition 10.*.*,添加以下信息:

        apiVersion: v1
        kind: Service
        metadata:
          name: gitlab-ssh
          namespace: choerodon-devops-prod
        spec:
          externalIPs:
          - 192.168.1.1 #请修改这里的IP为第一步设置SSH端口号的节点IP
          ports:
          - name: http
            port: 22
            protocol: TCP
            targetPort: 22
          selector:
              app: gitlab
        
      • 版本号为GitLab Community Edition 11.*.*,添加以下信息:

        apiVersion: v1
        kind: Service
        metadata:
          name: gitlab-ssh
          namespace: choerodon-devops-prod
        spec:
          externalIPs:
          - 192.168.1.1 #请修改这里的IP为第一步设置SSH端口号的节点IP
          ports:
          - name: http
            port: 22
            protocol: TCP
            targetPort: 22
          selector:
              choerodon.io/infra: gitlab
        
    3. 使Gitlab SSH Service生效

    kubectl apply -f gitlab-ssh-svc.yml
    

    域名映射

    你需要在DNS运营商提供的控制面板上添加一条Gitlab域名与第一步设置SSH端口号的节点IP的记录。

    克隆模板仓库

    1. 克隆该组织下所有仓库

      https://code.choerodon.com.cn/app_template
      
    2. 推送到搭建的Gitlab中(下面语句请注意替换相应值)

      请不要修改仓库组织名称和仓库名称,这里的app_template就是仓库组织名称,***为仓库名称,只修改域名gitlab.example.choerodon.io。
      git remote set-url origin http://gitlab.example.choerodon.io/app_template/***.git
      git push origin master:master
      

    Gitlab数据库优化

    配置Choerodon Oauth认证

    • 以下操作须将Choerodon搭建完成后再继续进行,若未搭建,请跳过。
    • 配置Choerodon的Oauth认证后Gitlab的root用户是无法再通过界面进行登录的了。
    如标题所描述,进行此步配置就是使用Choerodon的Oauth认证进行登陆Gitlab。这是Gitlab与Choerodon进行整合的必要操作。

    更新Gitlab配置

    helm upgrade gitlab c7n/gitlab \
        -f <(helm get values gitlab) \
        --set env.config.CHOERODON_OMNIAUTH_ENABLED=true \
        --set env.config.OMNIAUTH_AUTO_SIGN_IN_WITH_PROVIDER=oauth2_generic \
        --set env.config.OMNIAUTH_BLOCK_AUTO_CREATED_USERS=false \
        --set env.config.CHOERODON_API_URL=http://api.example.choerodon.io \
        --set env.config.CHOERODON_CLIENT_ID=gitlab \
        --namespace=choerodon-devops-prod 
    

    添加Gitlab Client

    添加外部用户关联

    验证更新