企业级运维之云原生与Kubernetes实战课程 第四章第6讲 实验四:流水线部署

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本实验通过在ack集群上部署jenkins,来实现一键式自动拉取github仓库上的代码,编译、构建镜像、部署deployment,来完成流水线部署的目的。

企业级运维之云原生与Kubernetes实战课程

第四章第6讲 实验四:流水线部署

 

视频地址:

https://developer.aliyun.com/learning/course/913/detail/14610

 

一、 实验概述

 

1.  实验简介

 

本实验通过在ack集群上部署jenkins,来实现一键式自动拉取github仓库上的代码,编译、构建镜像、部署deployment,来完成流水线部署的目的。

 

实验地址:

https://developer.aliyun.com/adc/scenario/exp/cd67aefa9f2d466bb9b6b21716054284

 

2.  实验资源

 

本实验涉及的实验资源有三个:ack托管版集群、ecs客户端(Linux系统)和RAM账号。

 

3.  实验目的

 

a.  主要演示如何在阿里云Kubernetes服务上快速搭建Jenkins持续集成环境;

 

b.  基于提供的示例快速完成应用源码编译、应用镜像构建、推送以及应用部署的流水线。

 

4.  实验架构

image.png

注:在多人的情况下,需要创建多个集群或者多个命名空间,jenkins部署在每个人自己的命名空间下。

 

二、实验准备

 

1.  已创建Kubernetes集群

 

2.  一台本地机器(如centos7.6的服务器),完成下面的准备步骤:

 

a.  安装docker-ce ,用于生成配置文件;本实验提供的ECS节点,已经预安装了docker,直接使用即可;

 

b.  安装kubectl 客户端,

 

安装步骤:

 

$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

 

$ chmod 755 kubectl

 

$ mv kubectl /usr/bin/

 

$ mkdir /root/.kube

 

最后,配置config文件,参考文档验证kubectl功能;

 

3.  在个人账户上创建容器镜像服务的个人实例(该产品为免费产品):

image.png

 

创建gitee账户, 详见后续实验步骤:“fork https://gitee.com/ahwhya/jenkins-demo.git这个demo项目到自己的gitee账号”。

 

三、实验步骤

 

1.  创建镜像仓库并设置密码

 

a.  创建镜像仓库

 

开通容器镜像服务后,再依次创建命名空间和镜像仓库;

 image.png

 

创建命名空间对应的镜像仓库;

image.png

 

这里选择“本地仓库”,然后单击“创建镜像仓库”;

 image.png

 

b.  设置密码

 

选择实例列表”—“个人实例”—“访问凭证, 查看登陆实例用户名:

image.png 

username=” 之后的为用户名,即DOCKER_USER,设置的密码,即DOCKER_PASSWORD

 

单击“创建固定密码”;

 image.png

 

2.  创建镜像仓库拉取密钥

 

通过kubectlkubernetes集群中创建Secret,用于集群拉取仓库镜像。

 

创建拉取仓库镜像的secret

 

$ kubectl create secret docker-registry hub-secret --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD -n Jenkins

 

3.  Fork demo项目

 

fork https://gitee.com/ahwhya/jenkins-demo.git这个demo项目到自己的gitee账号,然后配置gitee的拉取密钥(如果设置为公开仓库,这里可以不用配置,但默认环境为私有仓库,参考链接),记住私钥文件。

 

备注:

 

a.  公钥私钥生成:ssh-keygen -t rsa -C“邮箱地址”;

 

b.  检验办法 ssh -T git@gitee.com

 

4.  创建jenkins上传拉取仓库镜像的密钥

 

通过kubectlkubernetes集群中创建Secret,用于jenkins上传构建后的镜像。

 

a.  参考截图给的登陆示例步骤:

 

$ docker login --username=DOCKER_USER registry.cn-hangzhou.aliyuncs.com

 

kubectl的终端中输入访问凭证,登陆Registry实例,登陆后访问凭证会自动保存在/root/.docker/config.json文件中;

 

b.  执行以下命令创建名为jenkins-docker-cfgsecret:

 

$ kubectl create secret generic jenkins-docker-cfg -n jenkins --from-file=/root/.docker/config.json

 

注:命名空间请指定自己安装jenkins的命名空间。

 

5.  部署jenkins

 

a.  登录容器服务管理控制台;

 

b.  在阿里云应用页签中,选择ack-jenkins

 

c.  单击参数页签;

 

d.  可以在AdminPassword字段,修改并自定义密码,如:Admin@123!

 

e.  选择Kubernetes集群以及命名空间(请选择自己创建的命名空间),填写发布名称;

 image.png

6.  查看jenkins资源并设置插件

 

a.  在容器服务控制台左侧导航栏中,单击集群;

 

b.  在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情;

 

c.  在集群管理页左侧导航栏中,选择服务与路由> 服务;

 

d.  选择相应的命名空间,然后单击ack-jenkins-default服务的外部端点,访问并登录Jenkins

 

e.  在新手入门配置页面,单击安装推荐的插件;

 

f.  选择“系统管理”—“全局安全配置”—“跨站请求伪造保护”—“勾选启用代理兼容”;

 image.png

7.  设置gitee代码仓库拉取密钥

 

添加gitee凭据。点击“Dashboard”—“系统管理”—“mangage credentials” —“全局”—“添加凭据”

image.png

“类型”选择“SSH Username with private key”,“ID”和“描述”可以随便填,“Username”请填写执行ssh-keygen产生gitee的密钥对时操作系统的用户名(填写错误将会导致拉取gitee代码失败),“Private key”填写拉取gitee代码的私钥。点击“确定”保存。

 

