• 结合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的核心理念之上,主要包括以下步骤:
    [common]
    # frp server的地址
    server_addr = x.x.x.x
    server_port = 7000
    [web]
    # frp的代理类型,这里使用的是http
    type = http
    # frp要代理的本地端口
    local_port = 80
    
    # 要映射到的子域名
    subdomain = test
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    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: 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    1. DevOps实践:迭代优化 DevOps的目标之一是打造一个流动效率高且反馈快速的环境,任何一个环节的问题都可以快速发现并且在下一个迭代中改进。在我们的流程中,我们坚持迭代思想,持续优化各个环节以提高效率。
      经济性与效率
      通过整合CodeArts和CCE,我们打破了部署和发布的边界,实现了自动部署。这不仅节省了大量人工介入的时间和努力,也大大地优化了集群资源的使用。这种高效的CI/CD流程对于企业来说具有很高经济性,因为它不仅缩短了产品上线的周期,还增加了团队开发效率,并且可以更灵活地适应业务需求变化。

    结束语

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

  • 相关阅读:
    基于SpringBoot的水果销售网站
    Java IO流
    机器学习(14)---逻辑回归(含手写公式、推导过程和手写例题)
    Elasticsearch 从入门到实践
    19、一起来学习MySQL 索引
    电商前台项目(三):完成Search搜索模块业务
    VFP用上git来管理源代码,备份回滚,开发模式不影响正式版本,猫猫带你来入门
    R语言 | 绘制带P值的差异柱状图
    修改npm全局安装模式的路径
    什么是凸函数
  • 原文地址:https://blog.csdn.net/qq_42704442/article/details/134286507