Дженкинс мастер не может раскрутить рабов на k8s из-за неправильной маркировки - PullRequest
0 голосов
/ 17 января 2020

Я развернул экземпляр helm с базой Jenkins на k8s.

Я также установил (передав их в виде списка в файле values.yaml около 300 плагинов (если это имеет значение).

Когда я попытался раскрутить агент, все пошло не так.

Это не удалось из-за следующей ошибки:

.default/api/v1/namespaces/jenkins/pods?labelSelector=jenkins%2Fjenkins-myenv-jenkins-slave%3Dtrue%2Cjenkins%2Flabel%3Djenkins-myenv-jenkins-slave_. Message: unable to parse requirement: invalid label value: "jenkins-myenv-jenkins-slave_": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?'). Received status: Status(apiVersion=v1, code=400, details=null, kind=Status, message=unable to parse requirement: invalid label value: "jenkins-myenv-jenkins-slave_": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?'), metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=BadRequest, status=Failure, additionalProperties={}).

Я действительно Интересно, как это закончилось запросом модуля с меткой

jenkins-myenv-jenkins-slave_

, поскольку нигде в моем файле values.yaml нет ничего, заканчивающегося на _.

Вот первые строки моя agent конфигурация в values.yaml

agent:
  enabled: true
  image: "jenkins/jnlp-slave"
  tag: "3.27-1"
  customJenkinsLabels: []
  # name of the secret to be used for image pulling
  imagePullSecretName:
  componentName: "jenkins-slave"
  privileged: false

Более того, соответствующее поле в разделе конфигурации, кажется, не имеет подчеркивания в конце

enter image description here

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Проверьте, есть ли у вас "" (пробел) символ на и на вашем ярлыке

0 голосов
/ 17 января 2020

Я бы рекомендовал не определять агентов вручную в jenkins, вам следует только настроить адрес хоста kubernetes

С помощью декларативного конвейера вы можете определить агент kubernetes следующим образом:

   agent {
       kubernetes {
            label "${kubernetesUUID}"
            defaultContainer 'docker'
            yaml readTrusted('kube.yaml')
            idleMinutes idleminutes
        }
    }

Файл kube.yml будет храниться в той же папке, что и Jenkinsfile

apiVersion: v1
kind: Pod
spec:
    containers:
        - name: jnlp
          image: jenkinsci/jnlp-slave:latest
          args:
              - ${computer.jnlpmac} ${computer.name}
          tty: true
        - name: docker
          image: myimage:version
          tty: true
          command:
              - cat
          volumeMounts:
            - mountPath: /dev/random
              name: host-urandom
    volumes:
    - name: host-urandom
      hostPath:
        path: /dev/urandom

. Вы можете добавить столько контейнеров, сколько захотите в spe c, однако jnlp должен остаться. также вы должны исправить версию и не допустить последнюю

, вы также можете передать строку с вашим spe c непосредственно на шаг yaml вместо использования внешнего файла.

вы можете использовать step idleMinutes, если вы хотите, чтобы ваш агент запускался через несколько минут и не вызывал нового агента каждый раз, когда вы строите

...