【Kubernetes】第三篇 - ci-server 构建节点 Docker、Jenkins 环境搭建

news2024/11/16 23:53:33

一,前言

上一篇,主要介绍了阿里云服务器的采购和简单配置:

三台服务器规划如下:

服务配置内网IP外网IP说明
ci-server2c4g172.17.178.104182.92.4.158Jenkins + Nexus + Docker
k8s-master2c4g172.17.178.10547.93.9.45Kubernetes + Docker
k8s-node2c1g172.17.178.10639.105.58.35Kubernetes + Docker

本篇,对 ci-server 进行环境安装与配置;


二,ci-server 构建机的 CI 流程简介

构建机 ci-server(2c4g),用于提供 ci 所需的 Jenkins 服务、 Docker 私有仓库;

流程如图:

ci流程

CI 流程如下:

  • IDE 本地开发,上传代码到 Git 仓库;
  • 手动或自动触发 jenkins 拉取指定代码仓库并执行构建任务;
  • 构建 docker 镜像并发布至私有镜像仓库;

三,安装 docker

1,docker 简介

  • Docker 是 Docker.Lnc 公司开源的,基于 LXC 技术之上搭建的 Container 容器引擎,属于Linux容器的一种封装,提供简单易用的容器使用接口;
  • Docker 使用 Go 语言开发实现,基于 Linux 内核的 cgroup,namespace,OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器
  • Docker 将应用程序与该程序的依赖,打包在一个文件里面,运行这个文件,就会生成一个虚拟容器

2,安装 docker

添加 docker 阿里云镜像源

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 docker 社区版本:docker-ce

yum install docker-ce -y

启动 docker

systemctl start docker

设置 docker 开机启动

systemctl enable docker

3,配置镜像加速

配置阿里云安装源:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fwvjnv59.mirror.aliyuncs.com"]
}
EOF

重启 docker 使镜像配置生效

// 重载配置文件
sudo systemctl daemon-reload
sudo systemctl restart docker

四,安装 Jenkins

1,Jenkins 简介

  • Jenkins:一个基于 Java 语言开发的持续构建工具平台,用于持续、自动的构建和测试你的软件和项目。
  • Jenkins 能够执行预设的构建脚本、与 Git 代码仓库集成,实现自动/定时触发构建任务;

2,安装 Jenkins

安装 java

yum install -y java

切换 jenkins 安装源

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

安装 jenkins

yum install jenkins -y

启动 jenkins 服务

systemctl start jenkins.service

注意,此时还无法访问,需要系统关闭防火墙、开放端口访问

关闭防火墙

// 关闭防火墙
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=50000/tcp --permanent

// 重启防火墙
systemctl reload firewalld

开放端口访问
配置 ECS 实例安全组:添加 8080 入方向,开放 8080 端口给外部访问:
安全组

这样就可以正常访问 Jenkins:http://182.92.4.158:8080/login

3,配置 Jenkins

获取管理员密码

首次访问 Jenkins 需要使用管理员密码登录并重置密码
image.png

页面显示了 jenkins 默认密码所在位置,打开文件获得解锁 jenkins 的密码:

[root@iZ2ze7rkgit9zoa18pxu73Z ~]# cat /var/lib/jenkins/secrets/initialAdminPassword

26b889490519462f978276eb8f43882d

输入默认密码解锁 jenkins,进入 jenkins 初始化;

安装 jenkins 插件

修改 jenkins 安装源

在安装插件前,需要先切换 jenkins 安装源,否则会很慢;
修改 jenkins 插件安装的路径,加快插件安装的速度:

// 将 jenkins 官方源,修改为 jenkins 清华源
sed -i 's/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' /var/lib/jenkins/updates/default.json

// 将谷歌的安装源,修改为百度的安装源
sed -i 's/http://www.google.com/https://www.baidu.com/g' /var/lib/jenkins/updates/default.json

