文章目录
引言
在当今企业环境里,DevOps已经成为了实现敏捷、持续集成(CI)和持续交付(CD)的关键。这篇博客我们将分享如何使用华为的CodeArts与CCE(Cloud Container Engine)打造一个自动化的CI/CD环境,并将其实践于Kubernetes集群的部署中。我们将细致解释如何将编译后的应用部署到具有公网IP的机器,并且使其自动发布到本地Kubernetes集群。
DevOps的价值
在传统的软件开发模型中,开发和运维是两个独立且相互隔离的岗位。然而,这种缺乏沟通和协作的方式无法满足当前快速交付、高质量代码的商业要求。而DevOps,就是一种提高业务敏捷性,促进开发、运营和质量合作的哲学。为了进一步实现这些目标,我们将DevOps思想融入了我们下面要介绍的工作流程。你可以在Atlassian 的 DevOps 指南找到更多关于DevOps的原理和实战案例。
高效工作流程
- 购买并部署CCE机器 我们首先购买了一台CCE机器,CCE 是华为云提供的高效、弹性、安全的Kubernetes托管服务。然后在这个机器上部署了frp(Fast Reverse Proxy)服务。frp是一款高效、可靠的内网穿透反向代理软件,可以帮助我们将内网服务暴露给外网。
我们的工作流程构建于DevOps的核心理念之上,主要包括以下步骤:
yaml
[common]
# frp server的地址
server_addr = x.x.x.x
server_port = 7000
[web]
# frp的代理类型,这里使用的是http
type = http
# frp要代理的本地端口
local_port = 80
# 要映射到的子域名
subdomain = test
- 在华为CodeArts实现代码的CI 代码的集成是持续交付的一个重要步骤。我们选择了华为平台的CodeArts,并在这个平台实现了代码上传、静态检查和编译构建。具体来说,每当我们进行git提交并推送到远程仓库时,CodeArts就会自动捕获这个事件,然后触发构建和测试过程。具体步骤如下:
- 代码上传:我们首先在CodeArts创建一个项目,然后把代码上传到这个项目的仓库中。
- 代码检查:提交代码后,我们运行静态代码分析,以检测代码中可能存在的错误和不规范的编程实践。
- 编译构建:静态代码分析通过后,我们运行编译脚本,将源代码转化为可执行代码。
yaml
version: "3"
services:
build:
image: 'registry.huaweicloud.com/devcloud-java/mvn3.6-jdk8:latest'
script:
- 'mvn clean package -Dmaven.test.skip=true'output:- target/*.jar
output:
- target/*.jar
- 利用CCE远程交付构建的应用 当我们在CodeArts完成代码构建后,立即通过SSH隧道和frp服务,将应用部署到我们的CCE机器上。这一步骤实现的就是持续交付的核心思想:快速、准确、可靠地将新的或更新的版本发布到生产环境。
- 通过Kubernetes集群持续部署应用 当构建的应用被送达到CCE机器之后,我们的本地Kubernetes集群便会根据新的镜像进行更新并运行新的应用。在这个过程中,我们使用了Ingress进行服务路由管理,让我们可以通过统一的入口访问我们的服务。关于如何搭建Kubernetes集群和配置Ingress,你可以参考Kubernetes的官方文档。
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: my_docker_registry/myapp_image:latest
ports:
- containerPort: 8080
---
kind: Service
apiVersion: v1
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 8080
- DevOps实践:迭代优化 DevOps的目标之一是打造一个流动效率高且反馈快速的环境,任何一个环节的问题都可以快速发现并且在下一个迭代中改进。在我们的流程中,我们坚持迭代思想,持续优化各个环节以提高效率。
经济性与效率
通过整合CodeArts和CCE,我们打破了部署和发布的边界,实现了自动部署。这不仅节省了大量人工介入的时间和努力,也大大地优化了集群资源的使用。这种高效的CI/CD流程对于企业来说具有很高经济性,因为它不仅缩短了产品上线的周期,还增加了团队开发效率,并且可以更灵活地适应业务需求变化。
结束语
以DevOps理念为指引,结合华为Cloud Container Engine和CodeArts为工具,我们成功地实现了一个敏捷、高效的CI/CD环境。与不断改进和优化的精神相符,这个过程将不断迭代和进步。我们邀请所有的读者一同探索和享受DevOps带来的便利,参与到这个不断改进的过程中来