Какие знаешь абстракции в Kubernetes, которые разделяют доступ к функционалу

«Какие знаешь абстракции в Kubernetes, которые разделяют доступ к функционалу» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Kubernetes есть несколько ключевых абстракций для управления доступом:

  1. Namespaces — логическое разделение кластера на изолированные среды (dev, prod и т.д.).
    Пример: kubectl create namespace test

  2. RBAC (Role-Based Access Control):

    • Roles/ClusterRoles — определяют набор разрешений (например, доступ к Pods).
    • RoleBindings/ClusterRoleBindings — связывают роли с пользователями/группами.

    Пример Role:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      namespace: default
      name: pod-reader
    rules:
    - apiGroups: [""]
      resources: ["pods"]
      verbs: ["get", "watch", "list"]
  1. ServiceAccounts — аккаунты для процессов внутри кластера (например, для Pod).
    Пример: kubectl create serviceaccount my-app

  2. NetworkPolicies — ограничивают сетевой трафик между Pods.

  3. ResourceQuotas — ограничивают потребление ресурсов (CPU, RAM) в Namespace.

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