С DKP можно использовать аутентификацию при доступе к Kubernetes API. В этом случае, пользователь в веб-интерфейсе kubeconfig DKP может сгенерировать конфигурацию для kubectl
, для безопасного доступа к Kubernetes API через балансировщик трафика (Ingress-контроллер).
Чтобы настроить доступ, выполните следующие шаги:
-
Включите публикацию Kubernetes API. Для этого установите параметр
publishAPI.enabled: true
в настройках модуляuser-authn
(ModuleConfiguser-authn
) или с помощью веб-интерфейса администратора Deckhouse.Пример конфигурации модуля:
spec: enabled: true version: 2 settings: publishAPI: enabled: true
-
Откройте веб-интерфейс kubeconfig. Веб-интерфейс для генерации kubeconfig в DKP активируется автоматически после включения параметра
publishAPI
в модулеuser-authn
. Этот веб-интерфейс доступен по URL:https://kubeconfig.<publicDomainTemplate>
Например, если
publicDomainTemplate
:%s.kube.my
, то URL будетhttps://kubeconfig.kube.my
. -
Сгенерируйте конфигурацию
kubectl
. После авторизации в интерфейсе kubeconfig пользователь получит набор команд для настройкиkubectl
. Эти команды можно скопировать и вставить в консоль. Аутентификация будет производиться по OIDC-токену, выданному Dex. При поддержке провайдером функции продления сессии конфигурация будет включатьrefresh token
, что позволит продлевать доступ без повторной аутентификации. -
Настройте несколько точек подключения к API. В конфигурации модуля
user-authn
можно задать несколько точек подключения (kube-apiserver) с описанием и CA-сертификатами для каждой. Это может понадобиться, если кластер доступен через разные сети — например, VPN или публичный IP:settings: kubeconfigGenerator: - id: direct masterURI: https://159.89.5.247:6443 description: "Direct access to kubernetes API"
Как работает защита доступа к Kubernetes API
В Deckhouse Kubernetes Platform вы можете безопасно опубликовать Kubernetes API наружу с помощью Ingress-контроллера, сохранив контроль над доступом. Публикация API и настройка аутентификации осуществляется через модуль user-authn
. Вы можете настроить:
- список доверенных IP-адресов или сетей, которым разрешён доступ;
- список групп пользователей, которые имеют право аутентификации;
- Ingress-контроллер, через который будет осуществляться доступ.
Для настройки:
- Включите публикацию API, как в примере выше.
- Настройте ограничения доступа. В конфигурации модуля можно указать:
- список сетевых адресов, которым разрешён доступ (
allowedSourceRanges
); - список групп пользователей, которым разрешено подключение к Kubernetes API (
allowedUserGroups
); - выбор Ingress-контроллера, через который будет работать публикация (
ingressClass
).
- список сетевых адресов, которым разрешён доступ (
- Используйте веб-интерфейс kubeconfig. Пользователи смогут получить безопасный доступ к API через kubeconfig, сгенерированный в веб-интерфейсе (
https://kubeconfig.<publicDomainTemplate>
). Этот kubeconfig будет содержать OIDC-токен и настройки подключения через Ingress.
Что будет настроено автоматически при включении публикации API:
- Deckhouse сам настроит необходимые аргументы для kube-apiserver;
- будет сгенерирован сертификат CA и добавлен в kubeconfig;
- будет настроен вход через Dex с поддержкой OIDC.