Jenkins on ACK实战(一):部署和初始化

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 随着云原生时代的到来,一个良好的CI/CD系统成为我们敏捷交付的必不可缺的基础,那我们搭建CI/CD系统的时候,能不能利用云原生的基础设施--kubernetes--来获取一些收益呢? 我们接下来的这一系列文章就围绕着这个主题来展开--如何围绕着kubernetes来搭建CI/CD系统,kuber.

随着云原生时代的到来,一个良好的CI/CD系统成为我们敏捷交付的必不可缺的基础,那我们搭建CI/CD系统的时候,能不能利用云原生的基础设施--kubernetes--来获取一些收益呢?

我们接下来的这一系列文章就围绕着这个主题来展开--如何围绕着kubernetes来搭建CI/CD系统,kubernetes和CI/CD的工具我们的选择分别是阿里云容器服务(ACK)和Jenkins

开始之前

  • 你需要有一个ACK集群,以及配置好可以管理这个集群的kubectl,集群上还要有ingress controller和helm tiller,如果你还没有集群,可以使用ACK快速部署kubernetes集群
  • 你需要有helm client,并且可以使用上面的kubectl工具的配置管理集群,helm client部署参考这里
  • 获取Jenkins helm chart,如果你可以访问helm repo,这一步可以不用做;如果不能的话,请先把这个repo的内容下载到本地

部署Jenkins

  • 在现有集群中创建名为jenkins的namespace

    kubectl create ns jenkins
  • 利用helm部署Jenkins

    helm install --name jenkins --namespace jenkins stable/jenkins \
    --set master.tag=lts \
    --set master.image=jenkins/jenkins \
    --set master.adminPassword=admin \
    --set master.jenkinsUriPrefix="/jenkins" \
    --set master.installPlugins="{kubernetes:latest,blueocean:latest,job-dsl:latest,kubernetes-cli:latest,prometheus:latest,configuration-as-code:latest}" \
    --set master.serviceType=ClusterIP \
    --set master.ingress.enabled=true \
    --set master.ingress.path="/jenkins" \
    --set agent.enabled=false \
    --set persistence.storageClass=alicloud-disk-ssd \
    --set persistence.size=20Gi \
    --set rbac.create=true
  • 等待部署完成

     kubectl -n jenkins wait --for=condition=Ready pod -l app.kubernetes.io/instance=jenkins

    部署过程中会安装多个插件,这里选择使用阿里云ssd云盘作为pv可以明显提升部署速度,如果换成高效云盘部署时间会长很多

部署参数说明

参数 作用
master.image
master.tag
指定镜像名称和tag
master.adminPassword 指定Jenkins admin用户密码
master.jenkinsUriPrefix 指定Jenkins master监听的root URI,和ingress选项一起使用
master.installPlugins 指定初始化时需要安装的插件列表
master.serviceType 指定Jenkins master关联的service的类型,默认是Loadbalancer
master.ingress.enabled
master.ingress.annotations.path
配置ingress并指定URL
agent.enabled 是否部署agent
persistence.storageClass
persistence.size=20Gi
指定pv的storageclass和对应的参数
rbac.create 是否创建rbac权限

检查Jenkins

执行下面的命令获取Jenkins入口

JENKINS_MASTER=kubectl get ing jenkins-1 -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

访问http://${JENKINS_MASTER}/jenkins,可以用前面设置的密码登录进去

  • Manage Plugins页面,可以看到部署参数指定的插件已经安装
  • Configure System页面,可以看到kubernetes-plugin插件已经配置jenkins_kubernetes
  • Manage Jenkins页面,可以看到Configuration as Code选项jenkins_casc

这里要特别介绍下Configuration as Code这个插件,这是Jenkins一个比较新的子项目,目的是为了将Jenkins的配置定义为简化的、人性化的纯文本 yaml 语法,有了这个项目我们不仅可以快速的启动一个Jenkins,还可以快速的将现有的Jenkins的配置移植过来,而不用再重新手动配置一次

我们可以在页面上apply下面这个URL,可以在Jenkins主页上看到马上就会多出来一个新的project :)

