今日天气
  1. 博客/

使用 Docker 部署 Gitlab,及常用优化项的说明

·1417 字·3 分钟· ·
docker docker-compose devops gitlab centos7
Johny
作者
Johny
熟练的 云原生搬砖师
Table of Contents

环境说明及准备工作
#

  • 部署 Gitlab 版本说明:

    docker pull gitlab/gitlab-ce:13.10.2-ce.0
    

    提前拉取好镜像。

  • docker-compose 版本说明:

    docker-compose --version
    docker-compose version 1.18.0, build 8dd22a9
    
  • docker version: 19.03.9

创建 Docker-Compose 部署文件
#

Gitlab docker-compose.yaml 部署文件如下所示

mkdir -p /data/docker-compose/gitlab-ce 

cd /data/docker-compose/gitlab-ce # 配置文件注意保留,后续的维护多需要使用

cat docker-compose.yaml
version: '2'
services:
    gitlab:
      image: 'gitlab/gitlab-ce:13.10.2-ce.0'
      restart: always
      hostname: 'gitlab.treesir.pub'
      container_name: 'gitlab-ce'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://gitlab.treesir.pub'  # or protocol "https"
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          gitlab_rails['smtp_enable'] = true
          gitlab_rails['smtp_address'] = "smtp.qq.com"
          gitlab_rails['smtp_port'] = 465
          gitlab_rails['smtp_user_name'] = "sample@qq.com"
          gitlab_rails['smtp_password'] = "sample"
          gitlab_rails['smtp_authentication'] = "login"
          gitlab_rails['smtp_enable_starttls_auto'] = true
          gitlab_rails['smtp_tls'] = true
          gitlab_rails['gitlab_email_from'] = 'sample@qq.com'
      ports:
        - '18080:80'
      volumes:
        - /application/gitlab/config:/etc/gitlab
        - /application/gitlab/data:/var/opt/gitlab
        - /application/gitlab/logs:/var/log/gitlab
volumes:
    config:
    data:
    logs:

修改对应配置项中的 域名地址smtp信息,这里使用的 smtp地址信息为 QQemail的,获取方式可以参考 此方法

还有就是需要注意一下配置文件中的端口映射,这里将容器内的 80 端口映射到了 18080,原因是打算用 nginx 来配置代理使用,这样可以更加合理的利用80 or 443 这两个特殊端口,如果单独给这么一个服务难免有那么一些浪费。当然不是一定需要这样做,对端口没有特殊要求的话,也可以将端口直接映射到对应的 80 or 443 端口,这样配置相对简单,而且省去了后面的一系列的操作。

创建完配置文件后,我们进行一些启动容器的操作

docker-compose up -d

image-20210409163819513

等待几分钟后,我们测试访问一下对应的端口

Gitlab 中的默认用户是 root

image-20210409164819832

可以看到,服务现在已经启动完成。如果你那边访问出现问题,可以检测一下对应的容器日志。

docker logs -f --tail 100 gitlab-ce

添加使用 nginx 代理
#

image-20210409165223276

如上面图片所示,如你使用的容器端口映射不是使用 80,是无法直接 copy 这地址使用的,我们可以通过添加 反代解决,这里介绍如何使用 nginx 进行实现。

安装 nginx
#

yum install -y nginx*

这里使用 yum 进行直接安装

对应 nginx 配置文件如下所示

cat /etc/nginx/conf.d/gitlab.conf

upstream gitlab {
  server 192.168.8.110:18080;  # 如 nginx 和 gitlab在同一台机器上时,建议使用地址 "127.0.0.1"
}

server {
  listen 80;
  server_name gitlab.treesir.pub;
  location / {
    proxy_read_timeout      300;
    proxy_connect_timeout   300;
    proxy_redirect          off;

    proxy_set_header        Host                $http_host;
    proxy_set_header        X-Real-IP           $remote_addr;
    proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto   http;
    proxy_set_header        X-Frame-Options     SAMEORIGIN;
    proxy_pass http://gitlab ;
  }
}

