• Gitlab部署

    预备知识

    如果你不知道Gitlab是做什么的,那么请参考下面链接(包括但不限于)进行学习:

    仓库设置

    添加choerodon chart仓库并同步

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

    部署Gitlab

    部署mysql

    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
    
    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/persistentvolumeclaim \
        --set accessModes={ReadWriteOnce} \
        --set requests.storage=256Mi \
        --set storageClassName=nfs-provisioner \
        --version 0.1.0 \
        --name gitlab-redis-pvc \
        --namespace c7n-system
    
    helm install c7n/redis \
        --set persistence.enabled=true \
        --set persistence.existingClaim=gitlab-redis-pvc \
        --set service.enabled=true \
        --version 0.2.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.3.0 \
        --name gitlab \
        --namespace c7n-system
    

    验证部署

    启用SSH协议

    必须开启SSH协议功能

    修改Gitlab SSH Service

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

    验证是否启用成功

      kubectl get svc -n c7n-system gitlab-ssh
    

    出现类似内容即说明启用成功。

      NAMESPACE      NAME          TYPE        CLUSTER-IP      EXTERNAL-IP     PORT(S)    AGE
      gitlab         gitlab-ssh    ClusterIP   10.233.12.57    192.168.1.1     2289/TCP   1d
    

    配置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.3.0 \
        --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
    

    添加管理员用户关联

    执行完添加管理员用户关联步骤前请不要去Gitlab界面进行登录操作

    验证更新