gitlab+harbor+jenkins+k8s部署微服务环境

王竹笙 / 2023-08-18 / 原文

一、gitlab

已经集成,便捷。此文中项目完全给予docker-compose部署。

1. gitlb部署

version: '3'

services:
  gitlab:
    image: 'gitlab/gitlab-ce:latest'
    container_name: 'gitlab'
    restart: always
    hostname: '192.168.1.188' #部署机器的ip,非容器ip(因为是本地不是线上所以用ip,线上的话可以用域名)
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.1.180'  
        gitlab_rails['gitlab_shell_ssh_port'] = 2222 
        unicorn['port'] = 8888
    ports:
      - '80:80'        #web 80 端口
      #- '443:443'      #web 443 端口,本次未使用就不开放了
      - '2222:22'      #ssh clone代码端口 端口
    volumes:
      - ./etc:/etc/gitlab             #Gitlab配置文件目录
      - ./data:/var/opt/gitlab  #Gitlab数据目录
      - ./logs:/var/log/gitlab   #Gitlab日志目录
    shm_size: '256m'
docker-compose.yml

 2. 配置gitlab

http://192.168.1.188

# 默认账号密码:
root 
cat /etc/gitlab/initial_root_password     # 密码目录

 3. 配置ssh公钥

 点击头像位置下箭头,“设置”

 将自己服务器生成 pub公钥配置上,点击“Add key”即可。

生成公钥

ssh-keygen 

4. 把本地项目通过pycharm git push到gitlib仓库。

二、harbor

1. 下载harbor

 https://github.com/goharbor/harbor/releases

解压项目

tar zxvf harbor-offline-installer-v2.8.4.tgz
cp harbor.yml.tmpl harbor.yml     # 拷贝模本为yml结尾

vim harbor.yml

hostname: 192.168.1.106     # 修改为本机IP
data_volume: /data   # 这个数据目录指定,需要查看把本机 /data 目录大小
http:
  port: 80
  harbor_admin_password: Harbor12345
# ps: 注释 https 配置,否则安装会报错。   其他保持默认

  安装并且启动

./install.sh
# 启动停止
docker-compose start
docker-compose stop   # 在harbor目录

2 .配置harbor 

浏览器输入 http://192.168.1.106

账号: admin

密码: Harbor12345 (在harbor.yml中记录的,默认是Harbor12345)

新建项目

点击项目详细信息会有push和pull命令

push 镜像到habor仓库,需要修改docker认证,允许认证。默认拉取、推送到镜像仓库要使用https , 由于我们这里没有https,需要用http。

vim /etc/docker/daemon.json    # 如果用域名这;里边要改为域名

{
    "graph": "/docker/data/path",
    "insecure-registries":["192.168.1.188"]
}

 # 重启docker

systemctl restart docker

三、jenkins

1. 安装jenkins

version: '3'
services:                                      # 集合
  docker_jenkins:
    user: root                                 # 为了避免一些权限问题,这里使用了 root
    restart: always                            # 重启方式
    image: jenkins/jenkins:lts                 # 指定服务所使用的镜像,这里选择了 LTS (长期支持)
    container_name: jenkins                    # 容器名称
    ports:                                     # 对外暴露的端口定义
      - 8080:8080                              # 访问 Jenkins 服务端口
      - 50000:50000
    volumes:                                   # 卷挂载路径
      - './data/var/jenkins_home/:/var/jenkins_home'  # 这是我们一开始创建的目录挂载到容器内的 jenkins_home 目录
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '/usr/bin/docker:/usr/bin/docker'             # 这是为了我们可以在容器内使用 docker 命令
      - '/usr/local/bin/docker-compose:/usr/local/bin/docker-compose'
      - '/root/port.sh:/root/port.sh'
docker-compose.yml

2. 挂载k8s工具到jenkins容器

宿主机安装需要工具

#1 安装kubect
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo chmod a+x kubectl
mv kubectl /usr/bin/
#2 k8s的配置.kube/config
拷贝下砸k8s的 kubeconf配置文件到宿主机 ~/.kube 目录

修改上边的docker-compose文件,把需要的工具挂载到docker内

version: '3'
services:                                      # 集合
  docker_jenkins:
    user: root                                 # 为了避免一些权限问题,这里使用了 root
    restart: always                            # 重启方式
    image: jenkins/jenkins:lts                 # 指定服务所使用的镜像,这里选择了 LTS (长期支持)
    container_name: jenkins                    # 容器名称
    ports:                                     # 对外暴露的端口定义
      - 8080:8080                              # 访问 Jenkins 服务端口
      - 50000:50000
    volumes:                                   # 卷挂载路径
      - './data/var/jenkins_home/:/var/jenkins_home'  # 这是我们一开始创建的目录挂载到容器内的 jenkins_home 目录
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '/usr/bin/docker:/usr/bin/docker'             # 这是为了我们可以在容器内使用 docker 命令
      - '/usr/local/bin/docker-compose:/usr/local/bin/docker-compose'
      - './conf/port.sh:/root/port.sh'
      # k8s kubectl使用
      - '/usr/bin/kubectl:/usr/bin/kubectl '
      - '/root/.kube:/root/.kube'
docker-compose.yml

 进入容器查看

docker exec -it jenkins /bin/sh #进入jenkins 容器
kubectl ge ns default Active 43m kube-node-lease Active 43m kube-public Active 43m kube-system Active 43m local-path-storage Active 43m

3. 安装jenkins

http://192.168.137.128:8080/

本次安装为docker-compose方式,密码目录为挂载目录

选择“安装推荐插件“

然后等待插件安装完成

 4. 创建用户

 部署完成

 5. 添加凭据

 点击左边菜单“Manage Jenkins”-->点击 "Manage Credentials"

点击“全局”后面的三角标,然后再点击“添加凭据”

 进入“添加凭据”页面,类型我们选择 “SSH Username with private key” 使用私钥方式,Username是gitlab一个标识,后面添加pipeline你知道这个标识是代表gitlab的凭据自行定义的,Private Key即在gitlab配置的私钥(之前我们配置在gitlab的公钥对应的私钥,在这里就是我们自己本机的私钥),我们这个凭证就是给jenkins用来去gitlab时候免密拉代码用的

 

 

 

 

 

四、k8s

 

 

end..