gitlab+harbor+jenkins+k8s部署微服务环境
一、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'
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'
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 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..