如何将Java应用DevOps全流程(CICD)闭环-k8s版实现?

摘要:🚀 一、目标:形成 DevOps 闭环 从代码提交到系统上线自动完成以下步骤: 代码构建(MavenGradle 打包 Jar 或 War) 制作镜像(Dockerfile 构建) 推送镜像(推送至镜像仓库
🚀 一、目标:形成 DevOps 闭环 从代码提交到系统上线自动完成以下步骤: 代码构建(Maven/Gradle 打包 Jar 或 War) 制作镜像(Dockerfile 构建) 推送镜像(推送至镜像仓库,如 Harbor、阿里云、DockerHub) 部署容器(运行于 Docker 或 K8s) 自动触发流水线(Jenkins/GitLab CI) 自动回滚/监控/日志(闭环管理) 🏗️ 二、项目打包阶段 以 Spring Boot 工程为例,假设项目结构如下: my-app/ ├── src/ ├── pom.xml └── Dockerfile 使用 Maven 打包 mvn clean package -DskipTests 打包后生成: target/my-app-1.0.0.jar 🐳 三、制作 Docker 镜像 1️⃣ Dockerfile 示例 FROM openjdk:17-jdk-slim WORKDIR /app COPY target/my-app-1.0.0.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar"] 2️⃣ 构建镜像 docker build -t my-app:1.0.0 . 3️⃣ 测试镜像 docker run -d -p 8080:8080 my-app:1.0.0 🏢 四、镜像仓库(推送) 例如推送到阿里云镜像仓库: docker tag my-app:1.0.0 registry.cn-hangzhou.aliyuncs.com/myrepo/my-app:1.0.0 docker login registry.cn-hangzhou.aliyuncs.com docker push registry.cn-hangzhou.aliyuncs.com/myrepo/my-app:1.0.0 ⚙️ 五、容器部署阶段 方案 1:使用 Docker Compose docker-compose.yml version: '3' services: my-app: image: registry.cn-hangzhou.aliyuncs.com/myrepo/my-app:1.0.0 container_name: my-app ports: - "8080:8080" restart: always docker-compose up -d 方案 2:使用 Kubernetes deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 2 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: my-app image: registry.cn-hangzhou.aliyuncs.com/myrepo/my-app:1.0.0 ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: my-app-service spec: type: NodePort selector: app: my-app ports: - port: 8080 targetPort: 8080 nodePort: 30080 部署: kubectl apply -f deployment.yaml 🔄 六、Jenkins 流水线自动化 在 Jenkinsfile 中定义从构建到部署的自动化脚本。
阅读全文