目录
[1.Jenkins 的设置与 Docker、Kubernetes 集成指南](#1.Jenkins 的设置与 Docker、Kubernetes 集成指南)
[1. 创建新的Pipeline项目或Freestyle项目](#1. 创建新的Pipeline项目或Freestyle项目)
[1.1 创建Pipeline项目](#1.1 创建Pipeline项目)
[1.2 创建Freestyle项目](#1.2 创建Freestyle项目)
[2. 配置源代码管理](#2. 配置源代码管理)
[2.1 配置Git作为源代码管理工具](#2.1 配置Git作为源代码管理工具)
[3. 配置构建触发器](#3. 配置构建触发器)
[4. 配置构建步骤](#4. 配置构建步骤)
[4.1 对于Pipeline项目](#4.1 对于Pipeline项目)
[4.2 对于Freestyle项目](#4.2 对于Freestyle项目)
[5. 添加Docker构建步骤](#5. 添加Docker构建步骤)
[5.1 Pipeline项目](#5.1 Pipeline项目)
[5.2 Freestyle项目](#5.2 Freestyle项目)
[6. 保存配置](#6. 保存配置)
[7. 触发构建](#7. 触发构建)
[2. Docker 设置](#2. Docker 设置)
[2.1 准备 Dockerfile](#2.1 准备 Dockerfile)
[2.2 确保Docker已安装](#2.2 确保Docker已安装)
[2.3 使用 Docker 插件](#2.3 使用 Docker 插件)
[3. Kubernetes 设置](#3. Kubernetes 设置)
[3.1 准备 Kubernetes 集群](#3.1 准备 Kubernetes 集群)
[3.2 创建 Kubernetes Deployment](#3.2 创建 Kubernetes Deployment)
[3.3 使用 kubectl 部署应用](#3.3 使用 kubectl 部署应用)
[4. 自动化部署流程](#4. 自动化部署流程)
大纲
将Jenkins与Docker和Kubernetes(K8S)结合使用可以实现网站的自动化部署和持续集成/持续部署(CI/CD)。以下是一个简单的流程,
注意:这是我以前用的开发文档,更详细的文档,因某些原因我和团队其他人共享,,所以只保留了这么多。。
后面的话,有时间,我会手动配置出一个属于我个人的,零起点,跟着做完就能用的详细教程。
Jenkins设置
在Jenkins中创建一个新的Pipeline项目或Freestyle项目。
在项目配置中设置源代码管理(如Git)和构建触发器。
配置构建步骤,例如编译代码、运行测试等。
添加Docker构建步骤,构建Docker镜像并推送到Docker仓库。
Docker设置:
在Docker中准备一个基础镜像,包含运行网站所需的环境。
在Jenkins中使用Docker插件构建镜像,并将其推送到Docker仓库。
Kubernetes设置:
在Kubernetes集群中部署一个Pod来运行网站容器。
创建Kubernetes Deployment或Service来管理网站的部署和访问。
自动化部署流程:
当代码提交到源代码仓库时,Jenkins会触发构建任务。
Jenkins将拉取代码、构建应用程序、构建Docker镜像并推送到Docker仓库。
Kubernetes会根据更新的镜像自动更新部署,确保网站始终运行最新版本。
通过这样的流程,您可以实现网站的自动化部署和持续集成/持续部署,提高部署效率并减少人为错误。请注意,具体的配置和步骤可能会根据您的实际需求和环境而有所不同,需要根据实际情况进行调整和优化。
1. Jenkins 的设置与 Docker、Kubernetes 集成指南
在现代软件开发中,Jenkins的灵活性与强大功能,成为持续集成和持续部署(CI/CD)不可或缺的工具。而在构建这一系统的过程中,Docker与Kubernetes的使用,无疑为自动化部署提供了强有力的支持。那么,如何在Jenkins中配置一个新的Pipeline项目或Freestyle项目呢?全方位一步步解析如下。
1. 创建新的Pipeline项目或Freestyle项目
1.1 创建Pipeline项目
- 打开Jenkins Dashboard,清晰的界面上,点击左侧菜单中的 "New Item" 。
- 在弹出的框中,输入项目名称,确保无误。
- 选择 "Pipeline" 选项,犹豫片刻后,点击 "OK" 。
1.2 创建Freestyle项目
- 再次回到Jenkins Dashboard,重复点击 "New Item" 。
- 输入项目名称,这次选择 "Freestyle project" ,同样点击 "OK" 。
2. 配置源代码管理
2.1 配置Git作为源代码管理工具
在项目配置页面,找到 "Source Code Management" 部分:
- 选择 "Git" 作为源。
- 在 "Repository URL" 中,输入您的Git仓库地址。若有认证需求,别忘了点击 "Add" 按钮,完善凭据设置。
- 根据实际情况,填写分支的规范,例如:*/main 或 */master。
3. 配置构建触发器
在项目的配置页面下方,寻找 "Build Triggers" 部分,选择最适合的触发器:
- Poll SCM :定时检查源代码变化。
- Build periodically :周期性触发构建任务。
- GitHub hook trigger for GITScm polling :通过GitHub Webhook触发构建。
4. 配置构建步骤
4.1 对于Pipeline项目
- 在配置页面上,找到 "Pipeline" 部分:
- 在 "Definition" 中选择 "Pipeline script" ,并在 "Script" 框中输入类似于以下的Pipeline脚本:
java
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/your-repo.git'
}
}
stage('Build') {
steps {
sh 'make build'
}
}
stage('Test') {
steps {
sh 'make test'
}
}
stage('Docker Build and Push') {
steps {
script {
docker.withRegistry('https://index.docker.io/v1/', 'docker-credentials-id') {
def app = docker.build("your-docker-repo/your-app:${env.BUILD_ID}")
app.push()
}
}
}
}
}
}
4.2 对于Freestyle项目
- 在配置页面的 "Build" 部分,点击 "Add build step" ,选择合适的构建步骤,比如 "Execute shell" 或 "Invoke Ant" 。
- 此处,您可以根据需求选择执行Shell命令,调用Ant或Gradle脚本。
5. 添加Docker构建步骤
5.1 Pipeline项目
在你的Pipeline脚本中,按照上述示例,明确规定Docker构建与推送的步骤。
5.2 Freestyle项目
- 同样在 "Build" 部分,点击 "Add build step" ,选择 "Execute shell" 。
- 输入用于构建Docker镜像与推送至Docker仓库的Shell命令,例如:
bash
docker build -t your-docker-repo/your-app:${BUILD_ID} .
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
docker push your-docker-repo/your-app:${BUILD_ID}
确保在Jenkins的凭据管理中,已根据Docker Hub的信息创建相应的凭据。
6. 保存配置
在完成所有重要配置之后,别忘了点击页面底部的 "Save" 按钮,将设置牢牢保存
7. 触发构建
- 回到项目主页,点击 "Build Now" 按钮手动触发构建,或者,静待配置好的触发器自动启动构建。
总结
以上步骤展示了如何在Jenkins中从零开始创建一个新的Pipeline项目或Freestyle项目,包含源代码管理、构建触发器和构建步骤的配置。成功设置后,接下来的重点将是Docker和Kubernetes的配置,以便实现更高效的自动化部署。
Dockers安装如下,请看我的文章:
2. Docker 设置
要使用Docker构建并推送您的镜像,按照以下细节:
2.1 准备 Dockerfile
在项目根目录创建一个 Dockerfile,定义构建您的应用程序的Docker镜像,以下是Node.js应用的示例:
javascript
# 使用官方Node.js镜像作为基础镜像
FROM node:14
# 设置工作目录
WORKDIR /usr/src/app
# 复制依赖配置文件
COPY package*.json ./
# 安装依赖请求
RUN npm install
# 复制源代码
COPY . .
# 暴露应用程序端口
EXPOSE 3000
# 启动命令
CMD ["npm", "start"]
2.2 确保Docker已安装
确认Docker已在Jenkins服务器上运行并且可用,执行以下命令查看Docker版本:
bash
docker --version
2.3 使用 Docker 插件
对于Pipeline项目,Docker构建和推送步骤已预设;而Freestyle项目需手动添加。以下是Freestyle项目的Docker构建步骤示例:
- 在Freestyle项目的配置页面,找到 "Build" ,再点击 "Add build step" 。
- 选择 "Execute shell" ,输入构建与推送的命令:
bash
docker build -t your-docker-repo/your-app:${BUILD_ID} .
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
docker push your-docker-repo/your-app:${BUILD_ID}
确保您在Jenkins凭据中添加了Docker Hub的相关凭据,并将环境变量设定为 DOCKER_USERNAME 和 DOCKER_PASSWORD。
3. Kubernetes 设置
配置Kubernetes以支持自动部署应用程序容器需要以下步骤:
3.1 准备 Kubernetes 集群
确保您的Kubernetes集群已正常运行,您可以选择本地的Minikube,或在云提供商的服务(如GKE、EKS、AKS)中创建集群。
3.2 创建 Kubernetes Deployment
您需要编写一个Kubernetes配置文件(如 deployment.yaml),定义Deployment与Service。以下是示例:.yaml 格式
bash
apiVersion: apps/v1
kind: Deployment
metadata:
name: your-app
spec:
replicas: 2
selector:
matchLabels:
app: your-app
template:
metadata:
labels:
app: your-app
spec:
containers:
- name: your-app
image: your-docker-repo/your-app:${BUILD_ID}
ports:
- containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
name: your-app-service
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 3000
selector:
app: your-app
3.3 使用 kubectl 部署应用
在Pipeline的阶段中加入kubectl命令,以更新当前Docker镜像:
bash
stage('Deploy to Kubernetes') {
steps {
script {
def image = "your-docker-repo/your-app:${env.BUILD_ID}"
sh "kubectl set image deployment/your-app your-app=${image} --record"
sh "kubectl rollout status deployment/your-app"
}
}
}
确保在Jenkins中已配置好kubectl,以便与Kubernetes集群顺畅通信。这通常通过设置Kubeconfig文件实现。
4. 自动化部署流程
- 代码提交 :当开发人员向Git提交代码,Jenkins便会依设置的触发器启动构建流程。
- 构建与推送镜像 :Jenkins从版本库中获取代码,编译应用,生成Docker镜像,并将其推送至Docker仓库。
- 更新Kubernetes :借助kubectl的声明式更新操作,确保Kubernetes中运行的容器镜像始终为最新版本。
总结:
通过以上的步骤,您便能构建出一套完整的自动化部署体系,充分融合Jenkins、Docker和Kubernetes,实现高效的CI/CD流程。在实施中,如遇具体需求或问题,请细致调试和优化配置,确保最佳实践的实施。