这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战」
一. 在node节点上安装软件. 具体软件内容如下
1 | arduino复制代码1. 下载jdk |
export JAVA_HOME=/home/jdk1.8.0_161
export JRE_HOME=JAVAHOME/jre exportCLASSPATH=.:{JAVA_HOME}/jre
export CLASSPATH=.:JAVAHOME/jre exportCLASSPATH=.:{JAVA_HOME}/lib:JREHOME/lib exportPATH=.:{JRE_HOME}/lib
export PATH=.:JREHOME/lib exportPATH=.:{JAVA_HOME}/bin:$PATH
1 | 复制代码 |
1 | bash复制代码2. 下载tomcat, 到node的/home目录下 |
1 | bash复制代码3. 下载jenkins 到/home |
1 | 复制代码 |
1 | arduino复制代码4. 下载git, 直接在node执行命令 |
1 | bash复制代码5. 下载maven, 到/home目录 |
export M2_HOME=/home/maven3
export CLASSPATH=CLASSPATH:CLASSPATH:CLASSPATH:M2_HOME/lib
export PATH=PATH:PATH:PATH:M2_HOME/bin
1 | xml复制代码 |
二. jenkins配置
然后, 在服务器找到初始密码, 填入
- 选择手动安装插件
- 选择安装的插件
1 | bash复制代码 |
手动添加maven插件
管理–>插件管理–>搜索maven Integration
- jenkins全局工具配置中, 配置jdk/git/maven
进入系统配置–>全局工具配置
配置jdk和git
三. jenkins + k8s发布实例
三个目标:
- Registry安装配置和使用
- jenkins项目创建和配置
- jenkins项目构建
- docker的Registry的安装和配置
在node节点上, 获取registry镜像
1 | 复制代码docker pull registry |
启动容器
1 | arduino复制代码docker run -p 5000:5000 -v /home/registry_images:/var/lib/registry -d registry |
这里将registry挂载到了本地目录, 避免docker重启后, 镜像丢失
- registry的使用
修改master机器上的registry容器为所在的宿****主机
1 | bash复制代码/etc/docker/daemon.json |
1 | perl复制代码{ |
我的registry在node节点上, node的ip是192.168.1.104
重启docker
1 | 复制代码systemctl daemon-reload |
下载一个nginx并上传到Registry仓库
1 | bash复制代码领取nginx镜像 |
尝试把 192.168.1.104:5000/nginx:test上传到我们的Registry仓库
1 | bash复制代码docker push 192.168.1.104:5000/nginx:test |
可以成功push, 说明我们的仓库是创建成功了.
下面在node上做同样的操作. 修改/etc/docker/daemon.json文件
1 | json复制代码{ |
重启docker
1 | 复制代码systemctl daemon-reload |
- 在Jenkins上构建项目
1 | markdown复制代码构建的整体流程: |
目的是: 可以根据分支进行构建.或者标签进行构建
项目地址: github.com/solochen84/…
git项目地址: github.com/solochen84/…
这个项目是public的, 所以, 不需要配置Credentials
设置构建完之后执行的动作
脚本内容
1 | bash复制代码#!/bin/sh |
1 | javascript复制代码创建deploy_docker文件. 目录: /root/docker_dir/deploy_docker.sh. 文件内容如下 |
1 | 复制代码权限 |
1 | bash复制代码chmod 775 deploy_docker.sh |
deploy_docker.sh文件内容
1 | bash复制代码#!/bin/sh |
设置了免密登录, jenkins就可以到k8s上运行脚本, 执行命令
- 在jenkins所在服务器上执行
1 | css复制代码生成秘钥 |
- 测试免密登录
yaml文件的位置, 是在项目里面的.
1 | bash复制代码set -e |
这里的ip地址填master的ip地址
构建的过程中, 会出现各种各样的问题
参考文章: www.cnblogs.com/nnylee/p/11…
修改对应的shell脚本
1 | bash复制代码set -e |
- spec.template.metadata.labels: Invalid value: map[string]string{“app”:”maven”}:
selector
does not match templatelabels
.
Build step ‘Execute shell’ marked build as failure
参考的是这篇文章: www.cnblogs.com/robinunix/p…
我修改后的配置
1 | yaml复制代码apiVersion: v1 |
然后重新启动, 成功!
1 | sql复制代码kubectl get deployments --all-namespaces |
发现,name为maven的deployment的Ready状态是0个
查看pod
1 | sql复制代码kubectl get pod --all-namespaces |
发现有一个pending状态
查看pod的日志
1 | sql复制代码 kubectl describe pod maven-7589958577-5ms68 -n default |
本文转载自: 掘金