美文网首页DevOps
Jenkins构建镜像并发布更新至Kubernetes

Jenkins构建镜像并发布更新至Kubernetes

作者: InGramViking | 来源:发表于2020-09-03 11:09 被阅读0次

    本次没有使用Pipeline,通过页面配置实现,可根据页面配置转换为Pipeline;

    最终实现效果:

    1、配置gitlab webhook监听merge请求,触发jenkins job,同时jenkins job仅对master分支做响应(其他分支的merge请求自动忽略);
    2、编译代码并生成Docker images;
    3、推送images到阿里云容器仓库
    4、触发阿里云k8s集群中的pod更新

    所用插件及版本

    Kubernetes Continuous Deploy Plugin 2.3.0
    Jackson 2 API Plugin 2.11.2(非官方版,有bug,见文章最后解Bug部分)
    docker-build-step 2.5

    Webhook的配置

    Jenkins部分

    配置Build when a change is pushed to GitLab 部分


    生成token

    Gitlab部分

    项目-> 设置 -> webhook


    配置webhook

    编译代码并生成Docker images

    给k8s yaml文件配置环境变量

    这里定义的环境变量可以传送到yaml文件中引用;
    
    配置环境变量

    编译代码

    这部分按照自己的需求结合Dockerfile做即可

    生成镜像

    生成镜像

    推送Image到阿里云容器仓库

    推送镜像

    触发阿里云k8s集群更新

    添加集群凭据

    可以使用Enter directly直接将config内容放进去


    添加凭据

    配置k8s的更新

    配置更新

    ==========================

    页面配置结束,下面解插件bug

    Kubernetes Continuous Deploy Plugin

    Bug问题讨论:
    https://stackoverflow.com/questions/62688901/class-not-found-io-kubernetes-client-openapi-models-v1service

    任务台输出:
    exception=Class not found: io.kubernetes.client.openapi.models.V1Service


    Console Log

    解决方案:

    拉取github代码:
    git clone https://github.com/jenkinsci/jackson2-api-plugin
    git checkout jackson2-api-2.11.2
    删除
    https://github.com/jenkinsci/jackson2-api-plugin/commit/cbbdf36843505efd5d2d7cd4769018e4cc09f450
    这次提交的内容

    在maven 的setting.xml里面添加:

     <mirror>
          <mirrorOf>m.g.o-public</mirrorOf>
          <url>http://repo.jenkins-ci.org/public</url>
          <id>jenkins-ci.org</id>
          <name>Jenkins CI Public</name>
     </mirror>
    

    执行mvn clean verify 打包
    将编译好的hpi文件上传更新即可

    Jenkins中文社区首发

    相关文章

      网友评论

        本文标题:Jenkins构建镜像并发布更新至Kubernetes

        本文链接:https://www.haomeiwen.com/subject/lbynsktx.html