说明:sed:修改字符串;-i:替换字符串;原地址;目标地址;

jenkins 插件的安装源更新完成后,继续操作 jenkins 初始化,安装插件:

选择“安装推荐的插件”,等待 3~5 分钟插件安装完成:

创建管理员账户

保存并完成

保存并完成

开始使用 Jenkins

至此,jenkins 安装并初始化完成;


五,测试并解决问题

1,测试 Jenkins 构建

新建 item

输入任务名称,选择自由项目,点击确定

暂不配置 Git 仓库,单纯构建空项目用于测试:

立即构建

查看构建日志:

进入构建

查看控制台输出

2,测试拉取 docker 镜像(解决权限问题)

任务配置:

添加构建步骤:执行 shell

shell 内容:查看 docker 版本并拉取 node 最新镜像:

保存后,重新构建任务,查看日志:

拉取镜像失败,原因:没有权限

报错原因:

当前 jenkins 用户不能访问 docker 服务;

解决方案:

需要将 jenkins 添加至 docker 的 group 中,

jenkins 用户属于 docker 组,就可以访问 docker 服务了;

// 创建 docker 组
[root@iZ2ze7rkgit9zoa18pxu73Z ~]# groupadd docker
groupadd:“docker”组已存在

// 将 jenkins 用户添加到 docker 组中
[root@iZ2ze7rkgit9zoa18pxu73Z ~]# gpasswd -a jenkins docker
正在将用户“jenkins”加入到“docker”组中

// 更新 docker 组
[root@iZ2ze7rkgit9zoa18pxu73Z ~]# newgrp docker
[root@iZ2ze7rkgit9zoa18pxu73Z ~]# 

再次构建还是失败!需要重启 jenkins,使配置生效:

systemctl restart jenkins.service

等待 jenkins 重启完成之后,再次构建;

此时,可以正常拉取 docker 镜像,等待构建完成:

jenkins 构建成功;

3,Jenkins 任务添加 node 支持

安装 NodeJS 插件

系统管理 => 插件管理 => 可选插件 => 搜索并安装“NodeJS”插件

安装 node 插件,为项目构建添加 node 支持(构建时可以使用 node 脚本)

安装完成后,勾选重启 jenkins,重启完成后,重新登录;

配置 NodeJS

系统管理 => 全局工具配置 => NodeJS => 新增 NodeJS:

找到 NodeJS,选择 node 版本,起别名,新增安装(选择从镜像安装)

备注:构建 vue 项目选择 15 版本会失败,12 版本可以成功;

配置 nodejs 镜像

完成后,保存应用;这样,就完成了 node 环境的添加

任务添加 nodejs 支持

任务配置 => 构建环境 => 勾选 Provide Node & npm bin/ folder to PATH

将 nodejs 和 npm 的 bin 目录添加到 PATH 中:

保存/应用后,构建阶段就可以使用 node 环境了;

测试 Jenkins 任务构建

重新启动构建:

备注:
第一次会稍慢一些,要下载并解压 nodejs,第二次开始构建就会比较快了;

有了 node 环境,构建脚本可以执行基于 node 的构建命令;


六,结尾

本篇,完成了 ci-server 的构建环境配置:

  • ci-server 构建机的 CI 流程简介;
  • Docker 的安装、配置、测试;
  • Jenkins 的安装、配置、测试;

下一篇,K8S 集群搭建;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/354786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM uboot 源码分析5 -启动第二阶段

一、start_armboot 解析6 1、console_init_f (1) console_init_f 是 console&#xff08;控制台&#xff09;的第一阶段初始化。_f 表示是第一阶段初始化&#xff0c;_r 表示第二阶段初始化。有时候初始化函数不能一次一起完成&#xff0c;中间必须要夹杂一些代码&#xff0c;…

ccc-pytorch-回归问题(1)

