# Jenkins K8S 项目详解

## 概述
Jenkins 是一个流行的持续集成和持续交付工具,Kubernetes(K8S)是一个开源的容器管理平台。结合两者可以实现自动化部署和管理容器化应用程序。本文将详细介绍如何利用 Jenkins 和 K8S 实现项目部署和管理。

## 步骤

| 步骤 | 操作 |
|------|------|
| 1 | 准备 Jenkins 和 K8S 环境 |
| 2 | 创建 Jenkins 任务 |
| 3 | 编写 Jenkinsfile |
| 4 | 部署到 K8S |

### 步骤一:准备 Jenkins 和 K8S 环境
确保已经安装好 Jenkins 和 K8S 环境,并且具有对应的权限。

### 步骤二:创建 Jenkins 任务
在 Jenkins 中创建一个新的任务,选择自由风格项目。配置 GitHub 仓库等相关信息。

### 步骤三:编写 Jenkinsfile
Jenkinsfile 是一个文本文件,用来定义 Jenkins Pipeline。在 Jenkins 任务中,“Pipeline script” 选择 “Pipeline script from SCM”,并选择 GitHub 仓库和 Jenkinsfile 文件。

``` groovy
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'docker build -t myapp .'
}
}
stage('Push to Docker Hub') {
steps {
withCredentials([usernamePassword(credentialsId: 'docker-hub-creds', usernameVariable: 'DOCKER_USERNAME', passwordVariable: 'DOCKER_PASSWORD')]) {
sh 'docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD'
sh 'docker tag myapp username/myapp:latest'
sh 'docker push username/myapp:latest'
}
}
}
stage('Deploy to K8S') {
steps {
withKubeConfig([credentialsId: 'k8s-creds', serverUrl: 'https://kubernetes-cluster-url']) {
sh 'kubectl apply -f k8s-deployment.yml'
}
}
}
}
}
```

### 步骤四:部署到 K8S
编写 K8S 部署文件,例如 k8s-deployment.yml,并将其包含在 Jenkinsfile 中。

``` yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
labels:
app: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: username/myapp:latest
ports:
- containerPort: 8080
```

最后,保存 Jenkinsfile 和 K8S 部署文件到仓库中,并触发 Jenkins 任务执行,按照 Pipeline 中定义的步骤进行构建、推送镜像和部署到 K8S 中。这样就实现了一个完整的 Jenkins 和 K8S 项目部署流程。

通过以上步骤,希望你已经了解了如何使用 Jenkins 和 K8S 实现项目详解。祝你工作顺利!