как я могу создать учетную запись службы для всех пространств имен в кластере Kubernetes? - PullRequest
0 голосов
/ 06 августа 2020

Итак, у меня есть пространства имен

ns1, ns2, ns3 и ns4.

У меня есть сервисная учетная запись sa1 в ns1. Я развертываю модули на ns2, ns4, которые используют sa1. когда я смотрю журналы, он сообщает мне, что sa1 в ns2 не может быть найден.

error:

Ошибка создания: pods "web-test-2-795f5fd489-" запрещены : ошибка при поиске учетной записи службы ns2 / sa: serviceaccount "sa" не найдена

Есть ли способ сделать учетные записи служб общими для кластера? Или я могу создать несколько учетных записей служб с одним и тем же секретом? в разных пространствах имен?

Ответы [ 2 ]

1 голос
/ 06 августа 2020

вы можете использовать это

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kubernetes-enforce
rules:
- apiGroups: ["apps"]
  resources: ["deployments","pods","daemonsets"]
  verbs: ["get", "list", "watch", "patch"]
- apiGroups: ["*"]
  resources: ["namespaces"]
  verbs: ["get", "list", "watch"]
    
--- 
apiVersion: v1
kind: ServiceAccount

metadata:
  name: kubernetes-enforce
  namespace: kube-system
---

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kubernetes-enforce-logging
  namespace: cattle-logging
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubernetes-enforce
subjects:
- kind: ServiceAccount
  name: kubernetes-enforce
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kubernetes-enforce-prome
  namespace: cattle-prometheus
roleRef: 
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubernetes-enforce
subjects:
- kind: ServiceAccount
  name: kubernetes-enforce
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kubernetes-enforce-system
  namespace: cattle-system
roleRef: 
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubernetes-enforce
subjects:
- kind: ServiceAccount
  name: kubernetes-enforce
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kubernetes-enforce-default
  namespace: default
roleRef: 
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kubernetes-enforce
subjects:
- kind: ServiceAccount
  name: kubernetes-enforce
  namespace: kube-system



0 голосов
/ 06 августа 2020

Нет, нет способа создать учетную запись службы для всего кластера, поскольку учетная запись службы является ресурсами с областью имен. Это следует принципу наименьших привилегий.

Вы можете создать учетную запись службы с тем же именем (например, default) во всех необходимых пространствах имен, в которых вы развертываете модуль, довольно легко, применив yaml учетной записи службы для этих namespaces.

Затем вы можете развернуть модуль с помощью yaml. Таким образом, вам не нужно ничего менять в модуле, потому что имя учетной записи службы такое же, хотя у нее будет другой секрет, и это не имеет значения, если вы определили RBA C через роль и привязку ролей для всех учетных записей службы. в этих пространствах имен.

Хотя учетные записи служб не могут быть привязаны к кластеру, вы можете иметь роль кластера и привязку кластера, которые относятся к кластеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...