关于kubernetes:自动化集成Pipeline整合DockerK8S


同系列举荐

  • Jenkins管理工具详解
  • Pipeline流水语法详解
  • Docker容器入门简介
  • Pipeline整合Docker容器
  • Kubernetes容器引擎详解
  • 微服务组件二次浅封装

前言:该系列文章,围绕继续集成:Jenkins+Docker+K8S相干组件,实现自动化治理源码编译、打包、镜像构建、部署等操作;本篇文章次要形容流水线集成K8S用法

一、背景形容

分布式服务的部署是一个简单的流程,当容器利用存在几十甚至上百的时候,用手动的形式部署显然难度过高,借助Kubernetes容器编排引擎,能够疾速的实现主动部署,扩大,降级等一系列简单步骤。

二、流程设计

在之前的篇幅中,曾经形容了流水线的形式进行源码编译Jar包,并构建成Docker镜像的过程,接下来在K8S平台上部署Docker容器,这样整个自动化的流程就根本欠缺了:

外围步骤:

  • 创立yaml文件类型资源管理脚本;
  • 执行已部署资源的删除;
  • 依据脚本创立新的资源服务;

该流程连接在Docker镜像构建胜利之后,能够先在本地pull镜像,也能够间接从近程仓库实时获取镜像。

三、实现过程

1、插件装置

Jenkins集成K8S的插件:Kubernetes plugin

2、部署脚本

对于K8S部署docker镜像的脚本语法,在K8S根底模块中有详细描述,创立脚本文件的语法在docker流水线模块中同样实用:

    environment {
        k8s_directory = 'k8s-deploy'
    }

        // K8S部署Docker镜像
        stage('K8Sdeploy') {
            steps {
                sh '''
                rm -rf ${k8s_directory}
                mkdir -p ${k8s_directory}
                cd ${k8s_directory}
cat>k8s-app.yaml<<EOF
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: k8s-app-deployment
  labels:
    app: k8s-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: k8s-app
  template:
    metadata:
      labels:
        app: k8s-app
    spec:
      containers:
      - name: k8s-app
        image: cicada-image/doc-line-app:latest
        imagePullPolicy: Never
        ports: 
        - containerPort: 8079
---
apiVersion: v1
kind: Service
metadata:
  name: k8s-app-service
  labels:
    app: k8s-app
spec:
  type: NodePort
  ports: 
    - port: 8080
      targetPort: 8079
  selector:
    app: k8s-app
EOF
                cat k8s-app.yaml
                echo "create k8s-app.yaml success"

                echo "base Yaml file deploy k8s resource"
                ls
                
                sleep 10
                set +e
                kubectl delete -f k8s-app.yaml
                
                sleep 10
                set -e
                kubectl create -f k8s-app.yaml
                '''
            }
        }
    }

脚本阐明:

  • 进入k8s的工作目录;
  • 创立k8s-app.yaml部署的脚本文件;
  • 申明Pod的正本数为:2;
  • 依据脚本尝试一次资源删除;
  • 依据脚本创立资源;
  • set +e-e为shell语法,管制脚本是否中断;

资源创立胜利后,查看k8s的控制台界面,各个组件是否都部署胜利,之后通过拜访服务中API接口判断环境是否通顺:

3、流程总结

在整个流程中,波及上面几个外围阶段:

  • 源码治理,代码仓库获取,hook模式配置;
  • 本地编译打包,生成利用的Jar包;
  • Docker将Jar包构建成镜像文件,上传仓库;
  • K8S将Docker镜像部署在集群服务上;

这里简化很多不必要的流程,在理论的利用中,远比案例中的演示更简单,能够依据各个业务的须要,参考流水线组件的性能文档,一直引入更好的形式去优化流程,最终会造成一个继续交付的主动流程,并且不会对代码层面带来革新老本。

四、源代码地址

GitEE·地址
https://gitee.com/cicadasmile/butte-auto-parent
Wiki·地址
https://gitee.com/cicadasmile/butte-java-note

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据