Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)

Jenkins 2361.2 + Maven Integration + SVN/GIT + Docker + 阿里云镜像 + Kubernetes(K8S)

本文用于学习,了解原理,和实际应用,有所差别,特别是 Post Steps 步骤中,方式很多,根据实际情况而定。

实际应用中,一般 Pipeline 流水线的方式比较多。

环境如下

  • Jenkins 安装在 Windows 2012R2 上
  • Docker 在另一个 Linux CentOS 7.6上
  • K8S 另外三台做的集群
  • 镜像仓库用的是阿里云的

流程

  1. Jenkins 将代码从SVN服务器上,下载到 JENKINS_HOME 里的 workspace 中
  2. 通过 Maven 进行 编译打包
  3. Build/Publis Docker Image 对 maven 打好的包进行编译
  4. Push 到阿里云仓库 SpringBoot Docker 发布到 阿里仓库
  5. 通过远程 SSH 执行 K8S 的 kubectl deployment 命令,去阿里云镜像中下载部署 Kubernetes(K8S) Deployment 拉取阿里云镜像部署

Jenkins插件安装

  1. Localization: Chinese (Simplified)
  2. Subversion 【2.16.0】 --从SVN中获取代码
  3. Maven Integration 【3.20】 -- 编译项目
  4. Docker plugin 【1.2.10】 -- 用于节点管事中的 Docker 维护
  5. docker-build-step 【2.8】 -- 用于 Post Steps 的时候,选择 Build/Publish Docker Image
  6. SSH 【6.1】-- 用于集成 K8S,远程执行K8S服务器上的命令

Global Tool Configuration

这边使用的SVN,Git 差不多,详见 全局工具配置

如果 Jenkins 和 Docker 同一台,页在 全局工具配置中进行 Docker 配置,本文Jenkins 和 Docker 不在同一台

配置远程 Docker 服务

因为Docker 和 Jenkins 不在同一台服务器上,配置后将来在 Maven 编译后,利用远程 Docker 服务器进行编译发布

如果配了项目,首页变了,可以按下面方式找到入口点

选择 Docker 进行添加

输入Docker服务器的 地址(服务器没有设置用户凭证,所以这边没有设置)

测试 Docker 服务器连接

修改 Docker 服务器配置

Connection refused: no further information: /172.xxx.xxx.xxx:2370

  1. Docker开启远程访问,注意端口不要用默认的,防止被攻击
[root@localhost ~]# vi /usr/lib/systemd/system/docker.service 
#修改
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2370

开放端口
#防火墙开放端口
[root@localhost ~]# firewall-cmd --permanent --zone=public --add-port=2370/tcp
[root@localhost ~]# firewall-cmd --reload
重启服务
#重新加载配置文件
[root@localhost ~]# systemctl daemon-reload    
#重启服务
[root@localhost ~]# systemctl restart docker.service 
#查看端口是否开启
[root@localhost ~]# netstat -nlpt
#直接curl看是否生效
[root@localhost ~]# curl http://127.0.0.1:2370/info

新建Maven项目

添加 SVN 用户凭证(可在描述中添加说明,方便后期选择)

选择 SVN 用户凭证

跳过单元测试

clean package -Dmaven.test.skip=true

运行构建

查看控制台日志

推送至阿里云镜像

在 Post Step 中,选择 Build/Publish Doker Image

${WORKSPACE}

保存后构建

集成Kubernetes(K8S)

安装完 SSH 插件后,在Dashboard -> Manage Jenkins -> Configure System 中可以进行 ** SSH remote hosts** 配置

  1. 添加K8S访问凭证(一般使用 SSH Username with private key) SSH Key的方式,
  2. 到 Configure System 中新增 SSH remote hosts




    输入命令
kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:3.1

目前:阿里云上是 3.0,K8S 服务器中使用的是 1.0,接下来构建 3.1

kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:3.1

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
11天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
322 28
|
7天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
12天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
81 2
|
15天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
47 4
|
14天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
27 1
|
16天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
48 3
|
15天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
7天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
23 0
|
6月前
|
存储 网络协议 Ubuntu
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接
230 0
|
6月前
|
Ubuntu 安全 网络安全
百度搜索:蓝易云【Ubuntu系统SVN服务器搭建教程】
现在,你已经成功在Ubuntu系统上搭建了SVN服务器。其他用户可以通过SVN客户端连接到你的SVN服务器,进行代码版本管理和协作开发。注意,为了安全起见,建议配置SSL加密以保护数据传输。
81 1