无法使用kubernetes-Jenkins插件配置kubernetes URL

时间:2018-11-26 17:20:15

标签: amazon-web-services jenkins kubernetes

是kubernetes的新手,并尝试使用Jenkins kubernetes插件。我在AWS中创建了一个名为jenkins-pl的K8s集群和命名空间。以下是我的Jenkins部署和服务yaml文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
        - name: jenkins
          image: contactsai123/my-jenkins-image:1.0
          env:
            - name: JAVA_OPTS
              value: -Djenkins.install.runSetupWizard=false
          ports:
            - name: http-port
              containerPort: 8080
            - name: jnlp-port
              containerPort: 50000
          volumeMounts:
            - name: jenkins-home
              mountPath: /var/jenkins_home
      volumes:
        - name: jenkins-home
          emptyDir: {}

这是我的jenkins-service.yaml文件

apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: LoadBalancer
  ports:
    - port: 8080
      targetPort: 8080
  selector:
    app: jenkins

能够成功启动Jenkins,不确定我应该在kubernetes URL中提供什么。

我输入了“ https://kubernetes.default.svc.cluster.local”并收到错误消息:

Error testing connection https://kubernetes.default.svc.cluster.local: Failure executing: GET at: https://kubernetes.default.svc.cluster.local/api/v1/namespaces/jenkins-pl/pods. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods is forbidden: User "system:serviceaccount:jenkins-pl:default" cannot list pods in the namespace "jenkins-pl".

我执行了命令:

 $ kubectl cluster-info | grep master

并获得以下输出:

 https://api-selegrid-k8s-loca-m23tbb-1891259367.us-west-2.elb.amazonaws.com

我在Kubernetes URL中提供了以上内容,为此我得到了与以前类似的错误。

不确定如何前进吗?

1 个答案:

答案 0 :(得分:3)

您的群集已启用RBAC。您必须授予部署必要的RBAC权限才能列出Pod。

将您的部署考虑为需要在集群中执行某些任务的用户。因此,您必须提供必要的权限。

首先,您必须创建一个角色。可能是ClusterRole or Role。 该角色定义在该角色下可以执行的操作。一个ClusterRole授予在集群作用域中执行某些任务的权限,而Role仅在特定的命名空间中授予权限。

然后,您必须创建一个Service Account。将服务帐户视为用户。是为了申请而不是一个人。

最后,您必须通过RoleBinding or ClusterRoleBinding将Role或ClusterRole绑定到服务帐户。这实际上表明了哪个用户/服务可以访问在哪个角色下定义的权限。

检查此不错的帖子以了解RBAC:Configuring permissions in Kubernetes with RBAC

此视频还可以帮助您了解基本知识:Role Based Access Control (RBAC) with Kubernetes