kubernetes使用jenkins Pipeline 部署Nginx
发布日期:2022-02-28 11:05:58
浏览次数:6
分类:技术文章
本文共 4741 字,大约阅读时间需要 15 分钟。
环境需求
- kubernetes 未安装参考
- jenkins
- github/gitee/gitlab 静态页面
- 镜像仓库(我使用的 ) 如果你未准备好的以上环境,点击链接参考文章进行安装。
安装 jenkins
我这边的jenkins是将jenkins 安装在了k8s的宿主机中,并没有用容器运行。
安装JDK
yum install -y java
安装jenkins
{
{< tabs 方法1 方法2 >}} { {< tab >}} 方法1 添加Jenkins库到yum库,Jenkins将从这里下载安装。wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.keyyum install -y jenkins
{
{< /tab >}} { {< tab >}} 方法2 如果不能安装就到官网下载jenkis的rmp包,官网地址(http://pkg.jenkins-ci.org/redhat-stable/)wget http://pkg.jenkins-ci.org/redhat-stable/jenkins-2.7.3-1.1.noarch.rpmrpm -ivh jenkins-2.7.3-1.1.noarch.rpm
{
{< /tab >}} { {< /tabs >}}安装 Jenkins 插件
安装完jenkins,设置完密码,安装完默认插件以后,我们需要安装 Pipeline 需要的插件。
修改下方地址 然后提交# jenkins插件清华大学镜像地址https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.jsonhttp://mirror.xmission.com/jenkins/updates/update-center.json
安装git和pipeline插件
创建 jenkins Pipeline
添加Pipeline job
创建job完成后,配置Pipeline script,点击Pipeline语法,来自动生成我们需要的配置。 如下图,我们Git方式,配置Git仓库地址,再添加认证相关。 分别填写github/gitee的账号和密码然后点击添加 添加完成后,在凭据中,选中刚添加的,这样我们就可以生成Pipeline脚本了。点击下方生成流水线脚本
,然后复制方框内的内容。 编写 Pipeline 脚本
编写我们所需要的Pipeline脚本如下,将其粘贴到script的拉取代码模块中,并修改分支master为${branch},其他模块内容自行编写。
node { stage('拉取代码') { //拉取代码 git credentialsId: 'b34b0b78-e99f-4aa0-a616-xxxxxx', url: 'https://gitee.com/xxx/xxxxx.git' //将上次打包的代删除掉,并将拉取到的新代码代码打包 sh 'rm -rf *.tar && cd waynex && tar -cvf waynex.tar ./*' script { //获取comment id env.imageTag = sh (script: 'git rev-parse --short HEAD ${GIT_COMMIT}', returnStdout: true).trim()} } // 项目打包到镜像并推送到镜像仓库 stage('构建推送镜像') { sh '''REPOSITORY=wenlongxue/waynex:${imageTag}cat > Dockerfile << EOFFROM wenlongxue/nginx## 设置工作目录WORKDIR /usr/local/nginx/htmlRUN rm -rf /usr/local/nginx/html/* ADD waynex/waynex.tar /usr/local/nginx/html/## 启动nginxCMD ["nginx","-g","daemon off;"]EOFdocker build -t waynex:${imageTag} .docker logindocker tag waynex:${imageTag} $REPOSITORYdocker push $REPOSITORY''' } // 部署到k8s主机 stage('部署到k8s') { sh '''REPOSITORY=wenlongxue/waynex:${imageTag}cat > nginx.yaml << EOFapiVersion: apps/v1 #与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本kind: Deployment #该配置的类型,我们使用的是 Deploymentmetadata: #译名为元数据,即 Deployment 的一些基本属性和信息 name: nginx-deployment #Deployment 的名称 labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解 app: nginx #为该Deployment设置key为app,value为nginx的标签spec: #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用 replicas: 1 #使用该Deployment创建一个应用程序实例 selector: #标签选择器,与上面的标签共同作用,目前不需要理解 matchLabels: #选择包含标签app:nginx的资源 app: nginx minReadySeconds: 1 progressDeadlineSeconds: 60 revisionHistoryLimit: 2 strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1 template: #这是选择或创建的Pod的模板 metadata: #Pod的元数据 labels: #Pod的标签,上面的selector即选择包含标签app:nginx的Pod app: nginx spec: #期望Pod实现的功能(即在pod中部署) containers: #生成container,与docker中的container是同一种 - name: nginx #container的名称 image: \$REPOSITORY #使用之前推送的镜像 imagePullPolicy: Always #总是拉取最新的。默认为,本地有则使用本地镜像,不拉取 ports: - containerPort: 80 resources: requests: memory: "600Mi" cpu: "250m" limits: memory: "600Mi" cpu: "500m" livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 10 #pod启动10秒执行第一次检查 periodSeconds: 5 #第一次检查后每隔5秒检查一次---apiVersion: v1kind: Servicemetadata: #译名为元数据,即Deployment的一些基本属性和信息 name: nginx-service #Service 的名称 labels: #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组 app: nginx #为该Deployment设置key为app,value为nginx的标签spec: #这是关于该 Service 的定义,描述了 Service 如何选择 Pod,如何被访问 selector: #标签选择器 app: nginx #选择包含标签 app:nginx 的 Pod ports: - name: nginx-port #端口的名字 protocol: TCP #协议类型 TCP/UDP port: 80 #集群内的其他容器组可通过 80 端口访问 Service nodePort: 30081 #通过任意节点的 30080 端口访问 Service targetPort: 80 #将请求转发到匹配 Pod 的 80 端口 type: NodePort #Serive的类型,ClusterIP/NodePort/LoaderBalancerEOFsudo kubectl apply -f nginx.yaml''' }}
在Pipeline脚本里面我们指定了一个branch参数,所以我们需要传递一个参数变量,这里我们选择参数化构建,默认值为master分支。
然后保存配置。发布测试
回到主界面,我们开始构建任务:
查看构建成功后的图形构建过程: 通过浏览器来访问项目: 至此部署完成转载地址:https://blog.csdn.net/weixin_47430049/article/details/117777596 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月06日 22时51分07秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ShaderGraph使用教程与各种特效案例:Unity2020(持续更新)
2019-04-27
Unity爆炸、闪电、火焰、雷雨特效Demo
2019-04-27
使用python登录和访问Confluence
2019-04-27
Unity2020中使用MemoryProfile卡死和报错的问题
2019-04-27
Unity中加载Texture2D不断消耗内存的问题
2019-04-27
Unity使用Shader实现3D模型外描边效果
2019-04-27
手把手教你在Unity2020中使用Timeline
2019-04-27
手把手教你使用Unity制作一个飞机喷射火焰尾气的粒子效果
2019-04-27
分享一个超酷的Unity的Shader案例工程(GitHub)
2019-04-27
Unity通过NDK、JNI实现C#、java、C/C++之间的相互调用
2019-04-27
OpenHarmony鸿蒙操作系统源码
2019-04-27
Unity2020常用小技巧与设置(建议收藏)
2019-04-27
Unity Hub安装Android Build Support报错:Failed to delete old Unity Android Supprtinstallation files
2019-04-27
gitee使用教程,创建项目仓库并上传代码
2019-04-27
Unity3D 上传日志
2019-04-27
Unity3D 序列帧
2019-04-27
Unity3D 动态创建图集并压入精灵(NGUI)
2019-04-27