CI/CD持续集成与持续交付(下)-------- jenkins的节点管理,用户管理,结合ansible和k8s

Posted S4061222

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CI/CD持续集成与持续交付(下)-------- jenkins的节点管理,用户管理,结合ansible和k8s相关的知识,希望对你有一定的参考价值。

二. Jenkins

实验环境基于上篇笔记:https://editor.csdn.net/md/?articleId=119616169

1 jenkins节点管理–添加agent节点

不建议在jenkins的master(server6)构建任务,server7作为agent节点,构建任务放在agent端

jenkins是java开发的,agent端安装jdk和git

保证上网

安装插件 ssh agent

节点管理中----新建节点

此时只有master节点

master取消构建,只作调度

交由agent构建

安装插件后,会成功显示agent节点

None verifying 无需校验key

取消ssh,使用shell命令

docker项目选择手动构建

构建成功
查看控制台输出,此时已经由agent节点构建

server7上,查看镜像,此镜像是:删除之前的镜像,新建镜像

2 用户管理

系统管理----> 管理用户

新建用户

创建新用户 jiaojiao ,补全信息

查看用户列表,会有新的用户jiaojiao

以新建用户jiaojiao身份登陆,发现此用户具有全部权限

原因
系统管理—>全局安全配置中


默认的是登陆用户可以左任何事!!!

安装插件Role 安装后通过插件授权

系统管理--->全局安全配置


选择Role-Based Strategy(类似rbac),设置后除了admin用户以外,其他用户均需要授权才可进行操作


系统管理--->安全配置中会新增 Manager and Assign Roles

重新以jiaojiao用户登陆,发现没有任何权限!!!

系统管理--->安全--->Manager and Assign Roles中选择管理角色

管理角色:jiaojiao用户

设定所有以westos开头(westos .*)的项目jiaojiao用户具有以下权限

分配角色

设定jiaojiao为user用户

重新以jiaojiao用户身份登陆,可以看到westos项目!!!

admin用户,创建项目westos01 ,自由风格

此时有三个项目

测试查看用户jiaojiao的权限

可以删除westos01项目


admin用户登陆查看,已不存在westos01项目

3 jenkins结合ansible

在ansible和saltstack之间,通常几百个节点用ansible,因为ansible用ssh连接、几万个节点用saltstack,消息队列更加轻量级。

新建server8主机

查看正在运行的虚拟机:

server1为harbor仓库
server5为gitlab
server6为jenkins,ansible主机
server7为ansible的受控主机
server8为ansible的受控主机


取消agent构建,构建还是交由master

成功删除agent节点

master节点将原来的0修改

master关联项目成功

禁掉docker项目

创建自由风格的ansible项目

查看项目

server6配置ansible仓库,可以使用epel源下载


安装ansible

gitlab远程私有代码仓库中新建仓库

新建playbook仓库,选择私有,初始化自动生成readme文件

查看playbook仓库

本地git端ssh方式克隆远程私有代码仓库gitlab中的playbook仓库

编写playbook.yaml文件

template:
      src: httpd.conf.j2 %模板文件:j2
      dest: /etc/httpd/conf/httpd.conf
模板更改需要触发:notify,重启apache
配置触发器:handlers,


任一主机安apache,为ansible主机准备j2模板文件


复制httpd.conf文件,修改为j2模板

此模板中使用变量方式定义httpd的端口

参数化构建prod和test分别为不同的主机


编辑ansible.cfg配置文件

创建清单,server8用于测试,server7用于部署,使用不同的端口(可以写ip,域名一定要解析)

查看目录整体结构

将本地git端的数据上传到gitlab的playbook仓库中

gitlab中查看playbook仓库中的文件,上传成功!!!

jenkins中的ansible项目构建:
jenkins与gitlab数据同步


ansible项目,手动构建

查看构建历史

查看ansible项目的控制台输出

jenkins端查看,说明gitlab中的ansible项目与jenkins连接成功!!!

jenkins端,使用jenkins用户进行操作,需要给一个交互式bash


server7,server8
创建devops用户并修改密码,需要两节点的用户id相同

由于是以jenkins用户调用ansible命令,所以需要设置jenkins用户到目标主机的免密


测试免密

server7,server8
sudo授权

只需指定git仓库即可,无需gitlab主动触发,因为需要手动选择inventory构建参数
选择 参数化构建---选项参数


构建执行shell
执行playbook时可以指定inventory文件: test、prod

选择参数执行项目先测试test


查看构建历史

查看控制台输出

test为server7,成功部署apache,使用的是8080端口

选择参数执行项目测试prod

查看构建历史

查看控制台输出

prod为server8,成功部署apache,使用的是80端口

4 jenkins结合k8s

方法一:

ssh方式连接k8s master节点,然后执行kubectl命令即可。

方法二:

使用插件的方式管理k8s。
方法二可以查看:
https://blog.csdn.net/weixin_38320674/article/details/106654689?ops_request_misc=&request_id=&biz_id=102&utm_term=jenkins%E7%BB%93%E5%90%88k8s&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-4-.nonecase&spm=1018.2226.3001.4187

以上是关于CI/CD持续集成与持续交付(下)-------- jenkins的节点管理,用户管理,结合ansible和k8s的主要内容,如果未能解决你的问题,请参考以下文章

CI/CD与Docker

CI / CD /CD 持续集成 持续交付 持续部署

CICD - 持续集成与持续交付

CI/CD持续集成与持续交付(上)-------- git,gitee远程共有仓库和gitlab私有仓库,jenkins

CI/CD持续集成与持续交付(上)-------- git,gitee远程共有仓库和gitlab私有仓库,jenkins

教您一步一步利用Jenkins构建持续集成,持续交付环境CI/CD