Jenkins使用k8s部署应用

这篇具有很好参考价值的文章主要介绍了Jenkins使用k8s部署应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、jenkins在k8s内部署(请参考其他人的文章)

2、jenkins安装kubenents相关插件

k8s 部署jenkins,笔记

3、配置k8s云

        非常重要,目的是实现jenkins可以远程调用k8s进行部署,并可实现安装jenkins-slave进行构建。使得不再依赖jenkins单机能力进行构建,比较适合一定规模的公司。

 插件安装后,打开jenkins,点击系统管理-->系统配置-->Clouds,点击新增一个kubernetes。

具体配置见如下:

3.1 首先配置K8S地址

k8s 部署jenkins,笔记

k8s 部署jenkins,笔记 

3.2 为K8S云创建Pod Templates

目的是在jenkins构建的时候,可以自动在K8S内创建一个POD服务于本次构建。

以JAVA为例,构建时需要使用maven并docker构建,然后连接至K8S Master进行远程发布。

k8s 部署jenkins,笔记

 在POD容器列表中放了2个Docker镜像,一个是Maven负责java的build,一个是jnlp创建一个jenkins的slave。

k8s 部署jenkins,笔记

 k8s 部署jenkins,笔记

3.3  挂载存储卷

3.3.1、主要是把maven的repository挂载到宿主机上,以方便多次构建后复用。 

3.3.2、宿主机上安装了docker,把docker命令挂载到K8S的POD内,使得POD具备了

docker in  docker的能力,如此就可以在该POD内进行docker构建。

3.3.3、宿主机一般都是被K8S控制的Node,因此一般都装有kubernets,因此可以把kubectl命令关在到POD中,使得POD具备执行kubectl命令能力,以控制K8S。

k8s 部署jenkins,笔记

k8s 部署jenkins,笔记

 k8s 部署jenkins,笔记

 请用如下代码给k8s内的jenkins账号授权

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: zo-jenkins
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins
  namespace: zo-jenkins
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/portforward"]
    verbs: ["*"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get","list","watch"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get"]
  - apiGroups: ["apps"]
    resources: ["deployments"]
    verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: jenkins
  namespace: zo-jenkins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
  - kind: ServiceAccount
    name: jenkins
    namespace: zo-jenkins

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkinsClusterRole
  namespace: zo-jenkins
