热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Kubernetes+Docker+SVN+Jenkins+MavenDevOps

流程图随着分布式开发和微服务的大量引进,应用测试、发布到上线成为了项目的一大痛点,我们不得不考虑自动化平台的搭建既使用。通过查找相关文档,得到证实DevOps(Developmen

《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 流程图

随着分布式开发和微服务的大量引进,应用测试、发布到上线成为了项目的一大痛点,我们不得不考虑自动化平台的搭建既使用。通过查找相关文档,得到证实DevOps(Development和Operations的组合词)是目前最好的实践方式,对CI/CD的诠释也相对完整。下图直观表现了一体化思维,从项目源码到应用上线部署只需一个按钮搞定,本文是由自己搭建所有组件并成功演示了一键打包部署(项目打包、镜像生成、服务编排).

流程结构流程说明:
1、用户向Gitlab或SVN提交代码,代码中包含Dockerfile文件;
2、Jenkins监听代码库的推送和变更事件;
3、Jenkins调用Maven插件对源码进行编译打包;
4、Jenkins调用docker工具根据Dockerfile文件生成镜像,并推送镜像至Harbor仓库;
5、Jenkins通过SSH远程调用Kubernetes集群的Master节点,更新Pod的的模板yaml文件,调用kubectl命令进行发布操作;
6、Kubernetes集群的Node节点从Harbor仓库拉取镜像,启动Pod和应用容器。

实施步骤

kubernets测试机或高可用集群环境搭建 已完成

docker harbor私有仓库搭建 已完成

kubernets+harbor+docker+svn+Jenkins+maven代码持续集成与自动部署

jdk和maven安装

# tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/local
# tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local

配置环境变量:

#set java enviroment
JAVA_HOME=/usr/local/jdk1.8.0_152
JRE_HOME=/usr/local/jdk1.8.0_152/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
#set maven enviroment
export MAVEN_HOME=/usr/local/apache-maven-3.5.4
export PATH=$MAVEN_HOME/bin:$PATH

验证:

# java -version
# mvn -v

SVN使用公司的

Jenkins安装

# wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# wget -q -O - http://pkg.jenkins.io/debian-stable/jenkins.io.key
# sh -'echo deb http://pkg.jenkins-ci.org/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
# yum install jenkins
# service jenkins restart
# systemctl status jenkins.service
# systemctl daemon-reload
# service jenkins restart

注意报错:Starting Jenkins bash: /usr/bin/java: No such file or directory

# vim /etc/init.d/jenkins`

《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 报错一

《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 报错二

修改java路径为自己安装的路径:/usr/local/jdk1.8.0_152/bin/java
Jenkins默认设置:
日志路径:/var/log/jenkins/jenkins.log
配置文件:/etc/sysconfig/jenkins
默认启用8080端口
Jenkins权限变更:
由于Jenkins需要执行shell脚本,为后续操作方便给Jenkins一个root权限
1、vim /etc/sysconfig/jenkins JENKINS_USER 改为root
2、更改相关目录权限

chown –R root:root /var/lib/jenkins
chown –R root:root /var/cache/jenkins
chown –R root:root /var/log/jenkins

3、重启Jenkins
service jenkins restart
需要/var/lib/jenkins/secrets/initialAdminPassword的密码解锁Jenkins
Jenkins邮件通知设置参照:

插件安装选择默认建议安装,额外插件: Publish Over SSH、 docker-build-step、 Maven Integration plugin、 SSH Slaves plugin
Jenkins全局工具设置:
系统管理->全局工具配置

《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 four.png
《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 five.png

新建maven项目并配置

《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 six.png
《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 siven.png
《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 eight.png
《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 nine.png
《Kubernetes+Docker+SVN+Jenkins+Maven DevOps》 ten.png

至此,一键部署应用到kubernetes集群就完成了!


推荐阅读
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 在日常的项目开发中,测试环境和生产环境通常采用HTTP协议访问服务。然而,从浏览器的角度来看,这种访问方式会被标记为不安全。为了提升安全性,当前大多数生产环境已经转向了HTTPS协议。本文将详细介绍如何在Spring Boot应用中配置SSL证书,以实现HTTPS安全访问。通过这一过程,不仅可以增强数据传输的安全性,还能提高用户对系统的信任度。 ... [详细]
  • Spring框架的核心组件与架构解析 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 本课程深入探讨了 Python 中自定义序列类的实现方法,涵盖从基础概念到高级技巧的全面解析。通过实例演示,学员将掌握如何创建支持切片操作的自定义序列对象,并了解 `bisect` 模块在序列处理中的应用。适合希望提升 Python 编程技能的中高级开发者。 ... [详细]
author-avatar
aiminilee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有