kubesphere 的 流水线maven 模板缺少 kubectl解决

最开始解决方案是maven 的pod 里通过 在线下载kubectl 命令

 发现每次构建后端服务,都去官网下载kubectl 命令相当慢。

既然用到maven 模板,遂将master 节点的kubectl 命令通过hostpath挂载到maven的 pod模板里面。问题解决。

 agent模板cm配置【jenkins-casc-config】在【kubesphere-devops-system】的namespace下,在节点data.jenkins_user.yml下添加自定义的agent模板配置,kubesphere已内置了一些模板(base、nodejs、maven、go、python)等,根据需要选择是否使用。每个模板需要有“jnlp”jenkins的agent来实现与jenkins通信,,jenkins-cacs-config 该配置文件详细如下,在maven模板里面增加kubectl 的 hostpath挂载。

kind: ConfigMap
apiVersion: v1
metadata:
  name: jenkins-casc-config
  namespace: kubesphere-devops-system
  labels:
    app.kubernetes.io/managed-by: Helm
  annotations:
    devops.kubesphere.io/jenkins-config-customized: 'true'
    devops.kubesphere.io/jenkins-config-formula: custom
    meta.helm.sh/release-name: devops
    meta.helm.sh/release-namespace: kubesphere-devops-system
data:
  jenkins.yaml: |
    jenkins:
      mode: EXCLUSIVE
      numExecutors: 0
      scmCheckoutRetryCount: 2
      disableRememberMe: true

      clouds:
        - kubernetes:
            name: "kubernetes"
            serverUrl: "https://kubernetes.default"
            skipTlsVerify: true
            namespace: "kubesphere-devops-worker"
            credentialsId: "k8s-service-account"
            jenkinsUrl: "http://devops-jenkins.kubesphere-devops-system:80"
            jenkinsTunnel: "devops-jenkins-agent.kubesphere-devops-system:50000"
            containerCapStr: "10"
            connectTimeout: "60"
            readTimeout: "60"
            maxRequestsPerHostStr: "32"
            templates:
              - name: "base"
                namespace: "kubesphere-devops-worker"
                label: "base"
                nodeUsageMode: "NORMAL"
                idleMinutes: 0
                containers:
                - name: "base"
                  image: "kubesphere/builder-base:v3.2.2"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "base"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

              - name: "nodejs"
                namespace: "kubesphere-devops-worker"
                label: "nodejs"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "nodejs"
                  image: "ccr.ccs.tencentyun.com/huanghuanhui/node:16.17.0-alpine"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_nodejs_yarn_cache"
                    mountPath: "/root/.yarn"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_nodejs_npm_cache"
                    mountPath: "/root/.npm"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "nodejs"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

              - name: "maven"
                namespace: "kubesphere-devops-worker"
                label: "maven"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "maven"
                  image: "kubesphere/builder-maven:v3.2.0"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/usr/local/bin/kubectl"
                    mountPath: "/usr/local/bin/kubectl"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_maven_cache"
                    mountPath: "/root/.m2"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "maven"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                      volumeMounts:
                      - name: config-volume
                        mountPath: /opt/apache-maven-3.5.3/conf/settings.xml
                        subPath: settings.xml
                    volumes:
                      - name: config-volume
                        configMap:
                          name: ks-devops-agent
                          items:
                          - key: MavenSetting
                            path: settings.xml
                    securityContext:
                      fsGroup: 1000

              - name: "mavenjdk11"
                label: "jdk11 maven java"
                inheritFrom: "maven"
                containers:
                - name: "maven"
                  image: "kubesphere/builder-maven:v3.2.1-jdk11"

              - name: "go"
                namespace: "kubesphere-devops-worker"
                label: "go"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.0"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_go_cache"
                    mountPath: "/home/jenkins/go/pkg"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "go"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

              - name: "go16"
                label: "go16"
                inheritFrom: "go"
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.2-1.16"
              - name: "go17"
                label: "go17"
                inheritFrom: "go"
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.2-1.17"
              - name: "go18"
                label: "go18"
                inheritFrom: "go"
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.2-1.18"

              - name: "python"
                namespace: "kubesphere-devops-worker"
                label: "python"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "python"
                  image: "kubesphere/builder-python:v3.2.0"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_python_pip_cache"
                    mountPath: "/root/.cache/pip"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_python_pipenv_cache"
                    mountPath: "/root/.local/share/virtualenvs"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "python"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

      securityRealm:
        ldap:
          configurations:
          - displayNameAttributeName: "uid"
            mailAddressAttributeName: "mail"
            inhibitInferRootDN: false
            managerDN: "cn=admin,dc=kubesphere,dc=io"
            managerPasswordSecret: "admin"
            rootDN: "dc=kubesphere,dc=io"
            userSearchBase: "ou=Users"
            userSearch: "(&(objectClass=inetOrgPerson)(|(uid={0})(mail={0})))"
            groupSearchBase: "ou=Groups"
            groupSearchFilter: "(&(objectClass=posixGroup)(cn={0}))"
            server: "ldap://openldap.kubesphere-system.svc:389"
          disableMailAddressResolver: false
          disableRolePrefixing: true


    unclassified:
      location:
        url: "http://jenkins.devops.kubesphere.local"
      kubespheretokenauthglobalconfiguration:
        cacheConfiguration:
          size: 20
          ttl: 300
        enabled: true
        server: "http://devops-apiserver.kubesphere-devops-system:9090/"
      eventDispatcher:
        receiver: "http://devops-apiserver.kubesphere-devops-system:9090/v1alpha3/webhooks/jenkins"
      gitLabServers:
        servers:
        - name: "https://gitlab.com"
          serverUrl: "https://gitlab.com"
  jenkins_user.yaml: |
    jenkins:
      mode: EXCLUSIVE
      numExecutors: 0
      scmCheckoutRetryCount: 2
      disableRememberMe: true

      clouds:
        - kubernetes:
            name: "kubernetes"
            serverUrl: "https://kubernetes.default"
            skipTlsVerify: true
            namespace: "kubesphere-devops-worker"
            credentialsId: "k8s-service-account"
            jenkinsUrl: "http://devops-jenkins.kubesphere-devops-system:80"
            jenkinsTunnel: "devops-jenkins-agent.kubesphere-devops-system:50000"
            containerCapStr: "10"
            connectTimeout: "60"
            readTimeout: "60"
            maxRequestsPerHostStr: "32"
            templates:
              - name: "base"
                namespace: "kubesphere-devops-worker"
                label: "base"
                nodeUsageMode: "NORMAL"
                idleMinutes: 0
                containers:
                - name: "base"
                  image: "kubesphere/builder-base:v3.2.2"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "base"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

              - name: "nodejs"
                namespace: "kubesphere-devops-worker"
                label: "nodejs"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "nodejs"
                  image: "ccr.ccs.tencentyun.com/huanghuanhui/node:16.17.0-alpine"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_nodejs_yarn_cache"
                    mountPath: "/root/.yarn"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_nodejs_npm_cache"
                    mountPath: "/root/.npm"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "nodejs"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

              - name: "maven"
                namespace: "kubesphere-devops-worker"
                label: "maven"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "maven"
                  image: "kubesphere/builder-maven:v3.2.0"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/usr/local/bin/kubectl"
                    mountPath: "/usr/local/bin/kubectl"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_maven_cache"
                    mountPath: "/root/.m2"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "maven"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                      volumeMounts:
                      - name: config-volume
                        mountPath: /opt/apache-maven-3.5.3/conf/settings.xml
                        subPath: settings.xml
                    volumes:
                      - name: config-volume
                        configMap:
                          name: ks-devops-agent
                          items:
                          - key: MavenSetting
                            path: settings.xml
                    securityContext:
                      fsGroup: 1000

              - name: "mavenjdk11"
                label: "jdk11 maven java"
                inheritFrom: "maven"
                containers:
                - name: "maven"
                  image: "kubesphere/builder-maven:v3.2.1-jdk11"

              - name: "go"
                namespace: "kubesphere-devops-worker"
                label: "go"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.0"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_go_cache"
                    mountPath: "/home/jenkins/go/pkg"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "go"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

              - name: "go16"
                label: "go16"
                inheritFrom: "go"
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.2-1.16"
              - name: "go17"
                label: "go17"
                inheritFrom: "go"
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.2-1.17"
              - name: "go18"
                label: "go18"
                inheritFrom: "go"
                containers:
                - name: "go"
                  image: "kubesphere/builder-go:v3.2.2-1.18"

              - name: "python"
                namespace: "kubesphere-devops-worker"
                label: "python"
                nodeUsageMode: "EXCLUSIVE"
                idleMinutes: 0
                containers:
                - name: "python"
                  image: "kubesphere/builder-python:v3.2.0"
                  command: "cat"
                  args: ""
                  ttyEnabled: true
                  privileged: false
                  resourceRequestCpu: "100m"
                  resourceLimitCpu: "4000m"
                  resourceRequestMemory: "100Mi"
                  resourceLimitMemory: "8192Mi"
                - name: "jnlp"
                  image: "jenkins/inbound-agent:4.10-2"
                  args: "^${computer.jnlpmac} ^${computer.name}"
                  resourceRequestCpu: "50m"
                  resourceLimitCpu: "500m"
                  resourceRequestMemory: "400Mi"
                  resourceLimitMemory: "1536Mi"
                workspaceVolume:
                  emptyDirWorkspaceVolume:
                    memory: false
                volumes:
                - hostPathVolume:
                    hostPath: "/var/run/docker.sock"
                    mountPath: "/var/run/docker.sock"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_python_pip_cache"
                    mountPath: "/root/.cache/pip"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_python_pipenv_cache"
                    mountPath: "/root/.local/share/virtualenvs"
                - hostPathVolume:
                    hostPath: "/var/data/jenkins_sonar_cache"
                    mountPath: "/root/.sonar/cache"
                yaml: |
                  spec:
                    affinity:
                      nodeAffinity:
                        preferredDuringSchedulingIgnoredDuringExecution:
                        - weight: 1
                          preference:
                            matchExpressions:
                            - key: node-role.kubernetes.io/worker
                              operator: In
                              values:
                              - ci
                    tolerations:
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "NoSchedule"
                    - key: "node.kubernetes.io/ci"
                      operator: "Exists"
                      effect: "PreferNoSchedule"
                    containers:
                    - name: "python"
                      resources:
                        requests:
                          ephemeral-storage: "1Gi"
                        limits:
                          ephemeral-storage: "10Gi"
                    securityContext:
                      fsGroup: 1000

      securityRealm:
        ldap:
          configurations:
          - displayNameAttributeName: "uid"
            mailAddressAttributeName: "mail"
            inhibitInferRootDN: false
            managerDN: "cn=admin,dc=kubesphere,dc=io"
            managerPasswordSecret: "admin"
            rootDN: "dc=kubesphere,dc=io"
            userSearchBase: "ou=Users"
            userSearch: "(&(objectClass=inetOrgPerson)(|(uid={0})(mail={0})))"
            groupSearchBase: "ou=Groups"
            groupSearchFilter: "(&(objectClass=posixGroup)(cn={0}))"
            server: "ldap://openldap.kubesphere-system.svc:389"
          disableMailAddressResolver: false
          disableRolePrefixing: true


    unclassified:
      location:
        url: "http://jenkins.devops.kubesphere.local"
      kubespheretokenauthglobalconfiguration:
        cacheConfiguration:
          size: 20
          ttl: 300
        enabled: true
        server: "http://devops-apiserver.kubesphere-devops-system:9090/"
      eventDispatcher:
        receiver: "http://devops-apiserver.kubesphere-devops-system:9090/v1alpha3/webhooks/jenkins"
      gitLabServers:
        servers:
        - name: "https://gitlab.com"
          serverUrl: "https://gitlab.com"

  maven的cm配置【ks-devops-agent】在【kubesphere-devops-worker的namespace】下,该如下配置

 或者整个使用能正常使用的setting.xml文件做cm

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于Kubesphere DevOps流水线的搭建,可以按照以下步骤进行操作: 1. 安装Kubesphere:首先,您需要安装Kubesphere平台。您可以按照官方文档提供的步骤进行安装,包括下载Kubesphere二进制文件、配置数据库和NFS存储等。 2. 创建项目和命名空间:在Kubesphere中,项目是一组相关应用的集合,而命名空间则用于隔离不同的环境。您可以使用Kubesphere的Web界面或者kubectl命令来创建项目和命名空间。 3. 配置代码仓库:将您的应用代码存储在一个代码仓库中,可以使用GitLab、GitHub等。您需要在Kubesphere中配置与代码仓库的连接,以便能够获取代码并进行持续集成、持续交付。 4. 创建流水线:使用Kubesphere的Pipeline功能来创建流水线。您可以在流水线中定义不同的阶段和任务,例如构建、测试、部署等。可以使用常见的构建工具(如Maven、Gradle)和测试工具(如JUnit、Selenium)。 5. 配置触发器:通过配置触发器,您可以定义流水线的触发条件。例如,当代码仓库中有新的提交时,自动触发流水线的执行。 6. 运行流水线:一旦流水线配置完成,您可以手动运行流水线,也可以通过触发器自动触发流水线的执行。 7. 监控和日志:Kubesphere提供了监控和日志功能,您可以查看流水线的执行情况、构建日志以及应用部署状态等。 以上是一个大致的流程,具体的步骤可能会因实际情况而有所不同。希望对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值