首页
  • 2024.1.1.0
  • 2024.1.1.1
  • 2024.1.2.0
  • 2024.1.3.0
  • Java
  • Linux
  • Deploy
  • Application
关于
友情链接
GitHub (opens new window)

Xiao ku

板砖师傅
首页
  • 2024.1.1.0
  • 2024.1.1.1
  • 2024.1.2.0
  • 2024.1.3.0
  • Java
  • Linux
  • Deploy
  • Application
关于
友情链接
GitHub (opens new window)
  • Docker一键部署
  • Mysql主从配置一键化
  • Mysql新建主从同步-mysqldump
  • SkyWalking部署及使用
  • Prometheus部署及使用
  • K8S-CICD
  • K8S-在线安装
  • K3S-在线安装
  • K3S-CICD
    • 初始化准备(ALL of SERVER)
      • 设置各个主机名称
    • 部署Docker(ALL of SERVER)
      • 上传附件
      • 解压赋权并安装
      • 安装完成
    • 关闭防火墙(ALL of SERVER)
      • 关闭防火墙
      • 重启Docker
    • 部署Harbor(222)
      • 上传附件
      • 解压
      • 新建文件harbor.yml
      • 安装
      • 安装完成验证
    • Docker配置Harbor(ALL of SERVER)
      • 配置daemon.json
      • 注意
      • 登录docker
    • 部署Mysql(221)
      • 编排文件并启动
      • 创建K3S数据库
    • 部署K3S集群(201\~213)
      • 部署Master(201)
      • 部署
      • 查看Token
      • 部署Slave(202~203)
      • 部署(202~203)
      • 设置202和203 Slave角色(201)
      • 部署Master(211)
      • 部署
      • 部署Slave(212~213)
      • 部署(212~213)
      • 设置212和213 Slave角色(211)
      • 完成部署
      • 注
      • 卸载
      • 查看状态
      • 查看节点
      • 查看版本
    • 部署Rancher(221)
      • 申请下载证书
      • 编排文件并启动
      • 配置Rancher集群
      • 浏览器访问证书申请域名地址
      • 根据提示查找密码
      • 输入新密码
      • 设置中文
      • 导入集群
      • 点击导入已有集群
      • 点击通用
      • 输入集群名称,点击创建
      • 复制命令
      • K3s集群Master201服务器上执行
      • 刷新rancher首页
      • 若需更新证书
    • 部署NFS(ALL of SERVER)
      • 安装命令
      • 服务端配置(221)
      • 创建共享文件夹
      • NFS配置
      • 客户端测试(201)
      • 创建共享文件夹
      • 挂载测试
      • 查看挂载情况
      • 卸载
    • 部署Gitlab(222)
    • 部署Gitlab(方式二)
      • 创建项目
      • 创建命名空间
      • 创建工作负载
      • Containers
      • 存储挂载NFS
      • 点击创建完成启动
      • 服务发现
      • 浏览器访问
      • 登录密码(221)
    • 部署Jenkins(222)
      • 制作镜像
      • 构建镜像
      • 生成镜像
      • 创建启动
      • 浏览器访问
      • 登录密码
    • 初始化Jenkins
      • 初始化
      • 配置
      • 查看java和maven安装地址
      • 配置JDK
      • 配置Maven
      • 自定义安装插件
    • 测试Jenkins
      • 测试(docker-maven)
      • 创建流水线任务
      • pipeline脚本
      • 构建触发器(关联Gitlab)
      • 立即构建
    • 初始化Harbor
    • 初始化Gitlab
      • 登录
      • 创建用户
      • 创建用户
      • 初始化密码
      • 初始化项目(root权限)
      • 创建组
      • 创建空项目
      • 创建dev分支
      • 提交项目代码
      • 赋权账号
    • 设置jenkins 用户ssh秘钥
    • 获取Access Tokens
    • Jenkins配置Git/GitLab
      • Jenkins配置GitLab
      • Jenkins配置Git
    • 创建Jenkins-job(gitlab)
      • 新建Item:ok-springboot-imdemo
      • 配置
      • 流水线
      • 构建触发器
    • Rancher创建密文-Harbor(K3S)
    • Rancher更新镜像构建
      • 下载CLI
      • 下载kubectl
      • 构建镜像并上传
    • Jenkins构建微服务镜像
    • Rancher创建微服务
      • 创建项目
      • 创建命名空间
      • 创建负载
    • Gitlab触发Jenkins
      • Gitlab取消限制策略
      • Jenkins取消限制策略
      • 配置触发
    • 触发Rancher更新镜像
      • 创建API密钥
      • 复制持有者令牌
      • 复制API地址
      • 复制项目PROJECT ID
      • 复制项目ContainerName
      • 更新镜像命令说明
      • 更新镜像容器命令示例
  • Deploy
