结合DevOps实践:使用Huawei CodeArts和CCE进行自动化Kubernetes集群部署

文章目录

引言

在当今企业环境里,DevOps已经成为了实现敏捷、持续集成(CI)和持续交付(CD)的关键。这篇博客我们将分享如何使用华为的CodeArtsCCE(Cloud Container Engine)打造一个自动化的CI/CD环境,并将其实践于Kubernetes集群的部署中。我们将细致解释如何将编译后的应用部署到具有公网IP的机器,并且使其自动发布到本地Kubernetes集群。

DevOps的价值

在传统的软件开发模型中,开发和运维是两个独立且相互隔离的岗位。然而,这种缺乏沟通和协作的方式无法满足当前快速交付、高质量代码的商业要求。而DevOps,就是一种提高业务敏捷性,促进开发、运营和质量合作的哲学。为了进一步实现这些目标,我们将DevOps思想融入了我们下面要介绍的工作流程。你可以在Atlassian 的 DevOps 指南找到更多关于DevOps的原理和实战案例。

高效工作流程

  1. 购买并部署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
  1. 在华为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
  1. 利用CCE远程交付构建的应用 当我们在CodeArts完成代码构建后,立即通过SSH隧道和frp服务,将应用部署到我们的CCE机器上。这一步骤实现的就是持续交付的核心思想:快速、准确、可靠地将新的或更新的版本发布到生产环境。
  2. 通过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
  1. DevOps实践:迭代优化 DevOps的目标之一是打造一个流动效率高且反馈快速的环境,任何一个环节的问题都可以快速发现并且在下一个迭代中改进。在我们的流程中,我们坚持迭代思想,持续优化各个环节以提高效率。
    经济性与效率
    通过整合CodeArts和CCE,我们打破了部署和发布的边界,实现了自动部署。这不仅节省了大量人工介入的时间和努力,也大大地优化了集群资源的使用。这种高效的CI/CD流程对于企业来说具有很高经济性,因为它不仅缩短了产品上线的周期,还增加了团队开发效率,并且可以更灵活地适应业务需求变化。

结束语

以DevOps理念为指引,结合华为Cloud Container EngineCodeArts为工具,我们成功地实现了一个敏捷、高效的CI/CD环境。与不断改进和优化的精神相符,这个过程将不断迭代和进步。我们邀请所有的读者一同探索和享受DevOps带来的便利,参与到这个不断改进的过程中来

相关推荐
猴哥聊项目管理3 小时前
什么是DevOps智能平台的核心功能?
运维·项目管理·制造·devops·软件·项目管理软件·软件分享
半导体守望者4 小时前
ADVANTEST R3764 66 R3765 67爱德万测试networki connection programming网络程序设计手册
经验分享·笔记·功能测试·自动化·制造
孔令飞6 小时前
Go 为何天生适合云原生?
ai·云原生·容器·golang·kubernetes
东方佑8 小时前
使用 Python 自动化 Word 文档样式复制与内容生成
python·自动化·word
藥瓿亭9 小时前
K8S认证|CKS题库+答案| 5.日志审计
linux·运维·docker·云原生·容器·kubernetes·cka
藥瓿锻10 小时前
2024 CKA题库+详尽解析| 15、备份还原Etcd
linux·运维·数据库·docker·容器·kubernetes·cka
会又不会10 小时前
JMeter-SSE响应数据自动化2.0
jmeter·自动化
新加坡内哥谈技术12 小时前
Meta计划借助AI实现广告创作全自动化
运维·人工智能·自动化
陈陈CHENCHEN20 小时前
【Kubernetes】K8s 之 ETCD - 恢复备份
kubernetes
集成显卡20 小时前
PlayWright | 初识微软出品的 WEB 应用自动化测试框架
前端·chrome·测试工具·microsoft·自动化·edge浏览器