8.  配置slave-node

 

点击“dashboard”—“系统管理”—“节点管理”—“Configure Clouds”—“Pod Templates”—“Pod Template details

 image.png

添加卷”—“secret volume”Secret名称为之前在k8s集群中创建的secret“jenkins-docker-cfg”,挂载路径为:“/root/.docker”,点击“Save”保存。

 

9.  新建pipeline任务

 

a.  点击“dashboard”—“新建任务”

 image.png

设置任务名称,点击“流水线”,然后点击“确定”进入详细的配置页。

 

 

b.  在“Gerneral”页签,勾选“参数化构建过程”—“添加参数”—“添加字符参数”,依次填写如下键值对:

 

image_regioncn-hangzhouorigin_reporegistry.cn-hangzhou.aliyuncs.com/test-xiniaorepoack-jenkins-demo

image_taglatestbranchmaster

 image.png

image.png

c.  在“流水线”页签,“定义”选择“Pipeline sript from SCM, SCM”选择“Git”,“Repository URL”填写gitee项目地址,“Credentials”选择之前配置好的gitee代码仓库拉取密钥,“Branches to build”填写“*/master”,点击“保存”保存配置:

 image.png

10. 构建任务

 

a.  在“Dashboard”页面,选择刚才创建的pipeline任务“xiniao-test,点击右边的构建按钮进行构建;

 image.png

查看构建历史,可以查看构建的步骤以及失败的记录;

 image.png

构建历史中点击其中一个构建历史进入某次构建的详情页,点击“Console output”可以查看构建日志;

 image.png

b.  查看构建完成后在K8S集群中创建的应用:

image.png

我们部署了一个简单的演示程序“Jenkins-java-demo”,并且采用LoadBalancer的方式暴露服务。现在,我们可以在公网上用IP和端口来进行访问。

四、参考文档

 

1.  Jenkinfile使用说明:

 

https://www.jenkins.io/zh/doc/book/pipeline/jenkinsfile/

 

2Jenkins流水线部署:

 

https://help.aliyun.com/document_detail/106712.html

 

注意事项:若jenkins控制台有类似“No valid crumb was included in request for /pluginManager/installPlugins by admin. Returning 403”的报错,可以先在插件管理安装“Strict Crumb Issuer“插件,然后在“全局安全配置”处开启代理兼容模式:

 image.png

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5天前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。
|
2月前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
3月前
|
Kubernetes Cloud Native 微服务
云原生入门与实践:Kubernetes的简易部署
云原生技术正改变着现代应用的开发和部署方式。本文将引导你了解云原生的基础概念,并重点介绍如何使用Kubernetes进行容器编排。我们将通过一个简易的示例来展示如何快速启动一个Kubernetes集群,并在其上运行一个简单的应用。无论你是云原生新手还是希望扩展现有知识,本文都将为你提供实用的信息和启发性的见解。
|
3月前
|
敏捷开发 Kubernetes Cloud Native
阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理
在多云环境中,阿里云云原生技术为企业提供了一套高效、灵活的解决方案,支持跨云部署与管理。通过容器化、服务网格等技术,实现了应用的一致性与可移植性,简化了多云环境下的资源管理和服务治理,帮助企业应对复杂的云环境挑战,加速数字化转型。
92 5
|
3月前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
4月前
|
Kubernetes Cloud Native 持续交付
云原生技术:重塑现代应用开发与部署模式####
本文深入探讨了云原生技术的核心概念、发展历程及其在现代软件开发和部署中的关键作用。通过分析云原生架构的特点,如容器化、微服务、持续集成与持续部署(CI/CD),以及它如何促进应用的可伸缩性、灵活性和效率,本文旨在为读者提供一个关于云原生技术全面而深入的理解。此外,还将探讨实施云原生策略时面临的挑战及应对策略,帮助组织更好地把握数字化转型的机遇。 ####
|
3月前
|
Kubernetes 监控 安全
容器化技术:Docker与Kubernetes的实战应用
容器化技术:Docker与Kubernetes的实战应用
|
3月前
|
存储 Kubernetes Devops
Kubernetes集群管理和服务部署实战
Kubernetes集群管理和服务部署实战
102 0
|
4月前
|
Cloud Native 持续交付 云计算
云端新纪元:探索云原生技术的奥秘在当今数字化时代,云计算已成为推动企业创新和增长的关键动力。随着云平台的不断成熟,云原生技术应运而生,以其独特的优势引领着一场新的技术革命。本文将深入探讨云原生的核心概念、主要特点以及它如何改变现代软件开发和部署的方式,为您揭开云原生这一神秘面纱。
云原生是一种构建和运行应用程序的方法,充分利用了云平台的弹性、分布式本质以及声明式基础设施。本文将解析云原生的十二要素,微服务架构的优势,以及容器化、持续集成与持续部署(CI/CD)等核心技术的实践应用。通过深入浅出的方式,让读者理解云原生不仅是一种技术,更是一种文化和方法论,它正在重塑软件开发流程,提高资源利用率和应用系统的可扩展性与容错性。
|
3月前
|
监控 Cloud Native 微服务
云端漫步:探索云原生应用的构建与部署
【10月更文挑战第32天】在数字时代的浪潮中,云原生技术如同一艘航船,承载着企业的梦想驶向未知的海洋。本文将带你领略云原生应用的魅力,从基础概念到实战操作,我们将一步步揭开云原生的神秘面纱,体验它如何简化开发、加速部署,并提升系统的可扩展性与可靠性。让我们一起启航,探索云原生的世界!