xiaoku
2023-03-14
目录

K3S-CICD

# 集群规划

主机 IP 内存 硬盘 应用
master201 192.168.213.201 8G 40G K3S
slave202 192.168.213.202 4G 40G K3S
slave203 192.168.213.203 4G 40G K3S
master211 192.168.213.211 4G 40G K3S
slave212 192.168.213.212 4G 40G K3S
slave213 192.168.213.213 4G 40G K3S
middleware221 192.168.213.221 4G 40G+100G Mysql+NFS+Rancher
middleware222 192.168.213.222 10G 40G+100G Harbor+Jenkins+Gitlab

图例:

# 版本

组件 版本 备注
CentOS 7.9.2009 (Core) CentOS-7-x86_64-Minimal-2009.iso
K3S v1.25.3+k3s1 -
Mysql 5.7.39 K3S外部存储
Jenkins jenkins:2.377-centos7 CI/CD
Harbor v2.2.3 Docker镜像存储仓库
Gitlab gitlab-ce:15.5.4-ce.0 Git仓库
Rancher 2.6.9 K3S界面管理
Docker 20.10.18 -
Docker Compose v2.10.2 -

# 系统信息

系统 地址 账号 密码
Rancher https://rancher.ok96.cn:8443/ admin Rancher123456
Harbor http://192.168.213.222:22280 admin Harbor12345
Jenkins http://192.168.213.222:7080 admin Admin123
Gitlab http://192.168.213.222:8929 root gTgBikdfbPhNSzcztYyGfXMauatWUP52HsZbZowmgow=
- jenkins Jenkins123 -
NFS 192.168.213.221 目录:/data/share -

# 自动构建部署流程图

# 环境部署步骤

# 初始化准备(ALL of SERVER)

# 设置各个主机名称

在201上执行命令:

hostnamectl set-hostname master201
1

在202上执行命令:

hostnamectl set-hostname slave202
1

在203上执行命令:

hostnamectl set-hostname slave203
1

在211上执行命令:

hostnamectl set-hostname master211
1

在212上执行命令:

hostnamectl set-hostname slave212
1

在213上执行命令:

hostnamectl set-hostname slave213
1

在221上执行命令:

hostnamectl set-hostname middleware221
1

在222上执行命令:

hostnamectl set-hostname middleware222
1

# 部署Docker(ALL of SERVER)

# 上传附件

上传BinaryInstallation.zip压缩包到/data目录下

# 解压赋权并安装

命令:

yum install -y unzip
cd /data && unzip BinaryInstallation.zip
cd /data/BinaryInstallation && chmod -R 777 docker-init.sh
./docker-init.sh
1
2
3
4

# 安装完成

# 关闭防火墙(ALL of SERVER)

# 关闭防火墙

执行命令

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
swapoff -a
yes | cp /etc/fstab /etc/fstab_bak
cat /etc/fstab_bak |grep -v swap > /etc/fstab
sed -i "s#^net.ipv4.ip_forward.*#net.ipv4.ip_forward=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-ip6tables.*#net.bridge.bridge-nf-call-ip6tables=1#g"  /etc/sysctl.conf
sed -i "s#^net.bridge.bridge-nf-call-iptables.*#net.bridge.bridge-nf-call-iptables=1#g"  /etc/sysctl.conf
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
sysctl -p
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 重启Docker

