Spring Cloud Kubernetes: что такое разрешения для чтения кластеров? - PullRequest
0 голосов
/ 12 февраля 2019

Согласно документации Spring Cloud Kubernetes , для обнаружения служб / модулей в дистрибутивах Kubernetes с поддержкой RBAC:

необходимо убедиться, что модуль работает с spring-Облако-Kubernetes имеет доступ к API Kubernetes.Для любых учетных записей служб, которые вы назначаете для развертывания / модуля, вам необходимо убедиться, что они имеют правильные роли.Например, вы можете добавить cluster-reader разрешений к учетной записи службы по умолчанию в зависимости от проекта, в котором вы находитесь.

Что такое cluster-reader разрешений для обнаружения служб / модулей?

Ошибка, которую я получаю:

io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://x.x.x.x/api/v1/namespaces/jx-staging/services. 
Message: Forbidden!Configured service account doesn't have access. 
Service account may have been revoked. services is forbidden: 
User "system:serviceaccount:jx-staging:default" cannot list services in the namespace "jx-staging"

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Чтение endpoints и services, по-видимому, является минимальным для Spring Cloud Kubernetes для обнаружения пакетов и сервисов.

Пример добавляет разрешения для default учетной записи службы в default пространстве имен.

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-read-role
rules:
- apiGroups:
  - ""
  resources:
  - endpoints
  - pods
  - services
  - configmaps
  verbs:
  - get
  - list
  - watch

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cluster-read-rolebinding
subjects:
- kind: ServiceAccount
  name: default
  namespace: default
roleRef:
  kind: ClusterRole
  name: cluster-read-role
  apiGroup: rbac.authorization.k8s.io
0 голосов
/ 12 февраля 2019

Как правило, Kubernetes делит роли на два типа:

  • Роль: это относится к пространству имен, которому они предоставлены
  • ClusterRole: Применяется ко всему кластеру, что означает, что онприменяется ко всем пространствам имен

Итак, что означают документы Spring Cloud Kubernetes, так это то, что для того, чтобы иметь возможность правильно читать службы обнаружения / модули во всех пространствах имен, ServiceAccount, который будет связан с приложением, должениметь ClusterRole, что позволяет ему читать Pods, Services и т. д.

Эта часть документации Kubernetes (которая также содержит отличные примеры) является обязательной для подготовкиобщее понимание Kubernetes RBAC.

...