kubernetes: Сделать доступ разработчику на определённый неймспейс

Сначала скопируем себе сертификаты с кластера, которые нам потребуются для подписи сертификатов разработчика. Нужны файлы ca.crt и ca.key из /etc/kubernetes.

Далее генерация сертификатов для разработчика. Например:

openssl genrsa -out user.key 2048
openssl genrsa -out developer.key 2048
openssl req -new -key developer.key -out developer.csr -subj "/CN=developer/O=company"

И подпись сертификатов.

openssl x509 -req -in developer.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out developer.crt

Меняем контекст и провыеряем, что можем подключиться к кластеру.

kubectl config set-credentials developer --client-certificate=developer.crt --client-key=developer.key --embed-certs=true
kubectl config use-context developer

Можно отредактировать ~/.kube/config, убрав свои данные данные, чтобы передать файл коллеге.

Далее нужно добавить роли на нужный namespace. В моём примере указано hostinfo, замените.

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: developer
  namespace: hostinfo
  labels:
    kubernetes.io/bootstrapping: rbac-defaults
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: 'true'
rules:
  - verbs:
      - '*'
    apiGroups:
      - '*'
    resources:
      - '*'

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: developer
  namespace: hostinfo
  annotations:
subjects:
  - kind: User
    apiGroup: rbac.authorization.k8s.io
    name: developer
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: developer

#kubernetes #rbac


Статьи дополняются по мере получения новой информации. Если есть уточнение – напишите в комментариях в Mastodon.

Алексей Убоженко DevOps Linux Engineer Mastodon Contacts