我有一个庞大的管道,包含具有多个权限级别的不同开发人员组。(用于使用 Jenkins Kubernetes 插件。)
例如,QA团队和开发人员团队在 kubernetes 集群中拥有不同的服务帐户。
因此,我需要与 kubernetes 集群创建一些连接,但每个连接我都会使用命名空间 name 更改集群的上下文。
我想在 kubernetes context 中使用多个命名空间。 这是我自己的 kubernetes 上下文文件。
- context:
cluster: minikube
namespace: user3
user: minikube
如何通过 kubernetes api 调用或在 yaml 文件中处理此问题? 这是我的示例服务帐户 yaml 文件。
apiVersion: v1
kind: ServiceAccount
metadata:
name: dev
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: dev
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get","list","watch"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get"]
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: dev
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: dev
subjects:
- kind: ServiceAccount
name: dev
最佳答案
如果您希望一个 jenkins 使用不同的服务帐户与 kubernetes API 进行通信,您需要在配置中创建多个 Jenkins“云”,每个云都有不同的凭据。然后在您的管道中设置“云”选项以选择正确的
关于jenkins - 具有多个命名空间的 Kubernetes 集群上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52030831/