我使用kubeadm Kubernetes 1.9 RBAC集群进行了自举,并开始在基于jenkins / jenkins:lts的POD Jenkins内部。我想尝试https://github.com/jenkinsci/kubernetes- plugin。我已经基于https://gist.github.com/lachie83/17c1fff4eb58cf75c5fb11a4957a64d2中的提案创建了一个服务帐户
> kubectl -n dev-infra create sa jenkins > kubectl create clusterrolebinding jenkins --clusterrole cluster-admin --serviceaccount=dev-infra:jenkins > kubectl -n dev-infra get sa jenkins -o yaml apiVersion: v1 kind: ServiceAccount metadata: creationTimestamp: 2018-02-16T12:06:26Z name: jenkins namespace: dev-infra resourceVersion: "1295580" selfLink: /api/v1/namespaces/dev-infra/serviceaccounts/jenkins uid: d040041c-1311-11e8-a4f8-005056039a14 secrets: - name: jenkins-token-vmt79 > kubectl -n dev-infra get secret jenkins-token-vmt79 -o yaml apiVersion: v1 data: ca.crt: LS0tL...0tLQo= namespace: ZGV2LWluZnJh token: ZXlK...tdVE= kind: Secret metadata: annotations: kubernetes.io/service-account.name: jenkins kubernetes.io/service-account.uid: d040041c-1311-11e8-a4f8-005056039a14 creationTimestamp: 2018-02-16T12:06:26Z name: jenkins-token-vmt79 namespace: dev-infra resourceVersion: "1295579" selfLink: /api/v1/namespaces/dev-infra/secrets/jenkins-token-vmt79 uid: d041fa6c-1311-11e8-a4f8-005056039a14 type: kubernetes.io/service-account-token
之后,我去管理Jenkins->配置系统->云-> Kubernetes,并将Kubernetes URL设置为我也在kubectl KUBECONFIG服务器中使用的集群API:url:port。
当我点击测试连接时,我得到“错误测试连接https:// url:port:执行失败:GET在:https:// url:port / api / v1 / namespaces / dev-infra / pods。消息:禁止!配置服务帐户无权访问。服务帐户可能已被吊销。pod禁止:用户“ system:serviceaccount:dev- infra:default”无法在名称空间“ dev-infra”中列出pod。
我不想给dev-infra:default用户一个集群管理员角色,并且我想使用我创建的jenkins sa。我不明白如何在Jenkins中配置凭据。当我在https://github.com/jenkinsci/kubernetes- plugin/blob/master/configuration.png上添加凭据时,我得到了
<select class="setting-input dropdownList"> <option value="0">Username with password</option> <option value="1">Docker Host Certificate Authentication</option> <option value="2">Kubernetes Service Account</option> <option value="3">OpenShift OAuth token</option> <option value="4">OpenShift Username and Password</option> <option value="5">SSH Username with private key</option> <option value="6">Secret file</option> <option value="7">Secret text</option> <option value="8">Certificate</option></select>
我找不到一个清晰的示例,说明如何配置Jenkins Kubernetes Cloud连接器以使用我的Jenkins对服务帐户jenkins进行身份验证。您能否帮助我找到分步指南-我需要哪种凭证?
问候,帕维尔
最佳做法是使用serviceaccount您创建的Jenkins主Pod来启动它,而不是在Jenkins中创建凭据
serviceaccount
参见示例yaml