自建k8s集群,利用开源的GitLab、Jenkins和Harbor实现CI/CD和DevOps的过程回顾

使用自己部署的Kubernetes集群,结合GitLab、Jenkins和Harbor实现CI/CD和DevOps的过程大致如下:

1.代码管理(GitLab):

  • 开发者在GitLab上创建代码仓库,编写代码并提交变更。

  • 每次代码提交都会触发GitLab的Webhook,这是一个HTTP回调,用于通知其他系统代码库中的变化。

2.持续集成(Jenkins):

  • Jenkins监听来自GitLab的Webhook,一旦检测到代码提交,自动触发一个新的构建任务。

  • Jenkins拉取最新的代码,利用代码中的jenkinsfile,执行构建过程,比如编译代码、运行自动化测试等。

  • 如果构建和测试通过,Jenkins会将构建产物(如Docker镜像)推送到Harbor。

3.镜像仓库(Harbor):

  • Harbor作为私有的Docker镜像仓库,存储Jenkins构建的Docker镜像。

  • 开发者可以在这里管理镜像的版本,确保镜像的安全和合规性。

4.持续部署(Kubernetes):

  • Jenkins在构建成功后,可以配置为自动将Docker镜像部署到Kubernetes集群。

  • Jenkins使用代码中的Kubernetes的Deployment配置文件,通过kubectl命令或者直接与Kubernetes API通信来部署应用。

  • Kubernetes根据Deployment定义的Pod副本数,自动创建和管理Pod,确保应用的高可用性。

5.服务发现和负载均衡(Kubernetes Service):

  • Kubernetes Service为Pod提供一个统一的访问接口,可以是ClusterIP、NodePort、LoadBalancer或ExternalName。

  • 通过Service,外部请求可以被转发到后端的任意一个Pod上,而不需要关心Pod的具体位置。

6.自动化测试和监控:

  • 在CI/CD流程中,可以集成自动化测试和监控工具,以确保部署的应用性能和稳定性。

  • 这些工具可以与Jenkins集成,自动执行性能测试、安全扫描等任务,并在发现问题时发出警报。

7.日志管理和分析:

  • 可以集成日志管理工具,如ELK Stack(Elasticsearch、Logstash、Kibana)或Prometheus和Grafana,来收集和分析应用日志和监控数据。

8.反馈循环:

  • 通过监控和日志分析得到的应用性能数据,可以反馈给开发团队,以便他们优化代码和改进产品。

整个流程是一个自动化的循环,从代码提交开始,到应用部署结束,每个步骤都可以通过自动化工具紧密集成,以提高开发效率和应用质量。这种集成的CI/CD和DevOps实践,使得开发、测试、部署和监控变得更加高效和可靠。

相关推荐
方也_arkling5 小时前
【Java-Day08】static / final / 枚举
java·开发语言
橙淮5 小时前
Spring Bean作用域与生命周期全解析
java·spring
风吹夏回5 小时前
Python 全局异常处理:从“满屏 try-except”到优雅兜底
开发语言·python
Chengbei115 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
llz_1125 小时前
web-第一次课后作业
java·开发语言·idea
小熊Coding5 小时前
Python爬取当当网二手图书项目实战!
开发语言·爬虫·python·beautifulsoup·requests·二手图书
秋95 小时前
Java项目运行5天左右自动宕机:系统性定位与解决方案
java·开发语言·python
小江的记录本5 小时前
【JVM虚拟机】垃圾回收GC:垃圾收集器:CMS:核心原理、回收流程、优缺点、废弃原因(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·spring·面试·maven
xiaoshuaishuai86 小时前
C# 内存管理与资源泄漏
开发语言·c#
DIY源码阁6 小时前
JavaSwing学生成绩管理系统 - MySQL版
java·数据库·mysql·eclipse