#server {
#  listen 443 ssl;
#  server_name registry.example.com;
#
#  ssl on;
#  ssl_certificate /letsencrypt/fullchain.pem;
#  ssl_certificate_key /letsencrypt/privkey.pem;
#
#  location / {
#    proxy_read_timeout      300;
#    proxy_connect_timeout   300;
#    proxy_redirect          off;
#
#    proxy_set_header        Host                $http_host;
#    proxy_set_header        X-Real-IP           $remote_addr;
#    proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;
#    proxy_set_header        X-Forwarded-Proto   https;
#    proxy_set_header        X-Frame-Options     SAMEORIGIN;
#    proxy_pass http://gitlab;
#  }
#}

默认内网自己使用的话,对安全没有什么需求的话,可以只开启 http 协议,但是如果在公网的话,还是建议开启 https的。配置文件中有示例配置,打开注释即可进行使用,证书的话这里推荐 acme.sh 的免费证书。

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

nginx -s reload  # 重载生效

systemctl enable nginx # 设置 nginx 开机自启

更改 hosts 文件后,我们进行测试访问一下地址

更改 hosts文件 方法说明

image-20210409172159652

测试上传文件

image-20210409172547967

image-20210409172607523

可以看到,我们刚才 push 上传的 文件已经可以在 dashboard 中看到了。

优化项说明
#

这里的优化项指 关闭 Gitlab 中一些,默认开启了但是又没有什么用处的功能,自己更具实际情况进行选择关停即可,不是必选的操作

默认新建项目时 关闭 Auto DevOps
#

image-20210412150002697

开启网络钩子
#

与 Jenkins 进行集成时,需要用到 WebHook,这里我们需要将此处进行打开。

image-20210412150343435

接口请求限制
#

开启后,可有效避免 cc 攻击, 一般在公网中建议开启,内网的话,可有可无。

image-20210412150549008

开启 grafana dashboard
#

在 Gitlab 中,默认存在一套 Prometheus 监控方案,当打开 grafana 后,我们可以访问 ${GITLAB_URL}/-/grafana 这个地址进行查看。

image-20210412150825760

image-20210412151147827

并且默认的 grafana 中,已预制了对应的展示模板。

image-20210412151401340

设置时区本土化
#

image-20210412151612643

关闭使用 ssh 管理代码
#

image-20210412152449920

关闭注册功能
#

如果你开启了使用 ldap 用户认证的管理,此项强烈建议是把它关闭的。一般打开了的话,常见于一些对外服务的站点,企业中根本不需要。

image-20210412152950209

设置新用户最小权限
#

不勾选此项时,默认新添加的用户还是拥有创建仓库 的权限的,如果管理员想 掌控全局 的话,还是建议开启。

image-20210412153256775

总结
#

Gitlab 为企业中 常见的 git 代码管理软件,是在实施 Devops 过程中的利剑,功能强大,并内置了 ci/cd、repository、监控等功能。在对 Gitlab 进行配置优化时,我们需要注意在配置时还 存在着全局生效配置项目局部生效配置,如在全局中配置了未见生效,可以去对应的项目组中查看此项目对应配置也做了相应的更改否。

相关文章

Kind 部署本地k8s集群的使用记录
·326 字·1 分钟·
k8s docker devops centos7 kind
使用 Docker 部署 Nexus3 私服的详细记录总结
·2798 字·6 分钟·
docker devops nexus3 install
部署 Devops 必备利器 OpenLdap
·953 字·2 分钟·
devops openldap centos7
Docker Quickstart Redis Server
·174 字·1 分钟·
docker redis centos7
Rancher 单机部署,进行升级后,导致docker无法正常启动
·586 字·2 分钟·
k8s fix docker rancher
Centos 7 Yum 安装 Jenkins 及常用配置的说明
·1419 字·3 分钟·
devops jenkins ci-cd install