01 Jenkins打包Docker镜像的配置

Jenkins打包Docker镜像的配置

Jenkins配置kubernetes插件及DinD

前面使用Helm在k8s中安装了Jenkins。使用podTemplate在k8s动态创建Agent。

这里预先创建几个podTemplate,用于动态创建agent。(关注下下面additionalAgents的配置)

[root@jingmin-kube-archlinux k8s]# helm install jenkins -f ./jenkins/my-override-values.yaml ./jenkins
[root@jingmin-kube-archlinux k8s]# cat jenkins/my-override-values.yaml 
controller
#...
agent:
  enabled: true
  additionalContainers: []
  disableDefaultAgent: false
  podTemplates: {}

additionalAgents:
  dind:
    podName: dind-agent
    customJenkinsLabels: dind-agent
    image: docker.io/warrior7089/dind-client-jenkins-agent
    tag: latest
    envVars:
     - name: DOCKER_HOST
       value: "tcp://localhost:2375"
    alwaysPullImage: true
    yamlTemplate:  |- 
     spec: 
         containers:
           - name: dind-daemon 
             #image: docker:20.10-dind
             image: docker:dind
             args: ["--mtu=1350"]
             securityContext: 
               privileged: true
             env: 
               - name: DOCKER_TLS_VERIFY
                 value: ""
               - name: DOCKER_TLS_CERTDIR
                 value: ""
#...

这里说明一下:

  • controller对应的是Jenkins管理台,GUI界面访问的就是这里。agent是实际执行job的节点。controller用于编辑和管理agent, 创建和管理jobs,…。

  • 添加了个additionalAgents (podTemplate),继承于默认的agent配置。这里dind-agent代表的一类agent,可以提供docker环境(DinD,Docker in Docker,不会污染宿主docker环境)。当Jenkinsfile中指定了这里的agent标签dind-agent时,k8s会动态创建出相应的agent(pod)来执行job。

Jenkins pipeline中使用Jenkinsfile编写任务,可以通过agent 标签指定用到的agent。helm安装jenkins,默认安装了kubernetes插件,可以在需要的时候,在k8s中动态创建agent执行job。

image-20230916153038666
image-20230916153148402

可以看到,GUI界面,dashboard->manage jenkins->cloud->kubernetes->configure下,已经出现了helm中设置的几个additionalAgent (这里显示为Pod Template)

如果要使用这里的专用的agent,需要在Jenkinsfile中指定agent

pipeline {
    agent {
        kubernetes{
        inheritFrom 'dind-agent'
        }
    }
}

当然也可以同时使用多个专用agent,只需在inhertFrom字段后面指定多个专用agent即可

参考:https://plugins.jenkins.io/kubernetes/#plugin-content-inheritance

参考: https://www.jenkins.io/doc/pipeline/steps/kubernetes/


评论

发表回复

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