Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-69733

agent kubernetes yaml expects one document, but I'd like to specify more than one

XMLWordPrintable

    • Icon: New Feature New Feature
    • Resolution: Not A Defect
    • Icon: Minor Minor
    • kubernetes-plugin
    • Kubernetes 3600.v144b_cd192ca_a_
      Kubernetes Client API Plugin 5.12.2-193.v26a_6078f65a_9
      Kubernetes Credentials Plugin 0.9.0

      Because the kubernetes plugin has a work around to specify a runAsUser when using multiple containers, this has led to an inability to copy files as needed (due to permission denied).  To get around this I have been mounting volumes.  This works if I add a secret or configmap to the Jenkins namespace manually.  But, if I want this to be part of a pipeline I would need to include these someone in the pipeline.

      Like so:
      pipeline {
        agent {
          kubernetes {
            yaml '''

              apiVersion: v1
              kind: ConfigMap
              metadata:
                name: values
              data:
                ldap.conf: |
                  TLS_CACERT      /etc/ssl/certs/ca-certificates.crt
              —
              apiVersion: v1
              kind: Pod
              spec:
                securityContext:
                  runAsUser: 1001
                volumes:
                - name: ca-bundle
                  secret:
                    secretName: ca-bundle
                    items:
                    - key: ca-bundle.crt
                      path: ca-certificates.crt
                - name: ldap.conf
                  configMap:
                    name: values
                    items:
                    - key: ldap.conf
                      path: ldap.conf

                containers:
                - name: openldap
                  image: bitnami/openldap
                  tty: true
                  securityContext:
                    privileged: true
                  volumeMounts:
                  - name: ca-bundle
                    mountPath: /etc/ssl/certs
                    readOnly: true
                  - name: values
                    mountPath: /etc/openldap/ldap.conf
                    readOnly: true

      If there is some other way that I can add in additional objects such as a secret or configmap as part of the pipeline please let me know, I am still fairly new to working with Jenkins.

            Unassigned Unassigned
            lknite leland knight
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: