kubernetes-jenkins CI/CD平台(十八)

软件环境:Jenkins + Kubernetes + Git + Maven + Harbor

发布流程设计

工作流程:手动/自动构建-> Jenkins 调度K8S API->动态生成Jenkins Slave pod ->Slave pod 拉取Git 代码/编译/打包镜像->推送到镜像仓库Harbor ->Slave 工作完成,Pod 自动销毁->部署到测试或生产Kubernetes平台。

环境准备:

准备K8S、Ingress和PV自动供给(NFS),
部署harbor:https://github.com/goharbor/harbor/releases
构建jenkins-slave镜像:https://github.com/jenkinsci/docker-jnlp-slave
将构建好的jenkins-slave镜像推送至harbor仓库
在kubernetes中部署jenkins:https://github.com/jenkinsci/kubernetes-plugin/tree/fc40c869edfd9e3904a9a56b0f80c5a25e988fa1/src/main/kubernetes
部署git,创建用户,jenkins保存git凭据
Kubernetes插件:Jenkins在Kubernetes集群中运行动态代理。插件介绍:https://github.com/jenkinsci/kubernetes-plugin

构建流水线

Pipeline插件
  • Jenkins Pipeline是一套插件,支持在Jenkins中实现集成和持续交付管道;
  • Pipeline通过特定语法对简单到复杂的传输管道进行建模;
    • 声明式:遵循与Groovy相同语法。pipeline { }
    • 脚本式:支持Groovy大部分功能,也是非常表达和灵活的工具。node { }
  • Jenkins Pipeline的定义被写入一个文本文件,称为Jenkinsfile。

Jenkins安装Git和Pipeline插件 ExtendedChoiceParameter
Jenkins保存Harbor访问凭据

镜像命名

根据Jenkins构建编号作为镜像标签:

${registry}/${project}/${app_name}:${BUILD_NUMBER}

还可以根据Git Tag作为镜像标签,这需要与开发、测试、运维达成一个约定。

jenkins创建任务

持续部署

Kubernetes Continuous Deploy插件:用于将资源配置部署到Kubernetes。

插件介绍:https://plugins.jenkins.io/kubernetes-cd

Jenkins保存K8S凭据

[root@k8s-master ~]# cat .kube/config

K8S创建连接Harbor认证凭据

kubectl create secret docker-registry registry-pull-secret --docker-server=192.168.0.221 --docker-username=admin --docker-password=Harbor12345 --docker-email=admin@admin.com

原文地址:https://www.cnblogs.com/yuezhimi/p/11083362.html