• Gitlab部署

    仓库设置

    添加choerodon chart仓库并同步

    helm repo add c7n https://openchart.choerodon.com.cn/choerodon/c7n/
    helm repo update
    

    部署Gitlab

    创建mysql所需PV和PVC

    helm install c7n/persistentvolumeclaim \
        --set accessModes={ReadWriteOnce} \
        --set requests.storage=2Gi \
        --set storageClassName=nfs-provisioner \
        --version 0.1.0 \
        --name gitlab-mysql-pvc \
        --namespace c7n-system
    

    部署mysql

    helm install c7n/mysql \
        --set persistence.enabled=true \
        --set persistence.existingClaim=gitlab-mysql-pvc \
        --set env.MYSQL_ROOT_PASSWORD=password \
        --set env.MYSQL_DATABASE=gitlabhq_production \
        --set args="{--character-set-server=utf8mb4,--collation-server=utf8mb4_general_ci}" \
        --set config.innodb_large_prefix=1 \
        --set config.innodb_file_per_table=1 \
        --set config.innodb_file_format=Barracuda \
        --set config.log_bin_trust_function_creators=1 \
        --set service.enabled=ture \
        --version 0.1.0 \
        --name gitlab-mysql \
        --namespace c7n-system
    

    部署gitlab所需Redis

    helm install c7n/redis \
        --set service.enabled=true \
        --version 0.1.0 \
        --name gitlab-redis \
        --namespace c7n-system
    

    创建gitlab所需PV和PVC

    helm install c7n/persistentvolumeclaim \
        --set accessModes={ReadWriteOnce} \
        --set requests.storage=2Gi \
        --set storageClassName=nfs-provisioner \
        --version 0.1.0 \
        --name gitlab-pvc \
        --namespace c7n-system
    

    部署gitlab

    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.c7n-system.svc \
        --set env.config.MYSQL_USERNAME=root \
        --set env.config.MYSQL_PASSWORD=password \
        --set env.config.MYSQL_DATABASE=gitlabhq_production \
        --set env.config.REDIS_HOST=gitlab-redis.c7n-system.svc \
        --set env.config.SMTP_ENABLE=false \
        --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 \
        --version 0.2.1 \
        --name gitlab \
        --namespace c7n-system
    

    验证部署

    允许向本地网络发送hook请求

    Devops Service为了同步Gitlab相关数据,使用了Gitlab WebHook相关功能,请在Gitlab管理员界面 Settings 菜单中打开 Outbound requests 选项。

    启用SSH协议

    必须开启SSH协议功能

    修改节点SSH默认端口

    CentOS各发行版中SSH端口默认为22,为了开启Gitlab的SSH需要修改掉默认的22端口号。Gitlab需要绑定22端口,所以需要更换SSH端口为非22端口,否则Choerodon的持续部署将无法正常使用。

    1. 修改配置文件:/etc/ssh/sshd_config ,找到以下行:

      #port 22
      
    2. 先将Port 22前面的 # 号去掉,并另起一行。如定义SSH端口号为33322,自定义端口选择建议在万位的端口(如:10000-65535之间),则输入:

      Port 33322
      
    3. 修改完毕后,重启SSH服务,并退出当前连接的SSH端口。

      service sshd restart
      
    4. 重启完毕,尝试使用新端口登陆

    5. 若能正常访问,返回第一步,根据第二步的操作将原port 22整段注释或删掉,再按第三步重启SSH即可。

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

    修改Gitlab SSH Service

    域名映射

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

    配置Choerodon Oauth认证

    • 以下操作须将Choerodon搭建完成后再继续进行,若未搭建,请跳过。
    • 配置Choerodon的Oauth认证后Gitlab的root用户是无法再通过Gitlab自有的界面进行登录的了。
    如标题所描述,进行此步配置就是使用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 \
        --version 0.2.1 \
        --namespace c7n-system
    

    添加Gitlab Client

        helm install c7n/mysql-client \
            --set env.MYSQL_HOST=c7n-mysql.c7n-system.svc \
            --set env.MYSQL_PORT=3306 \
            --set env.MYSQL_USER=root \
            --set env.MYSQL_PASS=password \
            --set env.SQL_SCRIPT="\
                INSERT INTO iam_service.oauth_client ( \
                name\,organization_id\,resource_ids\,secret\,scope\,\
                authorized_grant_types\,web_server_redirect_uri\,\
                access_token_validity\,refresh_token_validity\,\
                additional_information\,auto_approve\,object_version_number\,\
                created_by\,creation_date\,last_updated_by\,last_update_date)\
                VALUES('gitlab'\,1\,'default'\,'secret'\,'default'\,\
                'password\,implicit\,client_credentials\,authorization_code\,refresh_token'\,\
                'http://gitlab.example.choerodon.io'\,3600\,3600\,'{}'\,'default'\,1\,0\,NOW()\,0\,NOW());" \
            --version 0.1.0 \
            --name gitlab-client \
            --namespace c7n-system
    

    验证更新

    添加管理员用户关联