是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中提供了以上内容,为此我得到了与以前类似的错误。
不确定如何前进吗?
答案 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