文章目录1.简单回归实战&#xff1a;2.手写数据识别1.简单回归实战&#xff1a; 用 线性回归拟合二维平面中的100个点 公式&#xff1a;ywxbywxbywxb 损失函数&#xff1a;∑(yreally−y)2\sum(y_{really}-y)^2∑(yreally​−y)2 迭代方法&#xff1a;梯度下降法&#xff0c;…

【QA】[Vue/复选框全选] v-model绑定每一项的赋初值问题

发生场景&#xff1a;不只是复选框的状态改变&#xff0c;还有的功能要用到复选框的选中状态&#xff0c;比如&#xff1a;购物车计算总价&#xff0c;合计等等。 引入&#xff1a;复选框 checkbox 在使用时&#xff0c;需要用v-model绑定布尔值&#xff0c;来获取选中状态&…

一台电脑安装26个操作系统(windows,macos,linux,chromeOS,Android,静待HarmonyOS)

首先看看安装了哪些操作系统1-4: windows系统 四个5.Ubuntu6.deepin7.UOS家庭版8.fydeOS9.macOS10.银河麒麟11.红旗OS12.openSUSE Leap13.openAnolis14.openEuler(未安装桌面UI)15.中标麒麟&#xff08;NeoKylin&#xff09;16.centos17.debian Edu18.fedora19.oraclelinux(特别…

Rust Web入门(一):TCP 和 HTTP Server

本教程笔记来自 杨旭老师的 rust web 全栈教程&#xff0c;链接如下&#xff1a; https://www.bilibili.com/video/BV1RP4y1G7KF?p1&vd_source8595fbbf160cc11a0cc07cadacf22951 学习 Rust Web 需要学习 rust 的前置知识可以学习杨旭老师的另一门教程 https://www.bili…

【原创】java+swing+mysql图书管理系统设计与实现

图书管理系统是一个比较常见的系统&#xff0c;今天我们主要介绍如何使用javaswiingmysql去开发一个cs架构的图书管理系统&#xff0c;方便学生进行图书借阅。 功能分析&#xff1a; 宿舍报修管理系统的使用角色&#xff0c;一般分为管理员和学生&#xff0c;管理员主要进行学…

学习OpenGL图形2D/3D编程

环境&#xff1a;WindowsVisual Studio 2019最流行的几个库&#xff1a;GLUT&#xff0c;SDL&#xff0c;SFML和GLFWGLFWGLAD库查看显卡OPENGL支持情况VS2019glfwgladopenGL3.3顶点着色器片段着色器VAO-VBO-(EBO)->渲染VAO-VBO-EBO->texture纹理矩阵matrix对图形transfor…

jmx prometheus引起的一次cpu飙高

用户接入了jmx agent进行prometheus监控后&#xff0c;在某个时间点出现cpu飙高 排查思路&#xff1a; 1、top&#xff0c;找到java进程ID 2、top -Hp 进程ID&#xff0c;找到java进程下占用高CPU的线程ID 3、jstack 进程ID&#xff0c;找到那个高CPU的线程ID的堆栈。 4、分析堆…

jenkins基础部署

一、jenkins是什么1.Jenkins的前身是Hudson&#xff0c;采用JAVA编写的持续集成开源工具。Hudson由Sun公司在2004年启动&#xff0c;第一个版本于2005年在java.net发布。2007年开始Hudson逐渐取代CruiseControl和其他的开源构建工具的江湖地位。在2008年的JavaOne大会上在开发者…

【Vue3源码】第二章 effect功能的完善下

【Vue3源码】第二章 effect功能的完善下 前言 上一章节我们实现了effect函数的runner 和 scheduler&#xff0c;这一章我们继续完善effect函数的功能&#xff0c;stop和onstop。 1、实现effect的stop功能 顾名思义&#xff0c;stop就是让effect停下来的函数。那么怎么才能让…

系统分享|分享几个Windows系统镜像下载网站

