Учетная запись службы по умолчанию не работает с плагином kubernetes на jenkins

Я настроил плагин Kubernetes для раскрутки ведомых устройств. Однако у меня проблемы с контролем доступа. Получение ошибки, когда мастер пытается запустить новые поды (подчиненные)

Возникла непредвиденная исключительная ситуация при подготовке шаблона модуля Kubernetes Pod io.fabric8.kubernetes.client.KubernetesClientException: сбой при выполнении: POST по адресу: https://kubernetes.default/api/v1/namespaces/npd-test/pods. Сообщение: Запрещено! Настроенная учетная запись службы не имеет доступа. Учетная запись службы могла быть отозвана .. на io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure (OperationSupport.java:315) в io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode. java: 266) в io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse (OperationSupport.java:237) в io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse (OperationSupport). в io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleCreate (OperationSupport.java:208) в io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleCreate (BaseOperation.java:643) в io.fabric8 .kubernetes.client.dsl.base.BaseOperation.create (BaseOperation.java:300) на org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud $ ProvisioningCallback.call (KubernetesCloud.java:636) на org.csanchez.lug.csanchez.lug.csanchez.lugins. .kubernetes.KubernetesCloud $ ProvisioningCallback.call (KubernetesCloud.java:581). в jenkins.util.ContextResettingExecutorService $ 2.call (ContextResettingExecutorService.java:46) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPool.jorkecutor.ThreadPool. в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run (Thread.java:745)

Я проверил доступ к учетной записи службы по умолчанию, расположенной в /var/run/secrets/kubernetes.io/serviceaccount/token, и попытался создать модуль в https://kubernetes.default/api/v1/namespaces/npd-test/pods., используя токен, и он работает.

Не уверен, почему плагин жалуется на то, что у учетной записи службы нет доступа.

Я попытался настроить плагин Kubernetes с учетными данными None и учетными данными учетной записи службы Kubernetes (нет возможности указать учетную запись), но ни один из них не работает.


person Punit Agrawal    schedule 17.05.2017    source источник
comment
У вас включен RBAC?   -  person Lukas Eichler    schedule 18.05.2017
comment
вы можете проверить это с помощью kubectl cluster-info dump | grep authorization-mode   -  person Hafiz    schedule 29.05.2018


Ответы (2)


Странно, что учетная запись службы работала у вас нормально, но не работала в Jenkins. В моей настройке мне пришлось добавить RoleBinding, чтобы предоставить учетной записи службы роль edit (мое пространство имен на самом деле jenkins, но я изменил его здесь, чтобы он соответствовал вашему пространству имен).

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: jenkins
  namespace: npd-test
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
- kind: ServiceAccount
  name: default
  namespace: npd-test

После этого я настроил плагин Kubernetes Cloud вот так, и он у меня работает.

Kubernetes URL: https://kubernetes.default.svc.cluster.local
Kubernetes server certificate key:
Disable https certificate check: off
Kubernetes Namespace: npd-test
Credentials: - none -
person coreypobrien    schedule 23.05.2017

Следующее создает учетную запись службы для сборки из пространства имен jenkins в пространство имен build. Я пропустил правила, но если они вам нужны, я тоже могу их добавить.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: jenkins

---

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: jenkins
  namespace: build

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: jenkins
  namespace: build
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins
  namespace: jenkins
person AR1    schedule 16.09.2019