执行命令

  systemctl restart docker
1

# 部署Harbor(222)

# 上传附件

上传harbor-offline-installer-v2.2.3.tgz压缩包到/data目录下

# 解压

执行命令

cd /data
tar xzvf harbor-offline-installer-v2.2.3.tgz
1
2

# 新建文件harbor.yml

内容可以参考harbor.yml.tmpl

修改 hostname: 192.168.213.222 为本机IP

修改 端口

修改 数据存储地址/data/harbor/data

注释 https

命令

cd /data/harbor
vi harbor.yml
1
2

输入文本内容

hostname: 192.168.213.222 

http:
  port: 22280

harbor_admin_password: Harbor12345

database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 1000

data_volume: /data/harbor/data

trivy:
  ignore_unfixed: false
  skip_update: false
  insecure: false

jobservice:
  max_job_workers: 10

notification:
  webhook_job_max_retry: 10

chart:
  absolute_url: disabled

log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.2.0

proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

# 安装

执行命令

  sh /data/harbor/install.sh
1

# 安装完成验证

执行命令

  docker ps -a
1

# Docker配置Harbor(ALL of SERVER)

# 配置daemon.json

tee /etc/docker/daemon.json <<-'EOF'
{
    "log-driver":"json-file",
    "log-opts":{
        "max-size":"1000m",
        "max-file":"3"
    },
    "insecure-registries":[
        "192.168.213.222:22280"
    ]
}
EOF

systemctl daemon-reload
systemctl restart docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 注意

若是在Harbor部署的服务器(222)执行后,需要重启Harbor,等待系统启动

cd /data/harbor && docker-compose down && docker-compose up -d
docker ps -a
1
2

# 登录docker

docker login 192.168.213.222:22280
账号:admin
密码:Harbor12345
1
2
3

# 部署Mysql(221)

# 编排文件并启动

mkdir /data/mysql5-7 && cd /data/mysql5-7
vi docker-compose.yml
1
2

输入文件内容

version: '3.1'
services:
  mysql-k3s:
    image: mysql:5.7.39
    restart: always
    container_name: mysql-k3s
    environment:
      MYSQL_ROOT_PASSWORD: xiaoku@mysql2205#
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    ports:
      - 2205:3306
    volumes:
      - ./data:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d
      - ./logs:/logs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

启动

  docker-compose up -d
1

# 创建K3S数据库

创建数据库名称为k3s

# 部署K3S集群(201~213)

# 部署Master(201)

# 部署

curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.25.3+k3s1 sh -s - \
--datastore-endpoint="mysql://root:xiaoku@mysql2205#@tcp(192.168.213.221:2205)/k3s"  \
--docker \
--write-kubeconfig ~/.kube/config \
--write-kubeconfig-mode 666
1
2
3
4
5

# 查看Token

命令及返回

[root@localhost BinaryInstallation]# cat /var/lib/rancher/k3s/server/node-token
K10bf621cb0bfb8fdbdb87ea0940589b78779b0088c8fdab2a4f5d65ee8d95770bb::server:2a5ed69b7abe52c01a4ab99b5ad836cf
1
2

# 部署Slave(202~203)

# 部署(202~203)

Token为201返回的数据

curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.25.3+k3s1 \
K3S_URL=https://192.168.213.201:6443 \
K3S_TOKEN=K10bf621cb0bfb8fdbdb87ea0940589b78779b0088c8fdab2a4f5d65ee8d95770bb::server:2a5ed69b7abe52c01a4ab99b5ad836cf \
sh -s - \
--docker
1
2
3
4
5

# 设置202和203 Slave角色(201)

201执行命令

  kubectl label node slave202 node-role.kubernetes.io/worker=worker
1
  kubectl label node slave203 node-role.kubernetes.io/worker=worker
1

# 部署Master(211)

# 部署

token使用201获取的值

curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.25.3+k3s1 sh -s - server \
--token=K10bf621cb0bfb8fdbdb87ea0940589b78779b0088c8fdab2a4f5d65ee8d95770bb::server:2a5ed69b7abe52c01a4ab99b5ad836cf \
--datastore-endpoint="mysql://root:xiaoku@mysql2205#@tcp(192.168.213.221:2205)/k3s"  \
--docker \
--write-kubeconfig ~/.kube/config \
--write-kubeconfig-mode 666 
1
2
3
4
5
6

# 部署Slave(212~213)

# 部署(212~213)

Token为201返回的数据

curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.25.3+k3s1 \
K3S_URL=https://192.168.213.211:6443 \
K3S_TOKEN=K10bf621cb0bfb8fdbdb87ea0940589b78779b0088c8fdab2a4f5d65ee8d95770bb::server:2a5ed69b7abe52c01a4ab99b5ad836cf \
sh -s - \
--docker
1
2
3
4
5

# 设置212和213 Slave角色(211)

211执行命令

  kubectl label node slave212 node-role.kubernetes.io/worker=worker
1
  kubectl label node slave213 node-role.kubernetes.io/worker=worker
1

# 完成部署

  k3s kubectl get nodes
1

# 注

# 卸载

使用安装脚本安装了 K3s,那么在安装过程中会生成一个卸载 K3s 的脚本。

卸载 K3s 会删除集群数据和所有脚本。要使用不同的安装选项重新启动集群,请使用不同的标志重新运行安装脚本。

要从 server 节点卸载 K3s,请运行:

  /usr/local/bin/k3s-uninstall.sh
1

要从 agent 节点卸载 K3s,请运行:

  /usr/local/bin/k3s-agent-uninstall.sh
1

# 查看状态

  systemctl status k3s
1
  systemctl status k3s-agent
1

# 查看节点

  k3s kubectl get nodes
1

# 查看版本

使用kubectl version 命令,输出的信息会显示client和server的版本信息,client代表kubectl版本信息,server代表的是master节点的k8s版本信息

[root@localhost ~]# kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.0+k3s1", GitCommit:"26e9405767263a2915723cb72b1ffd7f50687a8f", GitTreeState:"clean", BuildDate:"2022-09-12T20:11:31Z", GoVersion:"go1.19", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.0+k3s1", GitCommit:"26e9405767263a2915723cb72b1ffd7f50687a8f", GitTreeState:"clean", BuildDate:"2022-09-12T20:11:31Z", GoVersion:"go1.19", Compiler:"gc", Platform:"linux/amd64"}

1
2
3
4
5
6

# 部署Rancher(221)

# 申请下载证书

例:阿里云申请完成后,下载Nginx证书

上传至221服务器,目录:/data/rancher/certs下

文件:

rancher.pem 改名cert.pem

rancher.key改名key.pem

下载根证书 WoSign-RSA-root.crt改名cacerts.pem

# 编排文件并启动

编排文件

  vi /data/rancher/docker-compose.yml
1

编辑输入

version: '3.1'
services:
  rancher-server:
    image: rancher/rancher:v2.6.9
    restart: unless-stopped
    container_name: rancher-server
    ports:
      - 8082:80
      - 8443:443
    volumes:
      - ./rancher:/var/lib/rancher/
      - ./ssl/cert.pem:/etc/rancher/ssl/cert.pem
      - ./ssl/key.pem:/etc/rancher/ssl/key.pem
      - ./ssl/cacerts.pem:/etc/rancher/ssl/cacerts.pem
    privileged: true
    mem_limit: 2048m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

启动

  cd /data/rancher && docker-compose up -d
1

# 配置Rancher集群

# 浏览器访问证书申请域名地址

例:rancher.ok.cn

则:访问https://rancher.ok96.cn:8443/

# 根据提示查找密码

命令:

[root@localhost rancher]# docker logs  rancher-server  2>&1 | grep "Bootstrap Password:"

2022/09/26 05:45:32 [INFO] Bootstrap Password:
 rdx4fpcg696hkdq6dmfk7sfzlq7cgknv8kfmp9m58k6bchzldd6ndt
1
2
3
4

# 输入新密码

例:密码为 Rancher123456

# 设置中文

# 导入集群

# 点击导入已有集群

