CICD联动阿里云容器服务Kubernetes实践之CodePipeline篇

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 通过CodePipeline可以构建您的代码工作流模板,配置从应用编译到容器镜像构建和推送,再到Kubernetes应用的发布,打通代码应用发布全过程自动化。

本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 CodePipeline。

CodePipeline服务介绍及开通

阿里云CodePipeline是一款提供持续集成/持续交付能力,并完全兼容Jenkins的能力和使用习惯的SAAS化产品。
它的优点在于:
(1)CodePipeline提供构建资源,无需用户运维,开箱即用;
(2)与阿里云产品生态无缝集成;
(3)兼容开源Jenkins使用习惯、轻量;
(4)免费;
更多关于CodePipeline的内容请参考CodePipeline产品帮助文档

使用说明

使用CodePipeline之前,您需要先开通产品:

  1. 登录CodePipeline控制台 并开通服务
  2. 同意RAM的CodePipeline角色授权。

构建java-demo项目并部署到Kubernetes

1. 点击 “新建” 并 “输入项目名称”, 选择 “构建一个自由风格的项目”, 最后点击 “下一步”进入到项目配置页面

2. 配置 “基本信息” 区域, 选择构建节点,本示例中选择 “国内java构建环境(缓存)”

3. 配置 “源码管理” 区域, 分别配置源码仓库url以及分支信息,本示例使用源码项目为:
https://code.aliyun.com/CodePipeline/k8s-java-demo.git  

4. 配置java-demo项目源码编译命令

在 “构建” 区域 点击 “增加构建步骤” 选择 “执行Shell脚本” 并配置命令:

mvn package -B -DskipTests

5. 注入一个环境变量 IMAGE_TAG

(1)再增加一个 “执行Shell脚本” 步骤并配置命令:

TIME=`date +%Y%m%d%H%M%S`
echo IMAGE_TAG=$TIME >> env.properties

(2)增加 “注入环境变量” 步骤并填写变量文件路径

6. 配置docker镜像构建并推送至私有镜像仓库

在 “构建” 区域 增加构建步骤 “镜像构建和发布”,填写相关信息,例如我要把新构建的镜像推送至我的私有镜像仓库信息如下:

则CodePipeline项目中 “镜像构建和发布” 对应的参数项则为:

7. 配置部署Kubernetes

在 “构建” 区域 增加构建步骤 “部署Kubernetes(新)”,填写相关信息。

  • 选择 认证方式
    CodePipeline目前支持 证书认证,用户名密码认证 和 Token认证 三种认证方式。如果是 阿里云容器服务Kubernetes集群,默认都是 证书认证。

  • 填写 API服务器地址
    请输入Kubernetes API 服务器地址,您可以在阿里云容器服务控制台查看Kubernetes集群 API Server 公网连接端点,例如,https://1.12.123.134:6443

  • 添加 证书
    本示例使用 证书认证 方式。

在集群 基本信息 页面,找到 配置集群凭据 中提供的 KubeConfig

添加 Docker授权 类型证书:

client-key-data 的内容(冒号后面的字符串)填入 客户端Key 对话框。
client-certificate-data 的内容(冒号后面的字符串)填入 客户端证书 对话框。

  • 添加 部署配置文件
    输入yaml格式的Kubernetes部署配置文件。如果文件在当前项目的workspace下,请直接输入文件名,如果在项目workspace的子目录中,请输入 ..子目录/文件名。不支持位于当前项目的workspace之外的文件。

  • 添加 状态检查配置
    支持检验的 Kubernetes Kind: pods,daemonsets,deployments,replicasets,replicationcontrollers,statefulsets。如果检验的不是 default namespace 下的资源,请在首行填写 namespace 名称。请用 “:” 分隔 Kubernetes Kind 和 Kind name, 用 “,” 分隔多个 Kind name。每一行描述一种 Kubernetes Kind。

注意:请严格按照说明填写单词,不要删减字母;请勿填写多余的空格或者换行。

  • 添加 变量申明配置
    上文的部署配置文件deployment.yaml中使用变量,请以 ${IMAGE_TAG} 格式严格填写,其他格式插件将忽略。

整个部署Kubernetes应用的配置如下:

8. 点击 提交 进行保存

整个项目的完整配置如下:




9. 点击 立即构建并查看构建日志

10. 在Kubernetes集群控制台查看服务并访问

了解更多CodePipeline内容,请访问https://www.aliyun.com/product/codepipeline
了解更多阿里云容器服务内容,请访问 https://www.aliyun.com/product/containerservice

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
22天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
110 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
5天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
47 10
|
19天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
13天前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
12天前
|
人工智能 运维 监控
容器服务Kubernetes场景下可观测体系生产级最佳实践
阿里云容器服务团队在2024年继续蝉联Gartner亚洲唯一全球领导者象限,其可观测体系是运维的核心能力之一。该体系涵盖重保运维、大规模集群稳定性、业务异常诊断等场景,特别是在AI和GPU场景下提供了全面的观测解决方案。通过Tracing、Metric和Log等技术,阿里云增强了对容器网络、存储及多集群架构的监控能力,帮助客户实现高效运维和成本优化。未来,结合AI助手,将进一步提升问题定位和解决效率,缩短MTTR,助力构建智能运维体系。
|
Kubernetes Java 应用服务中间件
采集kubernetes的容器日志
原文:https://www.zeusro.tech/2018/12/08/log-to-kubernetes/ 推送到ElasticSearch
2773 0
|
监控 Kubernetes Shell
使用阿里云日志服务采集查询kubernetes容器日志
使用阿里云日志收集查询kubernetes容器日志
2933 0
|
6天前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
17天前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
69 12
|
22天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
45 2

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版