&#x1f4e3;今日作品&#xff1a;如何关闭Microsoft start方法介绍&#x1f466;创作者&#xff1a;Jum朱⏰预计花费&#xff1a;10分钟&#x1f4d6;个人主页&#xff1a;Jum朱博客的个人主页系统之家传送门&#xff1a;https://www.xitongzhijia.net/这个是老牌一直还在运营…

聊聊RocketMQ 的功能特性

这是RocketMQ的第三篇文章&#xff0c;前两篇文章我们说了一下rocketmq的入门安装和开发配置&#xff0c;以及他的一些名词解释&#xff0c;RocketMQ入门第一次&#xff0c;RocketMQ&#xff08;二&#xff09; 领域名词。今天我们来说说的他的一些功能特性。明确区分这些功能特…

[AI生成图片] 效果最好的Midjourney 的介绍和使用

Midjourney介绍&#xff1a; 是一个文本生成图片的扩散模型&#xff0c;能够根据输入的任何文本生成令人难以置信的图像&#xff0c;让数十亿人在几秒钟内创造惊人的艺术。为方便用户控制和快速生成图片&#xff0c;打开后在页面底部输入文本内容&#xff0c;稍等一小会&#…

基于easyexcel的MySQL百万级别数据的excel导出功能

前言最近我做过一个MySQL百万级别数据的excel导出功能&#xff0c;已经正常上线使用了。这个功能挺有意思的&#xff0c;里面需要注意的细节还真不少&#xff0c;现在拿出来跟大家分享一下&#xff0c;希望对你会有所帮助。原始需求&#xff1a;用户在UI界面上点击全部导出按钮…

全网多种方式解决The requested resource [/] is not available的错误

文章目录1. 复现错误2. 分析错误3. 解决错误3.1 本地项目3.2 线上项目4. 此错误的其他解决方法5. 补充说明1. 复现错误 曾记得&#xff0c;当初使用idea来写Java web项目时&#xff0c;常常因为Tomcat配置导致如下错误&#xff1a; 即The requested resource [/] is not avail…

自动化完成1000个用户的登录并获取token并生成tokens.txt文件

自动化完成1000个用户的登录并获取token并生成tokens.txt文件 写作背景 在我学习使用redis实现秒杀功能的过程中&#xff0c;在编写完秒杀代码后&#xff0c;需要使用Jmeter实际测试1000个用户进行秒杀&#xff0c;由于秒杀功能需要在用户登录完成后才能实现&#xff0c;用户是…

DFS深度优先搜索—Java版

递归三要素 递归的定义 递归的拆解 递归的出口 什么时候使用DFS&#xff1f; 深度回溯问题&#xff08;DFS与回溯区别不大&#xff09; 二叉树问题 组合、排列问题 找方案问题&#xff08;解空间是一棵树或者图&#xff0c;需要自行构造图/树&#xff09; 图的搜索问题…

Smokeping的主从模式部署

Smokeping 支持 Standalone&#xff08;单机&#xff09;模式和 Master/Slave&#xff08;主从&#xff09;模式。 之前老苏折腾过单机模式&#xff0c;这次应网友 Roxmie 的要求&#xff0c;研究了一下主从模式的部署 文章传送门&#xff1a; 网络性能监控工具Smokeping 因为…

Go基础-环境安装

文章目录1 Go?Golang?2 下载Go3 windows安装4 测试是否成功1 Go?Golang? Go也称为Golang&#xff0c;是Google开发的一个开源的编译型的静态语言。 Golang的主要关注点是高可用、高并发和高扩展性&#xff0c;Go语言定位是系统级编程语言&#xff0c;对web程序具有很好的支…

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

目录 第一步&#xff1a;记录批导步骤编辑数据源对应字段 第二步&#xff1a;维护数据源 第三步&#xff1a;维护数据源对应字段&#xff08;重要&#xff09; 第四步&#xff1a;维护数据源关系。 第五步&#xff1a;维护数据源与导入字段的对应关系。 第六步&#xff0…