# 点击通用

# 输入集群名称,点击创建

# 复制命令

【在运行支持的 Kubernetes 版本的 Kubernetes 集群上,运行以下 kubectl 命令,以将其导入到 Rancher】提示的命令,粘贴到201服务器上执行

# K3s集群Master201服务器上执行

# 刷新rancher首页

等待一段时间后,状态为Active

# 若需更新证书

新申请下来的证书直接替换

目录:/data/rancher/ssl

文件:

cacerts.pem

cert.pem

key.pem

然后重启即可

  docker-compose down && docker-compose up -d
1

# 部署NFS(ALL of SERVER)

# 安装命令

因为每台K8S都可能需要使用到挂载,故每台都需要执行安装

yum -y install nfs-utils  rpcbind 
systemctl enable rpcbind.service
systemctl enable nfs-server.service

systemctl start rpcbind.service
systemctl start nfs-server.service
1
2
3
4
5
6

# 服务端配置(221)

服务端IP:192.168.213.221

服务点目录:/data/share

# 创建共享文件夹

  mkdir -p /data/share
1

# NFS配置

修改配置文件

  vi /etc/exports
1

增加下面这一行数据,指定的ip地址为客户端的地址,地址可以是一个网段(如:192.168.0.0/24)

  /data/share 192.168.213.0/24(rw,no_root_squash,no_all_squash,sync)
1

加载配置文件,在相关软件启动后执行

  exportfs -arv
1

# 客户端测试(201)

# 创建共享文件夹

命令

  mkdir -p /home/nfs_share
1

# 挂载测试

命令

  mount -t nfs 192.168.213.221:/data/share /home/nfs_share

1
2

# 查看挂载情况

命令

  df -TH
1

# 卸载

命令

  umount /home/nfs_share
1

# 部署Gitlab(222)

mkdir /data/gitlab
cd /data/gitlab&& vi docker-compose.yml
1
2

输入内容

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce:15.5.4-ce.0'
    container_name: gitlab
    restart: always
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.213.222:8929' #若有域名可以写域名
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:22'
    volumes:
      #将相关配置映射到当前目录下的config目录
      - './config:/etc/gitlab'
      #将日志映射到当前目录下的logs目录
      - './logs:/var/log/gitlab'
      #将数据映射到当前目录下的data目录
      - './data:/var/opt/gitlab'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

登录账号:root

登录密码:在服务启动后,查看config/initial_root_password文件

cat /data/gitlab/config/initial_root_password

Password: gTgBikdfbPhNSzcztYyGfXMauatWUP52HsZbZowmgow=
1
2
3

启动

  docker-compose up -d
1

# 部署Gitlab(方式二)

# 创建项目

进入页面【k3s-项目/命名空间】点击创建项目

输入创建名称:公共组件 点击创建

# 创建命名空间

点击创建命名空间

输入名称:cicd 点击创建

# 创建工作负载

进入页面【k3s-工作负载-Deployments】点击创建

# Containers

镜像:gitlab/gitlab-ce:14.0.6-ce.0

端口:集群IP 8929

环境变量:

变量名称 变量值
GITLAB_OMNIBUS_CONFIG external_url 'http://192.168.213.201:8929'; gitlab_rails['gitlab_shell_ssh_port'] = 2222;

# 存储挂载NFS

卷插件选择:NFS

输入名称:nfs221

服务端部署信息:/data/share 192.168.213.221

挂载点 卷内子路径
/etc/gitlab gitlab/config
/var/log/gitlab gitlab/logs
/var/opt/gitlab gitlab/data

# 点击创建完成启动

# 服务发现

进入服务发现页面,编辑配置,修改配置 增加外网ip

输入:192.168.213.201

# 浏览器访问

# 登录密码(221)

因为密码是初始化后的文件内容,而部署时将文件挂载在NFS上,故 直接登录221服务器上即可查看GitLab初始化密码

C8a4/zTtKRT0c64LSTLRxgpK1zQLEst2JbRhEfpFyWk=
1

命令

cd /data/share
cat gitlab/config/initial_root_password
1
2

