《玩转Jenkins系列》之集成K8S

简介: 本文介绍了如何在Jenkins里面集成K8S进行对Node节点的动态管理

《玩转Jenkins系列》之集成K8S

前言*序

今天这篇Topic主要讲一下如何在Jenkins里面与K8S进行深度融合。目标只有一个:

动态创建编译机,提升编译集群资源利用效率

配置篇

系统管理菜单下面如下图

20181227105431.png | center | 747x408

说明:

  • 名称可以随意取。这个为后续的时候用到
  • Jenkins地址,请填写Jenkins服务器访问地址
  • 配置完了之后点连接测试,如果提示"Connection test successful"说明连接到集群上了

上面K8S的地址什么的都没有配置为什么就连接成功了?好奇的看官肯定会有疑问了。
『The URL of the Kubernetes API server. If not set the connection options will be autoconfigured from service account or kube config file.』 在这里我们用了kube配置文件来完成这个事情的。
登录Jenkins服务所在的容器内将APIserver的连接配置kube/config配置文件放到~/.kube/config。这样它就会自动去完成连接了。

使用篇

现在连接上了K8S了那我们先创建一个非常简单的流水线,里面就输出一条:"hello jenkins and k8s"
a)先创建一条流水线的任务

20181227110339.png | center | 747x268

b) 我们选择用Jenkinsfile的方式

20181227110555.png | center | 747x352

c) 编写Jenkinfiles文件

pipeline {
  agent {
    kubernetes {
      label 'mypodx'
      cloud 'yaofang_k8s_test'
      yamlFile 'mpod.yaml'
    }
  }
  stages {
    stage('git clone') {
        steps {
                git credentialsId: '3b1cd500-c1a2-4bd6-84f0-237b0c879fbf', url: '${url}'
        }
    }

    stage('hold') {
        agent none
        steps {
                input "Does the staging environment look ok?"
         }
    }

    stage('Run containers shell') {
      steps {
        sh '/root/bin/git.sh ${url}'
      }
    }

  }
}

说明:

  • cloud 表示我们在上面配置的名称进行关联
  • yamlFile 表示通过yaml来创建Pod
    以下是创建Pod的描述文件:
metadata:
  labels:
    some-label: some-label-value
spec:
  volumes:
  - hostPath:
      path: /data/mvn_cache
      type: ""
    name: mvn-cache
  containers:
  - name: jnlp
    alwaysPullImage: true
    volumeMounts:
    - mountPath: /root/repository
      name: mvn-cache
    image: registry.cn-shanghai.aliyuncs.com/cpaas/build_dockerfile:v5
    env:
    - name: CONTAINER_ENV_VAR
      value: jnlp

说明:

  • 通过volumes可以将宿主机的目录挂载到容器内,实现对maven编译场景下的加速
  • images这个镜像是我们自定义镜像,可以用于构建自己想的编译运行环境.

d) 运行流水线
先看下K8S上面的POD变化

20181227111651.png | center | 747x178

可以看到出来了一个POD。

再来看下流水线控制台的输出

20191230123657.png | center | 747x707

最佳实践

基于镜像的实践,可以针对编译机的镜像做更多的扩展。比如可以集成docker工具/OSS工具等。另外针对maven编译机的加速问题也可以进一步优化,可以将.m2下面的文件放到宿主机上去,这样可以提升编译速度。

最佳实践之解决git权限方案

如果我们直接在镜像中运行一个shell脚本的话,我们会发现git clone代码的时候会报权限不足。解决办法

  1. 将宿主机的/root/.ssh/目录挂载到Pod的容器里面即共享公钥文件
  2. 将宿主机的公钥配置到GIT仓库
    类似的启动如下:
docker run -itd  -v /root/.ssh/:/root/.ssh/ -v /tmp/build_maven/:/root/repository/

问题交流群

如果大家在实际应用过程中遇到什么问题,也可以加钉钉群:23145481进行交流。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
24天前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
45 2
|
12天前
|
运维 jenkins Java
Jenkins在持续集成与持续部署中的价值
Jenkins在持续集成与持续部署中的价值
|
25天前
|
jenkins Devops 测试技术
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第26天】随着DevOps理念的普及,Jenkins作为一款开源自动化服务器,在持续集成(CI)与持续部署(CD)中发挥重要作用。本文通过某中型互联网企业的实际案例,展示了Jenkins如何通过自动化构建、持续集成和持续部署,显著提升开发效率、代码质量和软件交付速度,帮助企业解决传统手工操作带来的低效和错误问题。
52 4
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
69 0
|
2月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
154 0
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
88 1
|
3月前
|
jenkins 持续交付 网络安全
利用 Jenkins 实现持续集成与持续部署-代码拉取终端的配置
安装Git、配置用户信息、生成SSH密钥以及在Gitee上创建项目仓库等。
80 0
|
4月前
|
持续交付 jenkins C#
“WPF与DevOps深度融合:从Jenkins配置到自动化部署全流程解析,助你实现持续集成与持续交付的无缝衔接”
【8月更文挑战第31天】本文详细介绍如何在Windows Presentation Foundation(WPF)项目中应用DevOps实践,实现自动化部署与持续集成。通过具体代码示例和步骤指导,介绍选择Jenkins作为CI/CD工具,结合Git进行源码管理,配置构建任务、触发器、环境、构建步骤、测试及部署等环节,显著提升开发效率和代码质量。
78 0
|
4月前
|
Kubernetes jenkins 持续交付
Jenkins 与 Kubernetes 的集成:实现高效的资源管理和自动化部署
【8月更文第31天】随着微服务架构的普及,Kubernetes 已经成为了容器编排的事实标准。Kubernetes 提供了一种强大的方式来管理容器化的应用程序,而 Jenkins 则是持续集成与持续部署(CI/CD)领域的一个重要工具。将 Jenkins 与 Kubernetes 集成,不仅可以充分利用 Kubernetes 的资源管理能力,还能通过 Jenkins 实现自动化构建、测试和部署,从而提高开发效率和部署速度。本文将详细介绍如何将 Jenkins 集成到 Kubernetes 环境中,并提供具体的代码示例。
418 0
|
10天前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
38 1

热门文章

最新文章

下一篇
无影云桌面