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

本文主要是介绍结合DevOps实践:使用Huawei CodeArts和CCE进行自动化Kubernetes集群部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 引言
    • DevOps的价值
    • 高效工作流程
    • 结束语

引言

在当今企业环境里,DevOps已经成为了实现敏捷、持续集成(CI)和持续交付(CD)的关键。这篇博客我们将分享如何使用华为的CodeArts与CCE(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的核心理念之上,主要包括以下步骤:
[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创建一个项目,然后把代码上传到这个项目的仓库中。
  • 代码检查:提交代码后,我们运行静态代码分析,以检测代码中可能存在的错误和不规范的编程实践。
  • 编译构建:静态代码分析通过后,我们运行编译脚本,将源代码转化为可执行代码。
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的官方文档。
apiVersion: apps/v1
kind: Deployment
metadata:name: myapp-deployment
spec:replicas: 3selector:matchLabels:app: myapptemplate:metadata:labels:app: myappspec:containers:- name: myappimage: my_docker_registry/myapp_image:latestports:- containerPort: 8080
---
kind: Service
apiVersion: v1
metadata:name: myapp-service
spec:selector:app: myappports:- protocol: TCPport: 80targetPort: 8080
  1. DevOps实践:迭代优化 DevOps的目标之一是打造一个流动效率高且反馈快速的环境,任何一个环节的问题都可以快速发现并且在下一个迭代中改进。在我们的流程中,我们坚持迭代思想,持续优化各个环节以提高效率。
    经济性与效率
    通过整合CodeArts和CCE,我们打破了部署和发布的边界,实现了自动部署。这不仅节省了大量人工介入的时间和努力,也大大地优化了集群资源的使用。这种高效的CI/CD流程对于企业来说具有很高经济性,因为它不仅缩短了产品上线的周期,还增加了团队开发效率,并且可以更灵活地适应业务需求变化。

结束语

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

这篇关于结合DevOps实践:使用Huawei CodeArts和CCE进行自动化Kubernetes集群部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/374360

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV