四时宝库

程序员的知识宝库

k8s使用jenkins流水线实战(k8s部署jenkins流程)

使用Jenkins流水线(Pipeline)将Nginx应用部署到Kubernetes集群上是一个常见的CI/CD实践。以下是一个完整的示例,展示如何使用Jenkins Pipeline脚本将Nginx部署到Kubernetes集群。

前提条件

  1. 1. Jenkins实例:已经安装并配置好的Jenkins服务器。
  2. 2. Kubernetes集群:已经运行的Kubernetes集群。
  3. 3. kubectl:Jenkins节点上已经安装并配置好kubectl,可以访问Kubernetes集群。
  4. 4. Jenkins插件:安装了Kubernetes插件和Pipeline插件。

在使用Jenkins流水线将Nginx应用部署到Kubernetes集群之前,需要确保以下前提条件已经满足。以下是详细的前提条件设置步骤:

Jenkins实例

确保你已经有一个运行中的Jenkins服务器。如果没有,可以按照以下步骤安装和配置Jenkins:

安装Jenkins

1. 安装Java: Jenkins需要Java运行环境。你可以使用以下命令在Ubuntu上安装OpenJDK:sudo apt update
sudo apt install openjdk-11-jdk -y

2. 添加Jenkins仓库并安装

curl -fsSL https://pkg.jenkins.io/debian/jenkins.io.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install jenkins -y

3. 启动Jenkins

sudo systemctl start jenkins
sudo systemctl enable jenkins

4. 访问Jenkins: 在浏览器中访问http://<your-server-ip>:8080,按照提示完成初始设置。

2. Kubernetes集群

确保你已经有一个运行中的Kubernetes集群。如果没有,可以使用以下方法之一来创建一个Kubernetes集群:

使用Minikube(本地开发)

1. 安装Minikube

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/

2. 启动Minikube

minikube start

使用Kubernetes服务提供商(如GKE、EKS、AKS)

根据你选择的云服务提供商的文档创建和配置Kubernetes集群。

3. 安装和配置kubectl

确保Jenkins节点上已经安装并配置好kubectl,可以访问Kubernetes集群。

安装kubectl

1. 下载kubectl

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

2. 安装kubectl

chmod +x kubectl
sudo mv kubectl /usr/local/bin/

3. 配置kubectl: 将你的Kubernetes集群的kubeconfig文件复制到Jenkins节点,并设置KUBECONFIG环境变量指向该文件。

export KUBECONFIG=/path/to/your/kubeconfig

4. Jenkins插件

确保在Jenkins中安装了以下插件:

安装插件

1. Kubernetes插件:用于与Kubernetes集群进行交互。

2. Pipeline插件:用于创建和管理Jenkins流水线。

在Jenkins管理界面中,导航到Manage Jenkins -> Manage Plugins,在Available选项卡中搜索并安装上述插件。

5. 配置Jenkins凭据

在Jenkins中配置Docker Hub和Kubernetes的凭据。

配置Docker Hub凭据

1. 导航到凭据管理Manage Jenkins -> Manage Credentials -> (global) -> Add Credentials

2. 添加Docker Hub凭据

? 类型Username with password

? 用户名:你的Docker Hub用户名

? 密码:你的Docker Hub密码

? IDdockerhub-credentials-id(在Pipeline脚本中引用)

配置Kubeconfig凭据

1. 导航到凭据管理Manage Jenkins -> Manage Credentials -> (global) -> Add Credentials

2. 添加Kubeconfig凭据

? 类型Secret file

? 文件:上传你的Kubeconfig文件

? IDkubeconfig-credentials-id(在Pipeline脚本中引用)


以上是前提,现在正式开始


步骤

1. 创建Kubernetes配置文件

首先,创建一个Kubernetes配置文件(nginx-deployment.yaml),定义Nginx Deployment和Service:

# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: NodePort

2. 配置Jenkins Pipeline

在Jenkins中创建一个新的Pipeline项目,并添加以下Pipeline脚本:

pipeline {
    agent any

    environment {
        KUBECONFIG = credentials('kubeconfig-credentials-id') // Jenkins中配置的Kubeconfig凭据ID
    }

    stages {
        stage('Checkout') {
            steps {
                // 从版本控制系统中检出代码
                git 'https://github.com/your-repo/nginx-deployment.git'
            }
        }

        stage('Build Docker Image') {
            steps {
                script {
                    docker.withRegistry('https://registry.hub.docker.com', 'dockerhub-credentials-id') {
                        def app = docker.build("your-dockerhub-username/nginx:latest")
                        app.push()
                    }
                }
            }
        }

        stage('Deploy to Kubernetes') {
            steps {
                script {
                    // 使用kubectl应用Kubernetes配置文件
                    sh 'kubectl apply -f nginx-deployment.yaml'
                }
            }
        }
    }

    post {
        success {
            echo 'Deployment successful!'
        }
        failure {
            echo 'Deployment failed.'
        }
    }
}

解释

1. 环境变量

? KUBECONFIG:使用Jenkins凭据存储中的Kubeconfig文件,确保Jenkins可以访问Kubernetes集群。

2. Stages

? Checkout:从Git仓库检出包含Kubernetes配置文件的代码。

? Build Docker Image:使用Docker构建Nginx镜像,并推送到Docker Hub(或其他容器镜像仓库)。

? Deploy to Kubernetes:使用kubectl apply命令将Nginx Deployment和Service部署到Kubernetes集群。

3. Post Actions

? Success:部署成功后输出成功消息。

? Failure:部署失败后输出失败消息。

运行Pipeline

1. 配置凭据:在Jenkins中配置Docker Hub和Kubernetes的凭据。

2. 创建Pipeline项目:在Jenkins中创建一个新的Pipeline项目,并将上述脚本粘贴到Pipeline配置中。

3. 运行Pipeline:保存配置并运行Pipeline。

总结

通过这个Jenkins Pipeline脚本,你可以实现自动化构建和部署Nginx应用到Kubernetes集群的流程。这个流程可以根据实际需求进行扩展和定制,例如添加更多的构建步骤、测试步骤、通知等。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接