Jenkins+Docker | K8S虚拟化实现网站自动部署 简单流程 未完待续,,

目录

大纲

[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项目
  1. 打开Jenkins Dashboard,清晰的界面上,点击左侧菜单中的 "New Item"
  2. 在弹出的框中,输入项目名称,确保无误。
  3. 选择 "Pipeline" 选项,犹豫片刻后,点击 "OK"
1.2 创建Freestyle项目
  1. 再次回到Jenkins Dashboard,重复点击 "New Item"
  2. 输入项目名称,这次选择 "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项目
  1. 在配置页面的 "Build" 部分,点击 "Add build step" ,选择合适的构建步骤,比如 "Execute shell" "Invoke Ant"
  2. 此处,您可以根据需求选择执行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构建步骤示例:

  1. 在Freestyle项目的配置页面,找到 "Build" ,再点击 "Add build step"
  2. 选择 "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. 自动化部署流程

  1. 代码提交 :当开发人员向Git提交代码,Jenkins便会依设置的触发器启动构建流程。
  2. 构建与推送镜像 :Jenkins从版本库中获取代码,编译应用,生成Docker镜像,并将其推送至Docker仓库。
  3. 更新Kubernetes :借助kubectl的声明式更新操作,确保Kubernetes中运行的容器镜像始终为最新版本。

总结:

通过以上的步骤,您便能构建出一套完整的自动化部署体系,充分融合Jenkins、Docker和Kubernetes,实现高效的CI/CD流程。在实施中,如遇具体需求或问题,请细致调试和优化配置,确保最佳实践的实施。

写文不易,给我点点关注 和点点赞 点点收藏吧

3分云计算-CSDN博客3分云计算擅长云计算及运维,大数据运维及大数据基础,MySQL,等方面的知识,3分云计算关注kubernetes,求职招聘,数据仓库,量子计算,ssh,redis,spring,java,apache,elasticsearch,devops,flume,mysql,vim,开源,空间计算,python,zabbix,github,oracle,nginx,ubuntu,elk,华为云,开源软件,自动化,缓存,数据结构,交友,gitee,flink,运维,pycharm,kafka,服务器,gitlab,搜索引擎,运维开发,大数据,centos,hive,容器,idea,金融,docker,sql,ansible,git,spark,linux,debian,jenkins,json,hadoop,sublime text,数据库,云计算,系统架构,程序人生,负载均衡,vscode,hdfs,bash,aws,etcd,低代码领域.https://blog.csdn.net/qq_61414097

相关推荐
向阳121830 分钟前
mybatis 缓存
java·缓存·mybatis
上等猿36 分钟前
函数式编程&Lambda表达式
java
yg_小小程序员1 小时前
鸿蒙开发(16)使用DevEco Studio上的Git工具进行多远程仓管理
git·华为·harmonyos
蓝染-惣右介1 小时前
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
java·设计模式
秋恬意1 小时前
IBatis和MyBatis在细节上的不同有哪些
java·mybatis
齐 飞2 小时前
BeanFactory和FactoryBean
java·sprint
大霞上仙2 小时前
lxml 解析xml\html
java·服务器·网络
Xiaoweidumpb2 小时前
tomcat temp临时文件不清空,占用硬盘,jdk字体内存泄漏
java·tomcat