基于Kubernetes/K8S构建Jenkins持续集成平台(下)

简介: Jenkins-Master-Slave架构图回顾

Jenkins-Master-Slave架构图回顾:

2387773-20220308171711369-1268596781.png


安装和配置NFS


NFS简介


NFS(Network File System),它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。我们可以利用NFS共享Jenkins运行的配置文件、Maven的仓库依赖文件等


NFS安装


我们把NFS服务器安装在20.0.0.10机器上

安装NFS服务(在所有K8S的节点都需要安装)

yum install -y nfs-utils

创建共享目录


mkdir -p /opt/nfs/jenkins


vi /etc/exports #编写NFS的共享配置


#内容如下:

/opt/nfs/jenkins *(rw,no_root_squash) *代表对所有IP都开放此目录,rw是读写


启动服务

 

systemctl enable nfs 开机启动

systemctl start nfs 启动


查看NFS共享目录

 

showmount -e 20.0.0.10



 

Kubernetes安装Jenkins-Master


创建NFS client provisioner


nfs-client-provisioner 是一个Kubernetes的简易NFS的外部provisioner,本身不提供NFS,需要现有的NFS服务器提供存储。

 

上传nfs-client-provisioner构建文件


2387773-20220308210246251-1438399793.png


其中注意修改deployment.yaml,使用之前配置NFS服务器和目录


2387773-20220308210510374-572263821.png


构建nfs-client-provisionerpod资源

 

cd nfs-client

kubectl create -f .


查看pod是否创建成功

kubectl get pods


装 Jenkins-Master

上传Jenkins-Master构建文件


2387773-20220308210246251-1438399793.png


创建kube-ops的namespace

因为我们把Jenkins-Master的pod放到kube-ops下

kubectl create namespace kube-ops


构建Jenkins-Masterpod资源

 

cd jenkins-master

kubectl create -f .


查看pod是否创建成功

kubectl get pods -n kube-ops


查看信息,并访问

查看Pod运行在那个Node上


2387773-20220308210805839-1806776709.png


查看分配的端口


2387773-20220308210837149-2021777713.png


然后去访问:http://20.0.0.70:31087/20.0.0.70k8s-node1IP


2387773-20220308211003663-761079535.png


看到这个页面就很简单了!

找到密钥复制进去登录:


2387773-20220308211038474-14770798.png


进去后就创建一个管理员用户都是老生常谈的操作了就不多说了

然后就实现的界面了!


2387773-20220308211052953-754825729.png

然后继续下面的操作!

 


设置插件下载地址:

cd /opt/nfs/jenkins/kube-ops-jenkins-home-jenkins-0-pvc-e90ef63e-5bf2-4747-a9b3-e8fe13ae21cf/updates 

sed -i 's/http:\/\/updates.jenkins- ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json && sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json


Manage Plugins点击Advanced,把Update Site改为

国内插件下载地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

 

 

先安装基本的插件:“


  1. Localization:Chinese
  2. Git
  3. Pipeline
  4. Extended Choice Parameter

还有一个jenkins与k8s整合的插件:

  1. kubernetes

 

重启Jenkins


实现JenkinsKubernetes


系统管理->系统配置->云->新建云->Kubernetes


2387773-20220308223649811-1101937960.png

2387773-20220308223725807-1336577585.png

2387773-20220308223754769-1328973855.png


kubernetes 地 址 采 用 了 kube 的 服 务 器 发 现 :https://kubernetes.default.svc.cluster.local 


namespace填kube-ops,然后点击Test Connection,如果出现 Connection test successful 的提示信息证明 Jenkins 已经可以和 Kubernetes 系统正常通信


Jenkins URL 地址:http://jenkins.kube-ops.svc.cluster.local:8080



构建Jenkins-Slave自定义镜像


Jenkins-Master在构建Job的时候,Kubernetes会创建Jenkins-Slave的Pod来完成Job的构建。我们选择  运行Jenkins-Slave的镜像为官方推荐镜像:jenkins/jnlp-slave:latest,但是这个镜像里面并没有Maven    环境,为了方便使用,我们需要自定义一个新的镜像:


准备材料:


2387773-20220308224012562-452767536.png


Dockerfile文件内容如下:

 

FROM jenkins/jnlp-slave:latest


MAINTAINER lvbu


# 切换到 root 账户进行操作

USER root


# 安装 maven

COPY apache-maven-3.6.2-bin.tar.gz .


RUN tar -zxf apache-maven-3.6.2-bin.tar.gz && \

   mv apache-maven-3.6.2 /usr/local && \

   rm -f apache-maven-3.6.2-bin.tar.gz && \

   ln -s /usr/local/apache-maven-3.6.2/bin/mvn /usr/bin/mvn && \

   ln -s /usr/local/apache-maven-3.6.2 /usr/local/apache-maven && \

   mkdir -p /usr/local/apache-maven/repo


COPY settings.xml /usr/local/apache-maven/conf/settings.xml


USER jenkins

 

然后构建镜像:然后查看

docker build -t jenkins-slave-maven:latest .


2387773-20220308224230341-889380513.png

