美文网首页
Kubernetes CI/CD 入门指南

Kubernetes CI/CD 入门指南

作者: 香菜香菜我是折耳根 | 来源:发表于2020-02-29 08:42 被阅读0次

    一、安装 Docker

    sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum install docker-ce docker-ce-cli containerd.io
    

    将 Docker 设置为开机自启动服务,先不要启动:

    sudo systemctl enable docker
    

    执行 docker version 测试,可能会出现以下提示:

    [vagrant@localhost ~]$ docker version
    Client: Docker Engine - Community
     Version:           19.03.6
     API version:       1.40
     Go version:        go1.12.16
     Git commit:        369ce74a3c
     Built:             Thu Feb 13 01:29:29 2020
     OS/Arch:           linux/amd64
     Experimental:      false
    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    
    sudo groupadd docker
    sudo usermod -aG docker $USER
    newgrp docker
    

    再执行 docker version 测试,Docker 安装成功。

    Docker 镜像源登录
    docker login [<Mirror URL>]
    

    二、安装 GitLab

    这里采用 GitLab Omnibus Docker 安装方式。Omnibus 的意思是将 GitLab 及其它所依赖的 PostgreSQL、Redis、Sidekiq 作为一个整体镜像打包,在实际应用中,可以使用 Docker Compose 或 Kubernetes 将 GitLab 依赖的服务单独部署,以增强可靠性和性能。

    首先下载 GitLab 镜像,可以先看我之前写的文章《Docker & Kubernetes 小抄》,配置 Docker 国内镜像源:

    :GitLab 版本可自行更新,注意保持跟下面的 GitLab Runner 保持一致,至少是小版本一致。

    docker pull gitlab/gitlab-ce:12.7.2-ce.0
    
    mkdir -p /srv/gitlab/{config,logs,data}
    
    sudo docker run --detach \
        --hostname gitlab.example.com \
        --publish 443:443 --publish 80:80 --publish 2222:22 \
        --name gitlab \
        --restart always \
        --volume /srv/gitlab/config:/etc/gitlab \
        --volume /srv/gitlab/logs:/var/log/gitlab \
        --volume /srv/gitlab/data:/var/opt/gitlab \
        gitlab/gitlab-ce:12.7.2-ce.0
    
    [vagrant@localhost ~]$ docker ps
    CONTAINER ID        IMAGE                          COMMAND             CREATED             STATUS                           PORTS                                                            NAMES
    c5689c76f4ca        gitlab/gitlab-ce:12.7.2-ce.0   "/assets/wrapper"   2 seconds ago       Up 1 second (health: starting)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp   gitlab
    

    关注上述 STATUS 一栏,刚启动时为 health: starting,需要等待一段时间,直到 healthy

    docker exec -it gitlab bash
    vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
    
      ## GitLab settings
      gitlab:
        ## Web server settings (note: host is the FQDN, do not include http://)
        host: gitlab.example.com
        port: 80
        https: false
    

    实际上,gitlab.example.com 是不存在的虚拟地址,需要在 /etc/hosts 添加对应的 DNS 解析规则,第一列是内网地址:

    192.168.33.10 gitlab.example.com
    

    保存修改后退出,重启 GitLab 容器:

    docker stop gitlab
    docker start gitlab
    

    浏览器访问 http://gitlab.example.com ,默认管理员账号为 root ,第一次登陆需要设置密码。

    GitLab Docker SSH 登录问题

    虽然安装成功了,但是目前登录后往用户里加入 SSH Keys ,执行 git clone 会报权限错误,这是因为端口映射的问题:

    docker exec -it gitlab bash
    sudo vi /srv/gitlab/config/gitlab.rb
    

    修改 gitlab_rails['gitlab_shell_ssh_port']

    gitlab_rails['gitlab_shell_ssh_port'] = 2222
    

    如果需要对外网开放,防火墙需要打开对应的 2222 端口。

    GitLab 内存消耗过大问题

    GitLab 默认情况下运行会非常消耗内存,需要修改一些默认的配置参数。

    docker exec -it gitlab bash
    vi /etc/gitlab/gitlab.rb
    

    unicorn['worker_processes'] 是用来提高服务器的响应速度,默认情况下是(服务器的核心数 * 2 + 1) ,这个参数最小值是 2 :

    unicorn['worker_processes'] = 2
    

    适当缩小 Unicorn Worker 的内存使用范围:

    unicorn['worker_memory_limit_min'] = "200 * 1 << 20" # 从 1024 MB 改为 200 MB
    unicorn['worker_memory_limit_max'] = "300 * 1 << 20" # 从 1280 MB 改为 300 MB
    

    postgresql['shared_buffers'] 是数据库缓存大小,适当减小,推荐为总内存大小的 1/4 。

    postgresql['shared_buffers'] = "256MB"
    

    postgresql['max_worker_processes'] 是数据库并发数,可以适当减小:

    postgresql['max_worker_processes'] = 8
    

    sidekiq['concurrency'] 是 Sidekiq 并发数,默认是 25 :

    sidekiq['concurrency'] = 1
    

    三、安装 GitLab Runner

    curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
    sudo yum install gitlab-runner
    

    浏览器访问 http://gitlab.example.com/admin/runners ,阅读 Set up a shared Runner manually 部分。

    gitlab-runner register
    

    主要需要填的三个字段 gitlab-ci coordinator URLgitlab-ci tokenexecutor ,其他的字段可以不填:

    • URL:填 Set up a shared Runner manually 部分第二句。
    • token:填 Set up a shared Runner manually 部分第三句。
    • executor:填 shell
    usermod -a -G wheel gitlab-runner
    

    四、安装 Kubectl

    本地开发环境下,可以很容易地做到 GitLab 服务器和 Kubernetes Master 之间的互信,但是实际环境中是不允许的,因此需要在 GitLab 服务器上使用 kubectl 添加相应的密钥访问:

    curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
    chmod +x ./kubectl
    sudo mv ./kubectl /usr/local/bin/kubectl
    kubectl version
    
    The connection to the server localhost:8080 was refused - did you specify the right host or port?
    

    创建 ~/.kube/config ,填入 Kubernetes Master 上 ~/.kube~/.kube/config 的内容,或直接将 Kubernetes Master 上的 ~/.kube 整个文件夹复制到本地的 $HOME 目录下。

    五、实际项目

    sudo yum install maven
    

    为了加快 Maven 的依赖下载速度,添加国内镜像源,修改 /etc/maven/settings.xml ,在 <mirrors> 内填入:

    <mirror>
        <id>alimaven</id>
        <mirrorOf>central</mirrorOf>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
    </mirror>
    

    相关文章

      网友评论

          本文标题:Kubernetes CI/CD 入门指南

          本文链接:https://www.haomeiwen.com/subject/zfolqhtx.html