Kubernetes проверяет права доступа к сервису - PullRequest
0 голосов
/ 26 февраля 2019

При развертывании службы через Helm Chart установка не удалась, так как учетная запись службы tiller не смогла создать ресурс ServiceMonitor.

Примечание:

  • ServiceMonitor - это CRD, определяемый оператором Prometheus для автоматического получения метрик запущенных контейнеров в модулях.
  • Helm Tiller установлен в одном пространстве имен, а RBAC настроен с использованием Role и RoleBinding.

Я хотел проверить разрешения для tiller serviceaccount.
kubectl имеет команду auth can-i, подобные запросы (см. Ниже) всегда возвращают no.

  • kubectl auth can-i list deployment --as=tiller
  • kubectl auth can-i list deployment --as=staging:tiller

Как правильно проверить разрешения для учетной записи службы?
Как включить учетную запись tiller для создания ServiceMonitorресурсы?

1 Ответ

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

После попытки потерянных вещей и поиска в Google по всей вселенной, я наконец нашел этот блог о защите вашего кластера с помощью RBAC и PSP , где приведен пример проверки доступа к служебным учетным записям.

Правильная команда:
kubectl auth can-i <verb> <resource> --as=system:serviceaccount:<namespace>:<serviceaccountname> [-n <namespace>]

Чтобы проверить, имеет ли учетная запись tiller право на создание объекта ServiceMonitor:
kubectl auth can-i create servicemonitor --as=system:serviceaccount:staging:tiller -n staging

Примечание: чтобы решить мою проблему с учетной записью tiller, мне пришлось добавить права на ресурс servicemonitors в monitoring.coreos.com apiGroup.После этого изменения вышеприведенная команда вернула yes (наконец-то), и установка нашей таблицы рулевого управления прошла успешно.

Обновлено tiller-manager роль:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: tiller-manager
  labels:
    org: ipos
    app: tiller
  annotations:
    description: "Role to give Tiller appropriate access in namespace"
    ref: "https://docs.helm.sh/using_helm/#example-deploy-tiller-in-a-namespace-restricted-to-deploying-resources-only-in-that-namespace"
rules:
- apiGroups: ["", "batch", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
- apiGroups:
    - monitoring.coreos.com
  resources:
    - servicemonitors
  verbs:
    - '*'
...