Создание общедоступного пользователя для чтения в Кубернетесе с использованием RBAC для Grafana - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь подготовить пользователя, чтобы Grafana могла отслеживать ресурсы моего кластера.Я следовал гиду Битнами здесь .И реализовал шаги, как Ansible playbook нашел здесь .

Здесь - это ClusterRole, который использует пользователь, а здесь - как он связанпользователю.

Однако, несмотря на это, Графана выдает эту ошибку, когда я настраиваю его сгенерированными сертификатами.

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

$> kubectl --context=grafana-prometheus-scraper get pods -n grafana
error: You must be logged in to the server (Unauthorized)

Есть идеи?

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Вот так должны выглядеть ваши ServiceAccount, ClusterRole и ClusterRoleBinding .

apiVersion: v1
kind: ServiceAccount
metadata:
  name: grafana-prometheus-scraper

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: grafana-prometheus-scraper
rules:
  - apiGroups: [""]
    resources:
      - configmaps
      - secrets
      - nodes
      - pods
      - services
      - resourcequotas
      - replicationcontrollers
      - limitranges
      - persistentvolumeclaims
      - persistentvolumes
      - namespaces
      - endpoints
    verbs: ["list", "watch"]
  - apiGroups: ["extensions"]
    resources:
      - daemonsets
      - deployments
      - replicasets
      - ingresses
    verbs: ["list", "watch"]
  - apiGroups: ["apps"]
    resources:
      - daemonsets
      - deployments
      - replicasets
      - statefulsets
    verbs: ["list", "watch"]
  - apiGroups: ["batch"]
    resources:
      - cronjobs
      - jobs
    verbs: ["list", "watch"]
  - apiGroups: ["autoscaling"]
    resources:
      - horizontalpodautoscalers
    verbs: ["list", "watch"]
  - apiGroups: ["policy"]
    resources:
      - poddisruptionbudgets
    verbs: ["list", "watch"]
  - apiGroups: ["certificates.k8s.io"]
    resources:
      - certificatesigningrequests
    verbs: ["list", "watch"]
  - apiGroups: ["storage.k8s.io"]
    resources:
      - storageclasses
    verbs: ["list", "watch"]
  - apiGroups: ["autoscaling.k8s.io"]
    resources:
      - verticalpodautoscalers
    verbs: ["list", "watch"]

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: grafana-prometheus-scraper
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: grafana-prometheus-scraper
subjects:
- kind: ServiceAccount
  name: grafana-prometheus-scraper

Вам не нужно указывать пространство имен при создании ролей кластера, так как это относится квесь кластер.Если вы хотите ограничить доступ к определенному пространству имен, вам следует использовать Role и RoleBinding.

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

0 голосов
/ 26 сентября 2019

В kubernetes отсутствует пользовательский объект.создайте учетную запись службы и обновите ее в clusterrolebinding.

subjects:
    - kind: User
      name: grafana-prometheus-scraper
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...