# 部署Jenkins(222)

# 制作镜像

# 构建镜像

由于原生镜像没有安装maven和git,故我们重新写一个Dockerfile生成镜像,编写Dockerfile文件

mkdir /data/jenkins
cd /data/jenkins && vi Dockerfile
1
2

输入以下内容

FROM jenkins/jenkins:2.377-centos7
USER root
RUN yum install -y maven
1
2
3

# 生成镜像

执行命令

  docker build -t jenkins:2.377-centos7-mvn .
1

# 创建启动

编辑文件

  cd /data/jenkins && vi docker-compose.yml
1

输入内容

version: '3'
services:
  jenkins:
    image: 'jenkins:2.377-centos7-mvn'
    container_name: jenkins
    restart: always
    user: root
    ports:
      - '7080:8080'
      - '7050:50000'
    volumes:
      - './jenkins_home:/var/jenkins_home'
      - '/var/run/docker.sock:/var/run/docker.sock'
      - '/usr/bin/docker:/usr/bin/docker'
1
2
3
4
5
6
7
8
9
10
11
12
13
14

启动

  cd /data/jenkins && docker-compose up -d
1

# 浏览器访问

访问地址:192.168.213.222:7080

# 登录密码

[root@middleware222 share]# cat /data/jenkins/jenkins_home/secrets/initialAdminPassword                                                                                                                                                            564de39cc45347589909febf57e73383
1

# 初始化配置

# 初始化Jenkins

# 初始化

使用管理员账号登录后安装推荐的插件

修改管理员信息:

登录名:admin
账号:admin
密码:Admin123
1
2
3

# 配置

# 查看java和maven安装地址

进入jenkins容器内执行

[root@middleware222 ~]# docker exec -it jenkins /bin/sh
sh-4.2# mvn -version
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 11.0.16.1, vendor: Eclipse Adoptium
Java home: /opt/java/openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
sh-4.2#
1
2
3
4
5
6
7
8
9

# 配置JDK

登录到Jenkins管理后台,点击 Manage Jenkins --> Global Tool Configuration

点击新增JDK

自动安装 前面的勾选,去掉,输入别名和JAVA_HOME

别名:jdk11
JAVA_HOME:/opt/java/openjdk
1
2

点击应用

# 配置Maven

同JDK配置页面

取消自动安装,输入配置信息

别名:maven305
MAVEN_HOME:/usr/share/maven
1
2

点击保存

# 自定义安装插件

安装插件:

Docker Pipeline
GitLab
1
2

# 测试Jenkins

# 测试(docker-maven)

# 创建流水线任务

# pipeline脚本

输入内容,点击保存

