K8S-CICD
# 架构
流程图
# 部署K8S
半离线部署
系统版本:CentOS Linux release 7.9.2009 (Core)
Kubernetes:1.17.1
Docker:18.06.1
2
3
# 部署包
地址
链接:https://pan.baidu.com/s/1pMiSfbz48ZQSwmPGC43RQA
提取码:xnh3
2
# 部署步骤
# 安装Master(201)
在master节点上执行。
上传k8sOfflineSetup20210720.zip文件到root目录下
scp k8sOfflineSetup20210720.zip root@192.168.213.201:/root
解压到/root(解压路径不能修改)
unzip k8sOfflineSetup20210720.zip
设置参数并安装
# master节点的主机名
export HOSTNAME=k8s-master
# kubernetes apiserver的主机地址
export APISERVER_NAME=apiserver.k8s.com
# 集群中master节点的ip地址
export MASTER_IP=192.168.213.201
# Pod 使用的网段
export POD_SUBNET=10.11.10.0/16
cd /root/k8sOfflineSetup
./setup_master.sh
2
3
4
5
6
7
8
9
10
11
# 安装Worker(202)
在worker节点上执行。
上传k8sOfflineSetup20210720.zip文件到root目录下
scp k8sOfflineSetup20210720.zip root@192.168.213.202:/root
解压到/root(解压路径不能修改)
unzip k8sOfflineSetup20210720.zip
获取加入master的参数(是在master节点上执行。)
# 在 master 节点执行
kubeadm token create --print-join-command
# 得到token和cert,这两个参数在2个小时内可以重复使用,超过以后就得再次生成
kubeadm join apiserver.k8s.com:6443 --token t8rn2w.zwfd42edrro02c50 --discovery-token-ca-cert-hash sha256:fe343cc72e449988acf789ba1c47fe83c7f80534fb7e0770f1fbe9b3facdbadb
2
3
4
5
设置参数并安装
在worker节点上执行。
# worker节点的主机名
export HOSTNAME=k8s-worker202
# kubernetes apiserver的主机地址
export APISERVER_NAME=apiserver.k8s.com
# 集群中master节点的ip地址
export MASTER_IP=192.168.213.201
# 加入master的token
export TOKEN=t8rn2w.zwfd42edrro02c50
# 加入master的证书
export export CERT=sha256:fe343cc72e449988acf789ba1c47fe83c7f80534fb7e0770f1fbe9b3facdbadb
cd /root/k8sOfflineSetup
./setup_worker.sh
2
3
4
5
6
7
8
9
10
11
12
# 安装Worker(203)
在worker节点上执行。
上传k8sOfflineSetup20210720.zip文件到root目录下
scp k8sOfflineSetup20210720.zip root@192.168.213.203:/root
解压到/root(解压路径不能修改)
unzip k8sOfflineSetup20210720.zip
设置参数并安装(token之类已获得,一样便可)
在worker节点上执行。
# worker节点的主机名
export HOSTNAME=k8s-worker203
# kubernetes apiserver的主机地址
export APISERVER_NAME=apiserver.k8s.com
# 集群中master节点的ip地址
export MASTER_IP=192.168.213.201
# 加入master的token
export TOKEN=t8rn2w.zwfd42edrro02c50
# 加入master的证书
export export CERT=sha256:fe343cc72e449988acf789ba1c47fe83c7f80534fb7e0770f1fbe9b3facdbadb
cd /root/k8sOfflineSetup
./setup_worker.sh
2
3
4
5
6
7
8
9
10
11
12
# 完成
现在你可以在master节点,执行kubectl get nodes看到所有节点都在线了。
kubectl get nodes
# 访问Kuboard
Kuboard是一个非常方便的web管理界面,安装完以后可以通过http://任意节点IP:32567/访问。
详细使用请参考 www.kuboard.cn (opens new window)
# 获取登陆Token
在 Master 节点上执行此命令
kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d
# 访问Kubernetes Dashboard
# 部署NFS
服务端IP:192.168.213.203
服务点目录:/data/share
# 部署
因为每台K8S都可能需要使用到挂载,故每台都需要安装
(192.168.213.201-203)
安装命令:
yum -y install nfs-utils rpcbind
# nfs 启动
# 为rpcbind和nfs做开机启动
systemctl enable rpcbind.service
systemctl enable nfs-server.service
#启动相关软件
systemctl start rpcbind.service
systemctl start nfs-server.service
2
3
4
5
6
7
8
9
10
# 203服务端配置
创建共享文件夹
mkdir -p /data/share
nfs 配置
vi /etc/exports
修改配置文件,增加下面这一行数据,指定的ip地址为客户端的地址,地址可以是一个网段(如:192.168.0.0/24)
/data/share 192.168.213.0/24(rw,no_root_squash,no_all_squash,sync)
加载配置文件,在相关软件启动后执行
exportfs -arv
# 201客户端测试
创建共享文件夹
mkdir -p /home/nfs_share
在你的 NFS 服务器设定妥当之后,我们可以在 client端先自我测试一下是否可以联机喔!利用 showmount 这个指令来查阅!
如果报:clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host),可能防火墙没关
showmount -e 192.168.213.203
挂载测试
mount -t nfs 192.168.213.203:/data/share /home/nfs_share
查看挂载情况,可以使用这个命令df -TH
df -TH
卸载
umount /home/nfs_share
# 部署Harbor
部署包官方地址:https://github.com/goharbor/harbor/releases
个人下载地址
链接:https://pan.baidu.com/s/1kmEPizetpsoF82FRdH3I9w
提取码:a4nh
2
IP:192.168.213.204
账号:admin
密码:Harbor12345
访问地址:http://192.168.213.204:20480
# 安装docker
安装docker及docker-compose
# 安装harbor
# 上传
上传harbor-offline-installer-v2.2.3.tgz文件到/data目录
# 解压
tar xzvf harbor-offline-installer-v2.2.3.tgz
# 新建文件harbor.yml
内容复制harbor.yml.tmpl
修改 hostname: 192.168.213.204 为本机IP
端口
修改数据存储地址/data/harbor/data
注释https
cd /data/harbor
vi harbor.yml
2
harbor.yml
hostname: 192.168.213.204
http:
port: 20480
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
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
# 安装
./install.sh
# 启动成功
查看一下
docker-compose ps
# 部署GitLab
使用docker-compose.yml便可
页面访问地址:http://192.168.213.204:8929
version: '3'
services:
gitlab:
image: 'gitlab/gitlab-ce:14.0.6-ce.0'
container_name: gitlab
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.213.204: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'
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
登录账号:root
登录密码:在服务启动后,查看config/initial_root_password文件
限制内存及时区
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://106.55.159.125:8929' #若有域名可以写域名
gitlab_rails['gitlab_shell_ssh_port'] = 2224
puma['per_worker_max_memory_mb'] = 1024 #更改内存限制设置
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
2
3
4
5
6
7
参考文档:https://docs.gitlab.com/ee/administration/operations/puma.html
# 内存问题
如果使用阿里云或腾讯云只有2G内存时,可以增加Swap内存
dd if=/dev/zero of=/swapfile bs=1k count=4816000
mkswap /swapfile
swapon /swapfile
2
3
修改docker-compose,设置内存上限和swap内存
version: '2.3'
services:
gitlab:
image: 'gitlab/gitlab-ce:14.0.6-ce.0'
container_name: gitlab
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.213.204:8929' #若有域名可以写域名
gitlab_rails['gitlab_shell_ssh_port'] = 2224
puma['per_worker_max_memory_mb'] = 256 #更改内存限制设置
gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
ports:
- '8929:8929'
- '2224:22'
volumes:
#将相关配置映射到当前目录下的config目录
- './config:/etc/gitlab'
#将日志映射到当前目录下的logs目录
- './logs:/var/log/gitlab'
#将数据映射到当前目录下的data目录
- './data:/var/opt/gitlab'
mem_limit: 1024m
memswap_limit: 4000m
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 部署Jenkins
由于原生镜像没有安装maven,故我们重新写一个Dockerfile生成镜像
Dockerfile
FROM jenkins/jenkins:2.303-centos7
USER root
RUN yum install -y maven
2
3
执行命令生成 镜像
cd 到dockerfiel文件目录下
docker build -t jenkins/jenkins:2.303-centos7-mvn ./
使用docker-compose.yml便可,docker目录挂载是为了在容器中使用docker命令
访问地址:http://192.168.213.204:7080
version: '3'
services:
jenkins:
image: 'jenkins/jenkins:2.303-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'
extra_hosts:
- "apiserver.k8s.com:192.168.213.201"
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
登录密码:在服务启动后,查看jenkins_home/secrets/initialAdminPassword文件
# Docker配置Harbor
201到204服务器均修改
# 修改docker.service
修改/etc/systemd/system/docker.service
将ExecStart=/usr/bin/dockerd改为
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.213.204:20480
# 重启docker
systemctl daemon-reload
systemctl restart docker
2
# 登录docker
docker login 192.168.213.204:20480 输入账号密码 账号:admin 密码:Harbor12345
# 上传镜像
先在Harbor中创建项目,例:imdemo
将本地镜像打标签,并上传
例:本地镜像原标签imtest:2.11.12
docker tag imtest:2.11.12 192.168.213.204:20480/imdemo/imtesth:2.11.12
推送镜像
docker push 192.168.213.204:20480/imdemo/imtesth:2.11.12
# 初始化Jenkins
使用管理员账号登录后,修改管理员信息:
登录名:wuxiaoku 账号:admin 密码:Wuxiaoku123
# 安装推荐的插件及账号
设置账号,更新密码,填写邮件地址,此处用户名为昵称,登录时使用admin
# 安装其他插件
打开 “系统管理” =》“管理插件” 然后安装
Kubernetes Continuous Deploy
Kubernetes
Gitlab Hook
GitLab
Build Authorization Token
Maven Repository Server
Maven Integration
Publish Over SSH
Docker plugin
SSH Pipeline Steps
2
3
4
5
6
7
8
9
10
点击安装
# 初始化Harbor
# 创建用户
帐号:wuxiaoku 密码:Wuxiaoku123
# 创建项目
# 增加成员
点击进去项目
# 初始化GitLab
使用管理员账号登录后,新增账号:
账号:wuxiaoku 密码:Wuxiaoku123
# 创建账号
# 初始化密码
在创建完成账号时,密码是不可填写的,在编辑中,初始化一下密码。
# 登录
先重置一下密码,然后保存登录到首页
# 初始化项目
# 创建空项目
# 创建dev分支
# 提交项目代码
提交到dev分支
代码:
链接:https://pan.baidu.com/s/1B2-l8Ahfda2qxbvjmWJdhQ
提取码:sxo4
2
# Jenkins配置K8S
# 配置插件
在jenkins初始化中已经安装了K8S插件,即现在开始配置即可
登录jenkins,在首页点击 Manage Jenkins --> Configure System
将网页拉动到最底下,点击新增一个云,就会出现Kubernetes
点击配置
填写Kubernetes地址然后点击测试,会报错
地址为:https://apiserver.k8s.com:6443
报错信息:
# k8s集群信息
[root@k8s-master ~]# kubectl cluster-info
Kubernetes master is running at https://apiserver.k8s.com:6443
KubeDNS is running at https://apiserver.k8s.com:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://apiserver.k8s.com:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
2
3
4
5
6
根据以上的配置,可以看到,已经是启用https了,这里就涉及到了密钥的问题。
# 创建admin证书
# 安装证书工具
安装cfssl
此工具生成证书非常方便, pem证书与crt证书,编码一致可直接使用
登录k8s master节点执行
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
chmod +x cfssl_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssljson_linux-amd64
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
2
3
4
5
6
7
8
9
10
11
# 准备证书签名请求
vi admin-csr.json
内容如下
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "HangZhou",
"L": "XS",
"O": "system:masters",
"OU": "System"
}
]
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
证书请求中的O 指定该证书的 Group 为 system:masters
而 RBAC 预定义的 ClusterRoleBinding 将 Group system:masters 与 ClusterRole cluster-admin 绑定,这就赋予了该证书具有所有集群权限 。
# 创建证书和私钥
cfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key --profile=kubernetes admin-csr.json | cfssljson -bare admin
最终生成以下3个文件:
admin.csr
admin-key.pem
admin.pem
2
3
# 配置证书
# 生成pkc格式证书
我们可以通过openssl来转换成pkc格式
openssl pkcs12 -export -out ./jenkins-admin.pfx -inkey ./admin-key.pem -in ./admin.pem -passout pass:secret
将jenkins-admin.pfx 下载至桌面
# 配置jenkins认证
# Kubernetes 服务证书 key
使用以下命令查看
root@k8s-master:~# cat /etc/kubernetes/pki/ca.crt
将证书内容填写,点击凭据后面的添加,点击Jenkins
得到jenkins-admin.pfk
文件后,点击Jenkins配置Credentials后面的Add,配置如下
上传证书
选择文件 jenkins-admin.pfk
输入密码 secret,后面的内容可以不填写,点击添加。
选择 凭据,点击连接测试。
出现Connected to Kubernetes v1.17.1 表示连接成功。
点击保存
# GitLab+Jenkins配置
# GitLab与Jenkins配置
# 设置jenkins 用户ssh秘钥
使用Root登录GitLab,点击用户名称
点击 Impersonate ,表示冒充jenkins 用户
点击编辑
点击 ssh keys
登录到jenkins服务器(204),生成秘钥
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
查看公钥
cat /root/.ssh/id_rsa.pub
将公钥内容复制到网页,点击添加秘钥
# 创建Access Tokens
点击左侧的Access Tokens,输入用户 wuxiaoku,勾选权限,点击创建
复制token,待会 jenkins 设置时,会用到
MXMnxpwMLAgiP9zyS5dp
点击进入你的项目
点击项目
点击设置-成员
把管理员也添加进去,这样管理员也有权限了。如果项目一开始是管理员创建,这时就选择子用户
# Jenkins配置Git/GitLab
# Jenkins配置GitLab
点击 系统管理--> 系统配置 -->配置 -->Gitlab
Connection Name ”随便填,“Git Host URL”填GitLab的访问地址,然后点“Add”——“jenkins”,如下所示
选择gitlalb api,输入 jenkins 用户创建的token
MXMnxpwMLAgiP9zyS5dp
选择 gitlab api token,点击测试连接,出现 Success,表示成功
点击最下面的保存
# Jenkins配置Git
点击 Manage Jenkins --> Configure System -->配置 -->Git plugin
设置Git插件的全局配置,然后点击最下面的保存。
# 创建一个Jenkins Job
此处创建用于测试是否正常使用
点击 新建Item,item name”可以随便起,然后点击“构建一个自由风格的软件项目”,点击Ok
# 配置Job的源码管理
选择“源码管理”,选择“Git”,然后去GitLab中复制项目地址,粘贴到“Repository URL”,然后点击“credentials”后面的“Add”按钮
类型,选择 SSH Username with private key
Username 填 root
PrivateKey 选择Enter directly,点击add
登录到jenkins 服务器,查看私钥
cat /root/.ssh/id_rsa
将内容复制到网页上面,点击添加
在“credentials”里选择我们刚刚创建的认证方式:root
如果没报错,说明成功了,点击页面底部的“apply”。如果出错了,会在“Repository URL”和“Credentials”之间显示红色的错误信息。
jenkins job默认对master分支进行构建,你也可以自定义分支。这要求你的Gitlab代码仓库中要存在这个分支,一般来说,就是要向代码仓库提交一次更改,请 自行完成(Gitlab项目刚创建时是空的,一个分支也没有,这样的话,自动构建时会出错)
我们上文创建了dev分钟,故选择dev
# 配置Job的构建触发器
选择“构建触发器”,勾选“Pull SCM(轮询 SCM)”,这个选项会每隔一段时间检查一下GitLab仓库中代码是否有更新,有的话就执行构建操作。日程表如何设置,在这个输入框下面有说明
扩展阅读:
常见构建触发器:
- Build after other projects are built 当另一个构建任务完成之后触发
- Build periodically 周期性的触发
- Build when a change is pushed to GitLab. GitLab CI Service URL: http://191.8.2.112:12000/project/test-go-dev 当代码有更新的时候触发,通过GitLab CI
- GitHub hook trigger for GITScm polling 通过Github钩子触发
- Poll SCM 定期检查代码有无更新,有更新时触发
这只是个人理解,具体怎么样大家可以试试,Poll SCM方式我是试过的。
# 配置Job的构建脚本
在build栏目里,选择“jenkins execute shell”,然后输入你项目的构建命令(这依赖于你的项目,如Maven的maven build,gulp的gulp xxx 等等)
这里我输入一段测试命令,表示将git项目的代码复制到/tmp/test
\cp -r $WORKSPACE /tmp/test
点击 可用的环境变量列表,就可以看到很多变量
其中 WORKSPACE 表示,下载git项目后的路径。
由于git项目为itest,因此路径为:/var/lib/jenkins/workspace/itest
点击保存
点击 立即构建,点击下面的构建过程
点击控制台输出,就可以看到完整的cp命令
# Jenkins配置maven
我们在生成镜像时已经安装了maven,故这边只要配置即可
# 查看java和maven安装地址
登录jenkins服务器204
docker exec -it jenkins /bin/sh
mvn -version
Apache Maven 3.0.5 (Red Hat 3.0.5-17)
Maven home: /usr/share/maven
Java version: 1.8.0\_292, vendor: AdoptOpenJDK
Java home: /usr/lib/jvm/adoptopenjdk-8-hotspot/jre
Default locale: en\_US, platform encoding: ANSI\_X3.4-1968
OS name: "linux", version: "3.10.0-1160.el7.x86\_64", arch: "amd64", family: "unix"
2
3
4
5
6
7
8
9
# 新增JDK
登录到Jenkins管理后台,点击 Manage Jenkins --> Global Tool Configuration
点击 新增jdk
自动安装 前面的勾选,去掉,输入别名和JAVA_HOME
注意:JAVA_HOME的输入框下面,不要有警告或者错误信息,否则就是路径不正确。
使用 mvn -version 命令时,就已经打印了Java home变量,注意:去除最后的jre
# 新增Maven
点击新增Maven
同样去除自动安装,填写别名
点击保存
# Jenkins使用docker命令
此处还是为测试任务使用,加深对Jenkins的了解
创建流水线任务
输入pipeline脚本,点击保存
pipeline {
agent any
stages {
stage('Test') {
steps {
sh 'docker images'
}
}
}
}
2
3
4
5
6
7
8
9
10
立即构建,查看控制台
# Jenkins+Harbor+GitLab+K8S
# 方式一
缺点:对K8S脚本generateyaml.sh创建模板较死板,我是随便摸索写的测试
个人喜欢方式二
# K8S创建命名空间
登录Kuboard创建命名空间:imtest
# K8S创建Harbor密码信息
输入Harbor之前创建的账号密码
# 工程新建脚本
将脚本放在工程根目录下
脚本:
链接:https://pan.baidu.com/s/1Z73E8sBq9TqYR2sEWiFeZg 提取码:pkrg
目录结构如下
# Jenkins创建任务
新建流水线任务:imtest1
构建触发器
*/1 * * * *
流水线
点击保存
立即构建-查看日志,第一次会报错。
进入201服务器,执行命令
kubectl apply -f /root/data/app/imdemo.yaml
Jenkins再次构建就成功了,后续代码提交自动构建
# 方式二
缺点:需要先去创建一次pod
优点:自由配置pod
# K8S创建命名空间
登录Kuboard创建命名空间:imtest
# K8S创建Harbor密码信息
输入Harbor之前创建的账号密码
地址要用http://ip:端口
# 工程新建脚本
地址:
链接:https://pan.baidu.com/s/1gTttHuYcQgCZUIqmQBjIEQ 提取码:77rh
目录结构如下
# Jenkins创建任务
新建流水线任务:imtest1
构建触发器
*/1 * * * *
流水线
点击保存
立即构建-查看日志,第一次会报错。
# K8S创建Pod
如图所示,创建服务名称imdemo
点击保存
创建完成
查看CI/CD集成,复制到剪切板
修改Jenkinsfile
将复制的内容替换掉红色方块内容
代码提交自动构建成功
缺陷:后续需要修改的地方
Jenkinsfile文件中镜像版本每次提交需要修改变化,这4个地方
修复缺陷,每次提交不用再修改上文4个标红的地方,使用$BUILD_ID代替
Jenkinsfile
pipeline {
agent any
stages {
stage('package') {
steps {
sh 'mvn clean package'
}
}
stage('buildDockerImages') {
steps {
sh 'docker login 192.168.213.204:20480 -u wuxiaoku -p Wuxiaoku123'
sh 'docker build --build-arg app=imdemo.jar -t 192.168.213.204:20480/kudemo/imdemo:$BUILD_ID .'
sh 'docker push 192.168.213.204:20480/kudemo/imdemo:$BUILD_ID'
sh 'docker rmi 192.168.213.204:20480/kudemo/imdemo:$BUILD_ID'
}
}
stage('deploymentK8S'){
steps {
sh """
curl -X PATCH \
-H "content-type: application/strategic-merge-patch+json" \
-H "Authorization:Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ikl1SGVIeVY3TEdEeFZ1b3Z4QzU5eEFmU2pacGtVWGlRTHpIQ3hBR3V5NTQifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJvYXJkLXVzZXItdG9rZW4tcm1zcHoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoia3Vib2FyZC11c2VyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOTE0ZWVlYjUtMmZiOS00YzZmLTg1YzUtZjYzOWFiODZlODJjIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmt1Ym9hcmQtdXNlciJ9.K7h7UrtDcsUNy2GYTznloOPZiWML0ll_zEhd1fUaY0pioTQ-MEPgDdp6rRnZmUm7ujNM_zsjzhS4KTbezSV-1Od0O-yhQrTyrqpvcXBi_EP77s9nDueZ_4fMx76Eh-cZfsOPQxYtG0sufqZmqcM1DWzNHDQcBMmFy1nhDbPncnmiirNrEBSFfrVb-ie6Z33Ip61tZjkYvrW6PeVHXEagTjrHnjmO9zw_L8to9V4pE990vcQrJE3f5pUN94k7JD5EhlJT0j1ljPrhRbpL8m-KjLpypKqfq9i7mj3vXE9_1mEVSi78nGuyR2cBaCLPoV7C3HRUN_dvCdR1tcI6nOLT2Q" \
-d '{"spec":{"template":{"spec":{"containers":[{"name":"imdemo","image":"192.168.213.204:20480/kudemo/imdemo:$BUILD_ID"}]}}}}' \
"http://192.168.213.201:32567/k8s-api/apis/apps/v1/namespaces/imtest/deployments/web-imdemo"
"""
}
}
}
}
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
参考博客部分内容:
https://www.jianshu.com/p/fd9f1076ea2d
https://www.cnblogs.com/xiao987334176/p/11434849.html