Как добиться функциональности RBAC в службе Azure kubernetes? - PullRequest
1 голос
/ 05 марта 2019

На данный момент я создал кластер kubernetes и включил RBAC в веб-интерфейсе при создании кластера. Внутри кластера я создал пространство имен с именем development1 . Теперь я хотел предоставить доступ к пользователь на некоторых ресурсах kubernetes, которые принадлежат пространству имен development1. Для этого я создал роль и добавил пользователь для определенного пространства имен.

Вот мои файлы конфигурации:

deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: hellonode
  namespace: development1
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: samplenodeapp
    spec:
      containers:
      - name: hellonode
        image: hellonode.azurecr.io/aks-deployments:latest
        ports:
        - containerPort: 3000
      imagePullSecrets:
      - name: webinar

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: hellonode
  namespace: development1
  labels:
    app: samplenodeapp
spec:
  type: LoadBalancer
  ports:
  - port: 3000
  selector:
    app: samplenodeapp

role.yaml

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: development1
  name: developer-role
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["deployments", "replicasets"]
  verbs: ["*"]
rules:
- apiGroups: [""]
  resources: ["pods","pods/log","pods/exec"]
  verbs: ["get", "list", "watch", "create", "update", "patch"]

rolebinding.yaml

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: developer-rb
  namespace: development1
subjects:
- kind: User
  name: < Azure_AD_user_object-id>
  apiGroup: "rbac.authorization.k8s.io"
roleRef:
  kind: Role
  name: developer-role
  apiGroup: "rbac.authorization.k8s.io"

Теперь я пытаюсь составить список модулей в deveploment1 (пространство имен), используя команду kubectl get pods -n development --user=<Azure _AD_username>. Вместо того, чтобы вывести список модулей, получим ошибку типа

ошибка: вы должны войти на сервер (не авторизован).

Здесь я сомневаюсь, есть ли необходимость создавать контекст для этого пространства имен? и я должен добавить роль в deploy.yaml и service.yaml?

Я не знаю чего-то, что я пропустил. Кто-нибудь может мне подсказать, как я могу дать разрешения пользователю на ресурсы kubernetes в Azure?

1 Ответ

2 голосов
/ 05 марта 2019

вам необходимо войти в Azure Cli как пользователь Azure AD и получить конфигурацию k8s от имени этого пользователя (az aks get-credentials -n xxx -g xxx) и запустить kubectl get po -n development. Я не уверен, что означает параметр --user, но я ожидаю, что он попытается использовать этого пользователя из вашего kubeconfig (которого у вас нет). Я не могу найти никаких ссылок на разрешение имперсонализации пользователя с помощью kubectl.

Не забудьте очистить ваш kubeconfig перед рукой.

...