默认服务帐户不使用jenkins上的kubernetes插件

默认服务帐户不使用jenkins上的kubernetes插件,jenkins,kubernetes,kubernetes-helm,Jenkins,Kubernetes,Kubernetes Helm,我已经配置了Kubernetes插件来启动从机。 但是,我在访问控制方面遇到了问题。 主设备尝试旋转新吊舱(从设备)时出错 设置代理Kubernetes Pod模板时遇到意外异常 io.fabric8.kubernetes.client.KubernetesClientException:执行失败:POST地址:。信息:禁止!配置的服务帐户没有访问权限。服务帐户可能已被吊销。。 位于io.fabric8.kubernetes.client.dsl.base.OperationSupport.re

我已经配置了Kubernetes插件来启动从机。 但是,我在访问控制方面遇到了问题。 主设备尝试旋转新吊舱(从设备)时出错

设置代理Kubernetes Pod模板时遇到意外异常 io.fabric8.kubernetes.client.KubernetesClientException:执行失败:POST地址:。信息:禁止!配置的服务帐户没有访问权限。服务帐户可能已被吊销。。 位于io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:315) 位于io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:266) 位于io.fabric8.kubernetes.client.dsl.base.OperationSupport.HandlerResponse(OperationSupport.java:237) 位于io.fabric8.kubernetes.client.dsl.base.OperationSupport.HandlerResponse(OperationSupport.java:230) 位于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.jenkins.plugins.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.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 运行(Thread.java:745)

我已检查了位于
/var/run/secrets/kubernetes.io/servicecomport/token
的默认服务帐户的访问权限,并尝试在
https://kubernetes.default/api/v1/namespaces/npd-test/pods.
使用令牌,它就会工作

不确定插件为什么抱怨服务帐户没有访问权限


我已经尝试过用无凭证和Kubernetes服务帐户凭证(无法指定帐户)配置Kubernetes插件,但两者都不起作用

奇怪的是,服务帐户通常为您工作,但在詹金斯不工作。在我的设置中,我必须添加一个
RoleBinding
来为服务帐户提供
edit
角色(我的名称空间实际上是
jenkins
,但我在这里更改了它以匹配您的名称空间)

在我这么做之后,我像这样配置了Kubernetes云插件,它适合我

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

下面创建一个要从命名空间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

您是否启用了RBAC?您可以使用
kubectl集群信息转储| grep授权模式
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