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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 通过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搭建和管理企业级网站应用
目录
相关文章
|
3天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
12 2
|
5天前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
4天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
5天前
|
运维 Kubernetes Shell
【赵渝强老师】K8s中Pod的临时容器
Pod 是 Kubernetes 中的基本调度单位,由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。临时容器用于故障排查和性能诊断,不适用于构建应用程序。当 Pod 中的容器异常退出或容器镜像不包含调试工具时,临时容器非常有用。文中通过示例展示了如何使用 `kubectl debug` 命令创建临时容器进行调试。
|
5天前
|
Kubernetes 调度 容器
【赵渝强老师】K8s中Pod中的业务容器
Pod 是 Kubernetes 中的基本调度单元,由一个或多个容器组成。除了业务容器,Pod 还包括基础容器、初始化容器和临时容器。本文通过示例介绍如何创建包含业务容器的 Pod,并提供了一个视频讲解。示例中创建了一个名为 "busybox-container" 的业务容器,并使用 `kubectl create -f firstpod.yaml` 命令部署 Pod。
|
13天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
9天前
|
关系型数据库 MySQL API
|
9天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
184 7
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
2天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
3天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?

相关产品

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