共计 5036 个字符,预计需要花费 13 分钟才能阅读完成。
1、概述
我的项目开发好后,咱们须要部署,咱们接下来就基于 gitlab + jenkins + harbor + k8s 搭建部署环境
- gitlab: 放代码,能够做 ci
- jenkins: 做 cd 公布我的项目
- harbor: 镜像仓库
- k8s: 运行服务
咱们只在 k8s 外部运行服务,至于中间件 (mysql、redis、es 等) 就会部署在 k8s 之外,如果你是线上应用云服务能够间接应用云服务,如果自建也最好运行在 k8s 之外。因为我是在本地演示,这里的中间件我就应用之前开发环境的中间件了,不要纠结这个,次要演示如何部署 go-zero 服务到 k8s 中
k8s 部署这里就不介绍了,如果没有 k8s 环境本人用 rancher 或者 kubeadm 等搭建即可,再不行就去买个按时付费的云服务 k8s
所以咱们须要配置如下:
服务器名称 | 作用 | Ip |
---|---|---|
deploy-server.com | 部署 gitlab、jenkins、harbor(事后装好 docker、docker-compose) | 192.168.1.180 |
srv-data.com | 部署 mysql、redis、es 等等,模仿独立环境,k8s 外部连贯到此服务器 | 192.168.1.181 |
nginx-gateway.com | 网关,独立于 k8s 集群内部 | 192.168.1.182 |
k8s 集群 | K8s 集群 | 192.168.1.183 |
2、gitlab
2.1 部署 gitlab
创立文件夹
$ mkdir gitlab && cd gitlab
$ vim docker-compose.yml
docker-compose.yml
version: '3'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh'
container_name: 'gitlab'
restart: always
hostname: '192.168.1.180' #部署机器的 ip, 非容器 ip(因为是本地不是线上所以用 ip,线上的话能够用域名)
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.1.180' #应用这个地址拜访 gitlab web ui(因为是本地不是线上所以用 ip,线上的话能够用域名)
gitlab_rails['gitlab_shell_ssh_port'] = 2222 #ssh clone 代码地址
unicorn['port'] = 8888 #gitlab 一个外部端口
ports:
- '80:80' #web 80 端口
#- '443:443' #web 443 端口, 本次未应用就不凋谢了
- '2222:22' #ssh 检出代码 端口
volumes:
- ./etc:/etc/gitlab #Gitlab 配置文件目录
- ./data:/var/opt/gitlab #Gitlab 数据目录
- ./logs:/var/log/gitlab #Gitlab 日志目录
执行
$ docker-compose up -d
这个执行工夫可能略微有点长,无妨你能够去泡一杯 coffee 劳动一下~~
2.2 拜访 gitlab
拜访 http://192.168.1.103(即 http://”docker-compose 中 ip/ 域名 ”)
首次设置新密码:12345678
账号默认是 root
2.3 创立我的项目
2.4 配置 ssh 公钥
点击头像地位下箭头,“设置”
将本人的公钥配置上,点击“Add key”即可(公钥不会生成的本人搜寻,这里不具体说了)
2.5 上传我的项目
再点击我的项目,回到方才创立的我的项目,将 go-zero-looklook 我的项目上传到此仓库 ssh://git@192.168.1.180:2222/root/go-zero-looklook.git 即可,到此咱们的 gitlab 搭建就完结了。
【注】本次不做 gitlab-runner 演示,后续如果有工夫再补充。
3、harbor
3.1 部署 harbor
下载 harbo https://github.com/goharbor/h…,下载离线的 offline 装置会快点
下载解压后进入 harbor 文件夹
$ cd harbor && cp harbor.yml.tmpl harbor.yml
咱们关上 harbor.yml,批改如下
hostname: 192.168.1.180 #批改为本机 ip,不能应用 localhost、127.0.0.1
http:
port: 8077 #改一下 http 端口 8077
#https: #临时将 https 正文掉,咱们先不通过 https 只通过 http
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
data_volume: /root/harbor/data #批改一下数据目录地位
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /root/harbor/log #批改一下日志目录地位
间接运行“sudo ./install.sh”稍作期待。
3.2 拜访 harbor
浏览器输出 http://192.168.1.180:8077
账号: admin
明码: Harbor12345 (在 harbor.yml 中记录的,默认是 Harbor12345)
登陆胜利
3.3 新建公有我的项目
查看 push 命令
$ docker push 192.168.1.180:8077/go-zero-looklook/REPOSITORY[:TAG]
3.4 反对 http
默认拉取、推送到镜像仓库要应用 https , 因为咱们这里没有 https,须要用 http , 所以咱们要在 deploy-server.com 服务器上执行如下
$ echo '{"insecure-registries":["192.168.1.180:8077"] }' >> /etc/docker/daemon.json
到此咱们 harbor 搭建实现。
4、jenkins
4.1 部署 jenkins
创立文件夹
$ mkdir jenkins && cd jenkins
$ vim docker-compose.yml
docker-compose.yml
version: '3'
services:
jenkins:
image: 'jenkins/jenkins:lts'
container_name: jenkins
restart: always
environment:
- TZ=Asia/Shanghai
user: root
ports:
- '8989:8080'
- '50000:50000'
volumes:
- './jenkins_home:/var/jenkins_home'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/root/port.sh:/root/port.sh'
【注】/root/port.sh 内容如下
#!/bin/sh
case $1 in
"identity-api") echo 1001
;;
"identity-rpc") echo 1101
;;
"usercenter-api") echo 1002
;;
"usercenter-rpc") echo 1102
;;
"message-mq") echo 1207
;;
"mqueue-rpc") echo 1106
;;
"order-api") echo 1004
;;
"order-mq") echo 1204
;;
"order-rpc") echo 1104
;;
"payment-api") echo 1005
;;
"payment-rpc") echo 1105
;;
"travel-api") echo 1003
;;
"travel-rpc") echo 1103
esac
执行
$ docker-compose up -d
这个工夫也不慢,能够再去喝一杯 coffee
4.2 挂载工具
1)将 goctl 复制到 jenkins 容器中
$ docker cp $GOPATH/bin/goctl jenkins:/usr/local/bin
$ docker exec -it jenkins /bin/sh #进入 jenkins 容器
$ goctl -v #验证胜利
goctl version 1.3.0-20220201 linux/amd64
2)将 kubectl 文件复制到 jenkins 容器中
$ 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
$ docker cp kubectl jenkins:/usr/local/bin
$ docker exec -it jenkins /bin/sh #进入 jenkins 容器
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.3" .....
3)将 k8s 的配置.kube/config 复制到 jenkins 容器
$ docker cp ~/.kube jenkins:/root/ #前提是家目录下的.kube 文件夹中存在 k8s 的 config 配置
$ 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
【注】下面这四步,也能够间接打进镜像中,我这里只是演示,留给你们本人解决。
4.3 拜访 jenkins
http://192.168.1.180:8989
第一次拜访呈现下面图不要慌,让你稍等一会,它在进行筹备工作,筹备好后会主动跳到登陆页面。
呈现如下界面,阐明筹备好了,因为咱们目录是挂载进去的,咱们查看本机 jenkins_home/secrets/initialAdminPassword 明码,输出下一步即可
抉择“装置举荐插件“
而后期待插件装置实现
4.4 创立用户
账号:root/root
4.5 部署实现
到此 jenkins 部署实现
4.6 增加凭据
点击右边菜单“Manage Jenkins”
点击 “Manage Credentials”
点击“全局”前面的三角标,而后再点击“增加凭据”
进入“增加凭据”页面,类型咱们抉择“SSH Username with private key”应用私钥形式,Username
是 gitlab 一个标识,前面增加 pipeline 你晓得这个标识是代表 gitlab 的凭据自行定义的,Private Key
即在 gitlab 配置的私钥(之前咱们配置在 gitlab 的公钥对应的私钥,在这里就是咱们本人本机的私钥),咱们这个凭证就是给 jenkins 用来去 gitlab 时候免密拉代码用的
确定即可。
4.7 增加 harbor 仓库配置
进入首页,点击左侧菜单Manage Jenkins
->Configure System
下滑动到 全局属性
条目,增加 docker 公有仓库相干信息,如图为docker 用户名
、docker 用户明码
、docker 公有仓库地址
点击“保留”
4.8 配置 git
进入Manage Jenkins
->Global Tool Configureation
,找到 Git 条目,填写 jenkins 所在机器 git 可执行文件所在 path,如果没有的话,须要在 jenkins 插件治理中下载 Git 插件, 有就不须要管了(如下图)
配置 pipline 须要的 Git Parameter 插件
点击“系统配置”->“插件治理”
而后点击“可选插件”, 搜寻中输出“Git Parameter”, 如下图
装置好,重启后即可,到此 jenkins 搭建实现。
5、k8s
k8s 的部署这里就不介绍了,本人用 kubeadm、rancher、kind 去装置吧,或者买个按量云容器服务,总之有一个 k8s 集群就好了。
我的项目地址
https://github.com/zeromicro/go-zero
欢送应用 go-zero
并 star 反对咱们!
微信交换群
关注『微服务实际 』公众号并点击 交换群 获取社区群二维码。