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

jenkins,svn,git,maven,docker,阿里,镜像,kubernetes,k8s · 浏览次数 : 353

小编点评

## Jenkins 2361.2 + Maven Integration + SVN/GIT + Docker + 阿里云镜像 + Kubernetes(K8S) 本文介绍如何使用 Jenkins 和 Docker 进行 K8S 的部署,并通过 Post Steps 中的 SSH 配置进行 K8S 管理。 **环境:** * Jenkins 安装在 Windows 2012R2 上 * Docker 在另一个 Linux CentOS 7.6 上 * K8S 另外三台做的集群镜像仓库用的是阿里云的流程Jenkins 将代码从 SVN服务器上,下载到 `JENKINS_HOME` 里的 `workspace` 中通过 Maven 进行编译打包Build/Publis Docker Image 对 maven 打好的包进行编译Push 到阿里云仓库 **Post Steps 配置** **1. SSH 密钥配置** * 准备 SSH 密钥文件,并在 `Jenkins > Configure System` 中添加 SSH remote hosts。 * 使用 SSH 密钥登录阿里云 K8S 集群管理服务器。 * 配置 `SSH key` 为 `privateKey`。 **2. K8S 凭证配置** * 在 `Jenkins > Configure System` 中设置 K8S 凭证。 * 选择 `SSH remote hosts` 并输入命令 `kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:3.1`。 * 配置 `Username` 和 `privateKey`。 **3. 构建和部署 K8S Deployment** * 在 `Pipeline` 中添加 Post Steps。 * 选择 `Build/Publish Doker Image`。 * 配置参数: * `DOCKER_HOST`:阿里云 K8S 集群管理服务器 IP。 * `DOCKER_IMAGE`:构建的 Docker Image名称。 * `DOCKER_PASSWORD`:Docker镜像构建时提供的密码。 **4. 运行 K8S Deployment** * 在 `Post Steps` 中选择 `SSH remote hosts` 配置。 * 输入 `kubectl apply -f deployment.yaml`,其中 `deployment.yaml` 是 K8S Deployment 的 YAML 文件。 * 运行 `kubectl get pods` 查看 K8S Deployment 的部署状态。 **5. 查看日志和设置默认端口** * 在 Dashboard 中可以查看 K8S Deployment 的日志。 * 在 Jenkins 中设置默认端口,以便远程连接 K8S。 **注意事项:** * 本示例使用 `Docker` 和 `kubectl`,假设 Docker 和 Jenkins 在不同的台式服务器上安装。 * 建议在配置 SSH 密钥和 K8S 凭证之前,仔细阅读相关文档。

正文

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

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

环境如下

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

流程

image

  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 服务器进行编译发布
image
如果配了项目,首页变了,可以按下面方式找到入口点
image
image
选择 Docker 进行添加
image
image
输入Docker服务器的 地址(服务器没有设置用户凭证,所以这边没有设置)
image
测试 Docker 服务器连接
image

修改 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

image

开放端口
#防火墙开放端口
[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

image

新建Maven项目

image
添加 SVN 用户凭证(可在描述中添加说明,方便后期选择)
image
image
选择 SVN 用户凭证
image
跳过单元测试

clean package -Dmaven.test.skip=true

image

运行构建
image
image
查看控制台日志
image

推送至阿里云镜像

在 Post Step 中,选择 Build/Publish Doker Image
image
${WORKSPACE}
image
image
保存后构建
image

集成Kubernetes(K8S)

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

  1. 添加K8S访问凭证(一般使用 SSH Username with private key) SSH Key的方式,
    image
  2. 到 Configure System 中新增 SSH remote hosts
    image
    image
    image
    image
    输入命令
kubectl set image deployment/javademo1 vipsoft=registry.cn-shanghai.aliyuncs.com/vipsoft/vipsoft:3.1

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

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

image
image
image

与Jenkins + SVN/Git + Maven + Docker + 阿里云镜像 + Kubernetes(K8S)相似的内容:

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

Jenkins 2361.2 + Maven Integration + SVN/GIT + Docker + 阿里云镜像 + Kubernetes(K8S) 本文用于学习,了解原理,和实际应用,有所差别,特别是 Post Steps 步骤中,方式很多,根据实际情况而定。 实际应用中,一般 Pipe

Jenkins + SVN

安装插件 Localization: Chinese (Simplified) Subversion 配置国内源 http://mirror.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json 全局工具配置 Maven 配置 JDK 配置

Jenkins Pipeline 流水线 - 完整构建 Pipeline Script 脚本

Docker Jenkins 安装配置 Windows 2016 安装 Jenkins 前置条件可参考 Jenkins Pipeline 流水线 - 拉代码(SVN) + Maven 编译打包 Jenkins Pipeline 流水线 - 添加节点 使用代理 Jenkins Pipeline 流水线

Jenkins Pipeline 流水线 - 拉代码(SVN) + Maven 编译打包

Jenkins Pipeline 流水线 步骤 拉取SVN代码 -> Maven 构建 -> Docker 编译 -> 发布至阿里云仓库 -> K8S 更新 Jenkins插件安装 Localization: Chinese (Simplified) Subversion 【2.16.0】 --从S

Git + Jenkins 自动化 NGINX 发布简易实现

概述 之前基于 GitLab + Jenkins 实现了简单的 NGINX 的自动化发布。 具体包含如下的组件: GitLab 包括 GItLab 的 WebHook; Jenkins 及其插件: Generic Webhook Trigger Publish Over SSH 🧠疑问: 为什么不

Jenkins快速入门部署+实践

安装 方法一 Jenkins中文网下载jenkins.war 方法二 直接从http://mirrors.jenkins-ci.org/war/latest/jenkins.war 下载最新的war包,然后解压到某个固定目录就算安装完成了 启动方式 启动方法: java -jar jenkins.w

Jenkins Pipeline 流水线 - 上传文件 Publish over SSH + Docker 编译 + 上传到阿里仓库

Jenkins Pipeline 流水线 Publish over SSH 将jar上传到远程 Docker 服务器、执行编译命令生成镜像、将镜像上传到阿里仓库 Publish over SSH Jar包上传、编译、上传 生成上传 jar 包脚本配置 生成上传 Dockerfile 脚本配置 注意在

Jenkins 简述及其搭建

什么是持续集成? 持续集成(CI)是在软件开发过程中自动化和集成许多团队成员的代码更改和更新的过程。在 CI 中,自动化工具在集成之前确认软件代码是有效且无错误的,这有助于检测错误并加快新版本的发布。 什么是持续交付? 持续交付 (CD) 是指每天多次将新软件投入生产,自动将应用程序交付到基础设施环

Jenkins 基础配置

博客地址:https://www.cnblogs.com/zylyehuo/ 参考链接 解决:Jenkins: signature verification failed in update site ‘default‘ (show details) jenkins 下一切皆文件 虚拟机基本配置 J

[转帖]jenkins 需要java11

https://www.cnblogs.com/zhoading/p/17079947.html 开源 Devops 工具 Jenkins 宣布: 从 6 月 28 日发布的 Jenkins 2.357 和即将发布的 9 月 LTS 版本开始,Jenkins 最低需要 Java 11。 Jenkin