首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >授权Jenkins在其自己的K8S命名空间中列出pods

授权Jenkins在其自己的K8S命名空间中列出pods
EN

Stack Overflow用户
提问于 2018-09-16 01:31:54
回答 1查看 727关注 0票数 0

因此,我正在使用Helm在我的K8S集群中部署一个Jenkins实例。

下面是我正在遵循的流程:

1)创建名为jenkins-pipeline的命名空间。

代码语言:javascript
复制
kubectl get ns jenkins-pipeline -o yaml
apiVersion: v1
kind: Namespace
metadata:
  creationTimestamp: 2018-09-15T16:58:33Z
  name: jenkins-pipeline
  resourceVersion: "25596"
  selfLink: /api/v1/namespaces/jenkins-pipeline
  uid: 9449b9e7-b908-11e8-a915-080027bfdbf9
spec:
  finalizers:
  - kubernetes
status:
  phase: Active

2)在命名空间jenkins-pipeline内部创建名为jenkins-admin的ServiceAccount。

代码语言:javascript
复制
kubectl get serviceaccounts -n jenkins-pipeline jenkins-admin -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: 2018-09-15T17:02:25Z
  name: jenkins-admin
  namespace: jenkins-pipeline
  resourceVersion: "25886"
  selfLink: /api/v1/namespaces/jenkins-pipeline/serviceaccounts/jenkins-admin
  uid: 1e921d43-b909-11e8-a915-080027bfdbf9
secrets:
- name: jenkins-admin-token-bhvdd

3)创建ClusterRoleBinding linking my ServiceAccount jenkins-admin to ClusterRole cluster-admin。(我知道这不是给我的部署分配那么多权限的最佳实践,但我现在只是在本地测试)。

代码语言:javascript
复制
kubectl get clusterrolebindings.rbac.authorization.k8s.io jenkins-cluster-role-binding -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: 2018-09-15T16:58:33Z
  name: jenkins-cluster-role-binding
  resourceVersion: "25597"
  selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/jenkins-cluster-role-binding
  uid: 944a4c18-b908-11e8-a915-080027bfdbf9
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: jenkins-admin
  namespace: jenkins-pipeline

4)在命名空间jenkins-pipeline中部署我的pod。

5)使用命名空间jenkins-pipeline中的服务公开部署。

Jenkins出现得非常好,但当我尝试测试Kuberenetes连接时,它无法说明:

代码语言:javascript
复制
Error testing connection https://192.168.99.100:8443: Failure executing: GET at: https://192.168.99.100:8443/api/v1/namespaces/jenkins-pipeline/pods. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods is forbidden: User "system:serviceaccount:jenkins-pipeline:default" cannot list pods in the namespace "jenkins-pipeline".

UI的一个片段如下所示:

据我所知,我已经对此进行了配置。我在命名空间中创建了serviceaccount,并为该serviceaccount赋予了SUPER权限。但是它不能在自己的命名空间中列出pod。任何帮助都将不胜感激。

我试图在Jenkins UI中更改名称空间,但我有一种感觉,即使我没有声明它,它也会默认为jenkins-pipeline

EN

回答 1

Stack Overflow用户

发布于 2018-09-16 06:13:12

多亏了David Maze的暗示,我把它弄明白了。我遗漏了一个关键部分,那就是让我的部署使用新创建的ServiceAccount。

需要将其添加到spec.template.spec下的部署文件中:

代码语言:javascript
复制
  spec:
    containers:
    - env:
      - name: JAVA_OPTS
        value: -Djenkins.install.runSetupWizard=false
      image: jeunii/my-jenkins-base:1.0
      imagePullPolicy: IfNotPresent
    .
    .
    serviceAccount: jenkins-admin
    .
    .
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52347206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档