pipeline {
    agent any
stages {
        stage('TestMaven') {
            steps {
                sh 'mvn -version'
            }
        }
        stage('TestDocker') {
            steps {
                sh 'docker images'
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 构建触发器(关联Gitlab)

选择:触发远程构建 (例如,使用脚本)

例如Token:imtest

后续则可以使用接口地址触发构建

JENKINS_URL/job/imtest1/build?token=imtest

# 立即构建

查看控制台

# 初始化Harbor

登录Harbor

地址:http://192.168.213.222:22280/
账号:admin
密码:Harbor12345
1
2
3

创建公开项目:imdemo

创建公开项目:cicd

# 初始化Gitlab

# 登录

地址:192.168.213.222:8929
账号:root
登录密码:在服务启动后,查看config/initial_root_password文件
cat /data/gitlab/config/initial_root_password
1
2
3
4

# 创建用户

用户信息,例:

账号:jenkins
密码:Jenkins123
1
2

# 创建用户

# 初始化密码

在创建完成账号时,密码是不可填写的,在编辑中,初始化一下密码

登录先重置一下密码,然后保存登录到首页

# 初始化项目(root权限)

# 创建组

创建组名:ar3d

# 创建空项目

项目名称:ok-springboot-imdemo

# 创建dev分支

# 提交项目代码

附件:ok-springboot-imdemo-dev.zip 上传至dev

# 赋权账号

Members:

# GitLab+Jenkins配置

# 设置jenkins 用户ssh秘钥

登录到jenkins服务器(222),生成秘钥

ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
1

查看公钥

cat /root/.ssh/id_rsa.pub
1

登录GitLab使用Jenkins用户

点击 ssh keys,将公钥内容复制到网页,点击添加秘钥

# 获取Access Tokens

登录jenkins帐号,获取Access Tokens

点击后返回:glpat-39WoU5Bou4bn6-sqvgPb

# Jenkins配置Git/GitLab

# Jenkins配置GitLab

点击 系统管理--> 系统配置 -->配置 -->Gitlab

Connection Name "随便填,"Git Host URL"填GitLab的访问地址,然后点"Add"------"jenkins",如下所示

选择gitlalb api,输入 jenkins 用户创建的token

  glpat-39WoU5Bou4bn6-sqvgPb
1

选择 gitlab api token,点击测试连接,出现 Success,表示成功

# Jenkins配置Git

点击 Manage Jenkins --> Configure System -->配置 -->Git plugin

设置Git插件的全局配置,然后点击最下面的保存。

# 创建Jenkins-job(gitlab)

# 新建Item:ok-springboot-imdemo

点击"流水线",点击Ok

# 配置

# 流水线

选择"SCM",选择"Git",然后去GitLab中复制项目地址,粘贴到"Repository URL",然后点击"credentials"后面的添加按钮

类型,选择 Username with password

用户名 填 jenkins

密码 填 Jenkins123

添加后选择

# 构建触发器

填写job名称:ok-springboot-imdemo

则Url:

http://192.168.213.222:7080/job/ok-springboot-imdemo/build?token=ok-springboot-imdemo

保存应用

# Rancher+Jenkins+Harbor+GitLab

# Rancher创建密文-Harbor(K3S)

进入页面【存储-密文】点击创建,选择镜像仓库

输入Harbor信息

# Rancher更新镜像构建

# 下载CLI

下载地址,点击版本号

点击Linux版本下载

# 下载kubectl

获取版本

https://dl.k8s.io/release/stable.txt

返回版本号:v1.25.4

下载地址则为:

https://dl.k8s.io/release/v1.25.4/bin/linux/amd64/kubectl

# 构建镜像并上传

上传cli及kubectl至222服务器,创建及上传目录:/data/rancher/docker

编写Dockerfile

  cd /data/rancher/docker && vi Dockerfile
1

输入文件内容,保存退出

FROM alpine:3.16.3

copy ./rancher-linux-amd64-v2.6.9.tar.gz /usr/bin/rancher-linux-amd64-v2.6.9.tar.gz
copy ./kubectl /usr/bin/kubectl

RUN cd /usr/bin/ \
    && tar zxvf rancher-linux-amd64-v2.6.9.tar.gz \
    && mv rancher-v2.6.9/rancher . \
    && rm rancher-linux-amd64-v2.6.9.tar.gz \
    && rm -r rancher-v2.6.9 \
    && chmod u+x kubectl
1
2
3
4
5
6
7
8
9
10
11

构建镜像并上传至harbor

docker build -t 192.168.213.222:22280/cicd/rancher-cli:1.0.0 .
docker push 192.168.213.222:22280/cicd/rancher-cli:1.0.0
1
2

# Jenkins构建微服务镜像

进入ok-springboot-imdemo,点击立即构建

立即构建-查看日志,第一次会报错。

复制镜像地址:192.168.213.222:22280/imdemo/ok-springboot-imdemo:3

# Rancher创建微服务

# 创建项目

进入页面:

创建项目:demo

# 创建命名空间

进入页面

创建项目:ok

# 创建负载

进入页面:

命名空间选择:ok

名称:ok-springboot-imdemo

镜像:192.168.213.222:22280/imdemo/ok-springboot-imdemo:3

端口:8610 监听30010

完成创建后页面访问:

http://192.168.213.201:30010/ok-springboot-imdemo/hello

# Gitlab触发Jenkins

# Gitlab取消限制策略

禁止向本地连接发送请求

由于Gitlab和Jenkins安装在同台服务器,且Gitlab 10.6 版本以后为了安全,默认不允许向本地网络发送webhook请求。先将禁止取消。

点击勾选[Allow requests to the local network from web hooks and services],并保存

# Jenkins取消限制策略

由于Gitlab和Jenkins安装在同台服务器

勾选[匿名用户具有可读权限]

修改222服务器jenkins docker-compose.yml文件

增加文件内容

    environment: 
      - JAVA_OPTS=-Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true
1
2

# 配置触发

进入Gitlab页面:

打开代码仓库,进入回调配置页面。需要仓库维护者权限才能看到此菜单。

Url从本文档的jenkins任务配置中获取:

http://192.168.213.222:7080/job/ok-springboot-imdemo/build?token=ok-springboot-imdemo

点击增加

完成提交代码自动构建

# 触发Rancher更新镜像

# 创建API密钥

进入页面:

输入描述并创建

# 复制持有者令牌

令牌:token-hcht8:wq4s7cwnxj64s5492rtcnz7hsp27dmzl8qxmwgz9v5kl56lqftr4bj

# 复制API地址

地址:https://rancher.ok96.cn:8443/v3

更新命令:

docker run --rm --name ranchercli 192.168.213.222:22280/cicd/rancher-cli:1.0.0  sh -c  "rancher login https://rancher.ok96.cn:8443/v3 --token token-hcht8:wq4s7cwnxj64s5492rtcnz7hsp27dmzl8qxmwgz9v5kl56lqftr4bj"
1

# 复制项目PROJECT ID

进入页面,查看yaml:

找到name及namespace:

name: p-4ltfh
namespace: c-m-hwhwchxr
1
2

即PROJECT ID: c-m-hwhwchxr:p-4ltfh

# 复制项目ContainerName

进入页面:

复制容器名称:container-0

# 更新镜像命令说明

命令:

rancher login ${Rancher.URL} --token ${rancher} --context ${RancherProjectId}
rancher kubectl set image deployment.apps/${projectConfig.projectName} ${containerName}=${IMAGE_FULL_PATH} -n ${K8S_NAMESPACE}
1
2

其中:

${Rancher.URL}:为api地址【https://rancher.ok96.cn:8443/v3】
${rancher}:为token【token-hcht8:wq4s7cwnxj64s5492rtcnz7hsp27dmzl8qxmwgz9v5kl56lqftr4bj】
${RancherProjectId}:为ProjectId【c-m-hwhwchxr:p-4ltfh】
${projectConfig.projectName}:为项目名称【ok-springboot-imdemo】
${containerName}:为容器名称【container-0】
${K8S_NAMESPACE}:为命名空间名称【ok】
${IMAGE_FULL_PATH}:为更新容器镜像的地址
1
2
3
4
5
6
7

# 更新镜像容器命令示例

示例:更新容器镜像为【192.168.213.222:22280/imdemo/ok-springboot-imdemo:7】

docker run --rm --name ranchercli 192.168.213.222:22280/cicd/rancher-cli:1.0.0  sh -c  "rancher login https://rancher.ok96.cn:8443/v3 --token token-hcht8:wq4s7cwnxj64s5492rtcnz7hsp27dmzl8qxmwgz9v5kl56lqftr4bj --context c-m-hwhwchxr:p-4ltfh && rancher kubectl set image deployment.apps/ok-springboot-imdemo container-0=192.168.213.222:22280/imdemo/ok-springboot-imdemo:7 -n ok"
1

# 附件

百度云下载:

链接:https://pan.baidu.com/s/1IXSRk4wSI_-ppAhn1PaFPg 
提取码:izt1
1
2

说明

文件名称 说明 备注
harbor-offline-installer-v2.2.3.tgz harbor安装包 https://github.com/goharbor/harbor/releases/
BinaryInstallation.zip Docker二进制安装包 -
ok-springboot-imdemo-dev.zip 微服务工程示例代码 -
上次更新: 2023/03/14, 05:37:24
K3S-在线安装

← K3S-在线安装

Copyright © 2019-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式