https://raw.githubusercontent.com/jenkinsci/configuration-as-code-plugin/master/demos/jobs/multibranch-github.yaml

小结

到这里,Jenkins的部署和初始化就算完成了。我们可以看到,随着云原生的发展各种xxx as code如雨后春笋涌现出来,给我们日常的工作带来了极大的便利,后面我们以本文为基础分享各种CI/CD的最佳实践

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
7天前
|
jenkins 持续交付 网络安全
Jenkins——使用Docker部署Jenkins详解
Jenkins——使用Docker部署Jenkins详解
18 0
|
11天前
|
jenkins 持续交付 开发工具
"引爆效率革命!Docker+Jenkins+GIT+Tomcat:解锁持续集成魔法,一键部署Java Web应用的梦幻之旅!"
【8月更文挑战第9天】随着软件开发复杂度的增加,自动化变得至关重要。本文通过实例展示如何结合Docker、Jenkins、Git与Tomcat建立高效的持续集成(CI)流程。Docker确保应用环境一致性;Jenkins自动化处理构建、测试和部署;Git管理源代码版本;Tomcat部署Web应用。在Jenkins中配置Git插件并设置项目,集成Docker构建Tomcat应用镜像并运行容器。此外,通过自动化测试、代码质量检查、环境隔离和日志监控确保CI流程顺畅,从而显著提高开发效率和软件质量。
34 3
|
11天前
|
jenkins Java 持续交付
【一键搞定!】Jenkins 自动发布 Java 代码的神奇之旅 —— 从零到英雄的持续集成/部署实战秘籍!
【8月更文挑战第9天】随着软件开发自动化的发展,持续集成(CI)与持续部署(CD)已成为现代流程的核心。Jenkins 作为一款灵活且功能丰富的开源 CI/CD 工具,在业界应用广泛。以一家电商公司的 Java 后端服务为例,通过搭建 Jenkins 自动化发布流程,包括创建 Jenkins 项目、配置 Git 仓库、设置构建触发器以及编写构建脚本等步骤,可以实现代码的快速可靠部署。
33 2
|
13天前
|
Prometheus 监控 Kubernetes
|
24天前
|
Kubernetes jenkins 持续交付
jenkins连接k8s
jenkins连接k8s
44 7
|
24天前
|
Kubernetes jenkins 持续交付
Jenkins部署以及基本使用
Jenkins部署以及基本使用
54 7
|
4天前
|
Kubernetes Nacos 微服务
【技术难题破解】Nacos v2.2.3 + K8s 微服务注册:强制删除 Pod 却不消失?!7步排查法+实战代码,手把手教你解决Nacos Pod僵死问题,让服务瞬间满血复活!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但有时会遇到“v2.2.3 k8s 微服务注册nacos强制删除 pod不消失”的问题。本文介绍此现象及其解决方法,帮助开发者确保服务稳定运行。首先需检查Pod状态与事件、配置文件及Nacos配置,确认无误后可调整Pod生命周期管理,并检查Kubernetes版本兼容性。若问题持续,考虑使用Finalizers、审查Nacos日志或借助Kubernetes诊断工具。必要时,可尝试手动强制删除Pod。通过系统排查,通常能有效解决此问题。
10 0
|
6天前
|
Kubernetes jenkins 网络安全
Jenkins Pipeline 流水线 - 使用代理节点,Remote SSH 对 K8S 进行升级
Jenkins Pipeline 流水线 - 使用代理节点,Remote SSH 对 K8S 进行升级
12 0
|
6天前
|
Kubernetes jenkins 持续交付
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)
10 0
|
2月前
|
jenkins Java 持续交付
运用Jenkins实现Java项目的持续集成与自动化部署
在新建的Jenkins Job中,我们需要配置源码管理,通常选择Git、SVN等版本控制系统,并填入仓库地址和凭据。接着,设置构建触发器,如定时构建、轮询SCM变更、GitHub Webhook等方式,以便在代码提交后自动触发构建过程。
113 2

相关产品

  • 容器服务Kubernetes版