部署服务上
Salted Fish 1991/6/26 基础
# 1. 介绍
项目开发完成后,我们怎么样才能把服务直接发布到K8s呢?如果每次修改代码,都需要像上文 [运行应用 ] 那样编写繁琐的配置文件,显然不合适。我们期望的是,通过一键按钮的方式,就可以把最新的代码发布到K8s上。
# 1.1 部署准备
| 软件名称 | 说明 |
|---|---|
Gitea | 存放源代码,用来做持续集成(CI),因为Gitlab占用资源太多,用这个替代 |
Jenkins | 用来做持续部署(CD) |
Harbor | 私有化镜像仓库 |
Kubernetes | 用来运行我们的应用 |
发布流程,涉及持续集成(
CI)、持续部署(CD)。至于具体概念可自查文档。
# 1.2 部署集成
为了方便部署上面服务,通过现有项目docker-compose将部分服务集成在一起;具体使用步骤,参考下面文章;
# 2. 部署准备
# 2.1 下载源码
$ git clone https://github.com/52lu/k8s_microsvc_cicd.git
1
# 2.2 创建持久卷
# 创建持久卷,并赋权
$ mkdir volumes && chmod 777 volumes
1
2
2
# 2.3 修改环境变量
# 1.复制环境变量
$ cp env-exampl .env
# 2.查看本机IP
...
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.148.132 netmask 255.255.255.0 broadcast 192.168.148.255
inet6 fe80::20c:29ff:fe1c:4064 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:1c:40:64 txqueuelen 1000 (Ethernet)
RX packets 1847482 bytes 2462411899 (2.2 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 324377 bytes 26082141 (24.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
...
# 2.修改.env 中的GITEA_HOST
GITEA_HOST=192.168.148.132
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
部署过程需要下载对应的
docker镜像,建议给docker配置镜像加速。
# 3. 部署Gitea
# 3.1 启动
$ pwd
/root/server/k8s_microsvc_cicd
$ ls
docker-compose.yaml env-example gitea jenkins README.md volumes
# 启动
$ docker-compose up -d gitea
Creating network "k8s_microsvc_cicd_backend" with driver "bridge"
Creating k8s_microsvc_cicd_postgres_1 ... done
Creating k8s_microsvc_cicd_gitea_1 ... done
# 查看运行结果
$ docker-compose ps
Name State Ports
--------------------------------------------------------------------------------------------
k8s_microsvc_cicd_gitea_1 .. Up 0.0.0.0:2221->22/tcp,:::2221->22/tcp,
0.0.0.0:8800->3000/tcp,:::8800->3000/tcp
k8s_microsvc_cicd_postgres_1 ..Up 5432/tcp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 3.2 访问
访问链接: http://192.168.148.132:8800,这里的IP就是GITEA_HOST中设置的IP.

刷新进入,并添加代码仓库即可.
# 3.3 添加服务器密钥
点击头像->设置
添加ssh密钥

# 4. 部署Jenkins
# 4.1 启动Jenkins
# 部署成功之后,可能需要等待一段时间(jenkins初始化)
$ docker-compose up -d jenkins
1
2
2
# 4.2 解锁Jenkins
访问: http://192.168.148.132:19090/

根据上面提示,进入容器查找对应的管理员密码
# 进入容器
$ docker-compose exec jenkins bash
# 查看密码
$ cat /var/jenkins_home/secrets/initialAdminPassword
52345f1a8860455cacde717fbefcbc6b
1
2
3
4
5
2
3
4
5
# 4.3 安装插件
选择推荐插件

等待安装完成

# 4.4 创建管理员

# 5. 部署Harbor
# 5.1 下载Harbor
查看更多版本:https://github.com/goharbor/harbor/tags
# 下载速度有点慢
$ wget https://github.com/goharbor/harbor/releases/download/v2.7.0/harbor-offline-installer-v2.7.0.tgz
1
2
2
# 5.2 解压安装
# 5.2.1 解压
# 解压
$ tar zxvf harbor-offline-installer-v2.7.0.tgz
# 复制配置文件
$ cp harbor.yml.tmpl harbor.yml
1
2
3
4
2
3
4
# 5.2.2 修改harbor.yml
...
hostname: 192.168.148.132 #修改为本机ip,不能使用localhost、127.0.0.1
http:
port: 8870 #改一下http端口8870
....
# 注释掉https方式
#https:
# port: 443
# certificate: /your/certificate/path
# private_key: /your/private/key/path
...
data_volume: /root/server/harbor/data #修改一下数据目录位置(创建&赋权)
log:
level: info
local:
rotate_count: 50
rotate_size: 200M
location: /root/server/harbor/logs #修改一下日志目录位置(创建&赋权)
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 5.2.3 安装
[root@node2 harbor]# ./install.sh
[Step 0]: checking if docker is installed ...
Note: docker version: 20.10.22
[Step 1]: checking docker-compose is installed ...
Note: docker-compose version: 1.25.5
[Step 2]: loading Harbor images ...
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 5.3 访问
访问: http://192.168.148.132:8870/
账号: admin
密码: Harbor12345 (在harbor.yml中记录的,默认是Harbor12345)
1
2
2

# 5.4 新建私有项目
新建项目

查看推送命令

修改docker,支持http
默认拉取、推送到镜像仓库要使用
https, 由于我们这里没有https,需要用http, 所以我们要在发布的服务器上给docker新增insecure-registries,
# 新增insecure-registries
{
"registry-mirrors":[
"https://otrqd6z7.mirror.aliyuncs.com"
],
"insecure-registries":[
"192.168.148.132:8870"
]
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
到此我们环境部署部分搭建完成。