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.1http:  port: 8077                                                                                              #改一下http端口8077#https:                                                                                                      #临时将https正文掉,咱们先不通过https只通过http#  port: 443#  certificate: /your/certificate/path#  private_key: /your/private/key/pathdata_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/shcase $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 1103esac

执行

$ 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 versionClient 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 nsdefault              Active   43mkube-node-lease      Active   43mkube-public          Active   43mkube-system          Active   43mlocal-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-zerostar 反对咱们!

微信交换群

关注『微服务实际』公众号并点击 交换群 获取社区群二维码。