rules:
  - apiGroups: [""]
    resources: ["pods"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/exec"]
    verbs: ["create","delete","get","list","patch","update","watch"]
  - apiGroups: [""]
    resources: ["pods/log"]
    verbs: ["get","list","watch"]
  - apiGroups: [""]
    resources: ["secrets"]
    verbs: ["get"]
  - apiGroups: [ "apps" ]
    resources: ["deployments"]
    verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkinsClusterRuleBinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: jenkinsClusterRole
subjects:
  - kind: ServiceAccount
    name: jenkins
    namespace: zo-jenkins

4、JAVA应用中增加pipeline脚本

#!groovy
pipeline {
    agent {
        kubernetes {
            cloud "k8s-deploy"  //选择名字是kubernetes1的cloud,这里不要修改
            label "jenkins-slave"
            //yamlFile ''  //jenkins-slave部署文件位置,内容不要修改
        }
    }
    stages {
        stage('初始化环境') {
            steps {
                script {
                    env.APP_NAME = "report-server"   //修改为自己的应用名称
                    env.APP_CODE = "https://codeup.aliyun.com/xxxxxxx/outsourced/excleToReport/xxx-xxxx.git"
                    env.CODE_BRANCH = "master"     //修改为实际部署的分支
                    env.DOCKER_IMAGE_URL = "registry.cn-hangzhou.aliyuncs.com/xx-xx/xx-xxx"  // 修改DOCKER镜像地址
                    env.DOCKER_TAG = "1.0.0"
                    env.K8S_NAME_SPACE = "zo-home-prd" // 修改应用在K8S内的实际部署的命名空间
                }
            }
        }
        stage('拉取代码') {
            steps {
                echo "1.Git Clone Code"
                git branch: "$CODE_BRANCH", credentialsId: 'zo-git-yun', url: "$APP_CODE"
            }
        }
        stage('maven构建') {
            steps {
                container('maven') {
                    sh 'mvn -s jenkins/settings.xml clean package -e -U -Dmaven.test.skip=true -Dautoconfig.skip'
                }
            }
        }
        stage('docker镜像构建') {
            steps {
                container('maven') { // maven容器确保与宿主机的docker实现docker in docker的能力
                    sh 'docker build -t $APP_NAME:$DOCKER_TAG .'
                    sh 'docker tag $APP_NAME:$DOCKER_TAG $DOCKER_IMAGE_URL:$DOCKER_TAG'
                    sh 'docker push $DOCKER_IMAGE_URL:$DOCKER_TAG'
                }
            }
        }
        //    部署到K8s
        stage('K8S部署-开发环境') {
            steps {
                container('jenkins-jnlp-slave') {
                    withKubeConfig(serverUrl: 'https://192.168.10.200:6443') {// 这里配置K8S Master的API地址
                        echo 'begin k8s deploy!'
                        sh 'chmod 744 k8s/home-prd/deployment.sh'
                        sh 'k8s/home-prd/deployment.sh' // 执行部署
                        // --record 用作记录滚动更新的信息, 后面方便版本回退
                        //sh 'kubectl set image deployment/$APP_NAME $APP_NAME=$IMAGE_URL --namespace $NAME_SPACE --record'
                    }
                }
            }
        }
    }
    options {
        buildDiscarder(logRotator(numToKeepStr: '5', artifactNumToKeepStr: '5'))
    }
}

 文章来源地址https://www.toymoban.com/news/detail-556793.html

到了这里,关于Jenkins使用k8s部署应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K8S部署jenkins

    NFS服务器:1xx.xxx.xxx.229 K8Smaster:1xx.xxx.xxx.221 k8Snode1: 1xx.xxx.xxx.228 (宿主机) 需要将jenkins的配置目录挂载到NFS中,如果没安装可以参考之前的文档。 注意:jenkins2.372默认安装jdk11版本,没有mvn和jdk8,如果有需求就需要将宿主机的mvn、jdk、环境变量、都挂载到容器内。 jenki

    2024年02月14日
    浏览(28)
  • k8s 部署Jenkins项目

    要求:当前集群配置了storageClass,并已指定默认的storageClass,一般情况下,创建的storageClass即为默认类 指定默认storageClass的方式 1.1 部署helm 1.2 部署jenkins 1.3 检查 jenkins 1.4 配置访问 3.1 准备ruoyi数据 3.2 准备k8s证书 3.3 准备maven配置文件 3.4 配置钉钉插件 在系统管理的下方有未

    2024年01月21日
    浏览(33)
  • 【K8S专题】八、Jenkins 自动打包部署配置

      项目部署有多种方式,从最原始的可运行 jar 包直接部署到 JDK 环境下运行,到将可运行的 jar 包放到 docker 容器中运行,再到现在比较流行的把可运行的 jar 包和 docker 放到 k8s 的 pod 环境中运行。每一种新的部署方式都是对原有部署方式的改进和优化,这里不着重介绍每种

    2024年02月15日
    浏览(28)
  • Jenkins构建项目并部署到K8S实践

    本次实践使用gitee上的开源项目悟空CRM9.0进行构建并部署到k8S中 悟空CRM9.0项目简介: 悟空CRM-基于jfinal+vue+ElementUI的前后端分离CRM系统。 项目gitee地址:https://gitee.com/wukongcrm/72crm-java.git 软件 版本 IP 备注 K8S 1.26.x 192.168.1.124 192.168.1.124为K8S集群master01节点IP地址 Harbor 2.6.2 192.168.1.

    2024年02月20日
    浏览(46)
  • K8s集群部署最新Jenkins 2.387.1

    概述 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。在Devops时代Jenkins有着不可缺失地位,也体现了Jenkins的亮点,废话不多说,我们进入在k8s环境下安装最新的J

    2024年02月13日
    浏览(42)
  • k8s的jenkins部署java项目到k8s集群cicd持续集成

    k8s1.16.0-k8s的jenkins部署java项目到k8s集群cicd(ci成,cd手动部署的) 注意: 本文档只是实现了ci,cd是通过ci生成的镜像,再手工再k8s-master执行的部署(只因pod部署的jenkins连接k8s的认证不知怎么操作,若jenkins是单独部署在k8s-master机器上,能直接在master执行kubectl命令就没这个问题了

    2024年02月03日
    浏览(37)
  • DevOps搭建(十六)-Jenkins+K8s部署详细步骤

    ​ 要想从Harbor仓库中拉取镜像,首先要往主机和从机的daemon.json文件中添加Harbor的地址信息 \\\"insecure-registries\\\":[\\\"192.168.88.125:80\\\"],别忘了80端口 添加完之后,重启下docker 要拉取镜像,需要Harbor登录进行拉取,到Kuboard控制台对应的命名空间找到 密文 菜单,点击 创建Secret 。 填写

    2024年01月16日
    浏览(38)
  • Jenkins K8S Docker 一键部署SpringCloud微服务

    一键部署springcloud微服务,需要用到 Jenkins K8S Docker等工具,若未安装,请参考《Centos 7 安装K8S》 本文使用jenkins部署,流程如下图 开发者将代码push到git 运维人员通过jenkins部署,自动到git上pull代码 通过maven构建代码 将maven构建后的jar打包成docker镜像 并 push docker镜像到docker

    2024年02月02日
    浏览(26)
  • 云原生Kubernetes: K8S 1.29版本 部署Jenkins

    目录  一、实验 1.环境 2.K8S 1.29版本 部署Jenkins 服务 3.jenkins安装Kubernetes插件 二、问题 1.创建pod失败 2.journalctl如何查看日志信息 2.容器内如何查询jenkins初始密码 3.jenkins离线安装中文包报错 4.jenkins插件报错 (1)主机 表1 主机 主机 架构 版本 IP 备注 master K8S master节点 1.29.0 1

    2024年04月25日
    浏览(38)
  • 通过Jenkins将应用发布到K8s1.24.3

    一、准备基础环境 cat /etc/hosts EOF 192.168.180.210 k8s-master 192.168.180.200 k8s-node1 192.168.180.190 k8s-node2 192.168.180.180 gitlab 192.168.180.170 jenkins 192.168.180.160 harbor EOF 配置主机名 hostnamectl set-hostname k8s-master bash hostnamectl set-hostname k8s-node1 bash hostnamectl set-hostname k8s-node2 bash hostnamectl set-hostname g

    2024年02月04日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包