关于golang:微服务从代码到k8s部署应有尽有系列十四部署环境搭建

14次阅读

共计 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-zerostar 反对咱们!

微信交换群

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

正文完
 0