下面要做的就是修改指向harbor:K8s三台都要做


2387773-20220308224333871-1124280760.png


然后k8s master登录harbor:

docker login -u admin -p Harbor12345 20.0.0.50:85

docker tag jenkins-slave-maven:latest 20.0.0.50:85/library/jenkins-slave-maven:latest

docker push 20.0.0.50:85/library/jenkins-slave-maven:latest


2387773-20220308224608914-452775931.png

2387773-20220308224619391-2105473162.png


测试Jenkins-Slave是否可以创建


创建一个Jenkins流水线项目


2387773-20220308224702801-523095660.png


添加凭据:


2387773-20220308224743395-265228594.png


编写Pipeline,从GItlab拉取代码(使用http方式)使用流水线片段生成器

def git_address = "http://20.0.0.20:82/root/tensquare_back.git"

def git_auth = "904eff5d-41c8-44ad-ba24-7f539a0edb96"


//创建一个Pod的模板,label为jenkins-slave

podTemplate(label: 'jenkins-slave', cloud: 'kubernetes', containers: [

   containerTemplate(

       name: 'jnlp',

       image: "20.0.0.50:85/library/jenkins-slave-maven:latest"

   )

 ]

)

{

   //引用jenkins-slave的pod模块来构建Jenkins-Slave的pod

   node("jenkins-slave"){

       stage('拉取代码'){

           checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])

       }

   }

}


2387773-20220308224903889-533093209.png


然后开始构建:


2387773-20220308225048605-411396646.png


在构建前再开一台jenkins去看节点列表,初始状态是,一个主节点!然后构建的时候刷新会看到从节点上线构建,构建完就会自动下线释放资源

主节点不参与构建

2387773-20220308225336326-1685178326.png

2387773-20220308225344141-394512713.png








相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
28天前
|
Java jenkins 持续交付
Jenkins集成Maven
通过以上步骤,可以在Jenkins中成功集成Maven,实现自动化构建和部署。通过定时构建、SCM轮询等方式,可以确保代码库中的最新变更能够及时构建和测试,提高开发效率和代码质量。这种集成方式在实际项目中具有广泛的应用前景,能够显著提升团队的协作效率。
47 8
|
1月前
|
人工智能 数据可视化 开发者
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
FlowiseAI 是一款开源的低代码工具,通过拖拽可视化组件,用户可以快速构建自定义的 LLM 应用程序,支持多模型集成和记忆功能。
117 14
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
|
1月前
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
1月前
|
人工智能 数据挖掘 API
R2R:开源的 RAG 集成系统,支持多模态处理、混合搜索、知识图谱构建等增强检索技术
R2R 是一款先进的 AI 检索增强生成平台,支持多模态内容处理、混合搜索和知识图谱构建,适用于复杂数据处理和分析的生产环境。
183 3
R2R:开源的 RAG 集成系统,支持多模态处理、混合搜索、知识图谱构建等增强检索技术
|
1月前
|
运维 监控 Cloud Native
构建深度可观测、可集成的网络智能运维平台
本文介绍了构建深度可观测、可集成的网络智能运维平台(简称NIS),旨在解决云上网络运维面临的复杂挑战。内容涵盖云网络运维的三大难题、打造云原生AIOps工具集的解决思路、可观测性对业务稳定的重要性,以及产品发布的亮点,包括流量分析NPM、网络架构巡检和自动化运维OpenAPI,助力客户实现自助运维与优化。
|
2月前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
232 19
|
2月前
|
人工智能 数据可视化 JavaScript
NodeTool:AI 工作流可视化构建器,通过拖放节点设计复杂的工作流,集成 OpenAI 等多个平台
NodeTool 是一个开源的 AI 工作流可视化构建器,通过拖放节点的方式设计复杂的工作流,无需编码即可快速原型设计和测试。它支持本地 GPU 运行 AI 模型,并与 Hugging Face、OpenAI 等平台集成,提供模型访问能力。
154 14
NodeTool:AI 工作流可视化构建器,通过拖放节点设计复杂的工作流,集成 OpenAI 等多个平台
|
2月前
|
Kubernetes 应用服务中间件 nginx
二进制安装Kubernetes(k8s)v1.32.0
本指南提供了一个详细的步骤,用于在Linux系统上通过二进制文件安装Kubernetes(k8s)v1.32.0,支持IPv4+IPv6双栈。具体步骤包括环境准备、系统配置、组件安装和配置等。
686 10
|
2月前
|
DataWorks 数据挖掘 大数据
方案实践测评 | DataWorks集成Hologres构建一站式高性能的OLAP数据分析
DataWorks在任务开发便捷性、任务运行速度、产品使用门槛等方面都表现出色。在数据处理场景方面仍有改进和扩展的空间,通过引入更多的智能技术、扩展数据源支持、优化任务调度和可视化功能以及提升团队协作效率,DataWorks将能够为企业提供更全面、更高效的数据处理解决方案。
|
3月前
|
消息中间件 Java Kafka
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
Spring Boot 与 Apache Kafka 集成详解:构建高效消息驱动应用
87 1

热门文章

最新文章