Как мне обновить локальный сервер API Kubernetes, чтобы включить OIDC с Dex?

У нас есть локальное развертывание Kubernetes в нашем центре обработки данных. Я только что закончил развертывание модулей для Dex, настроил подключение к нашему серверу LDAP, чтобы разрешить аутентификацию на основе LDAP через Dex, провел тесты и смог получить токен подключения OpenID для аутентификации.

Теперь я хотел бы изменить параметры запуска нашего локального сервера API k8s, чтобы включить OIDC и указать его на контейнер Dex.

Как включить OIDC для команды запуска сервера API без простоя нашего кластера k8s? Читал этот документ https://kubernetes.io/docs/reference/access-authn-authz/authentication/, но на сайте просто написано Включить необходимые флаги без шагов

Спасибо!


person jrlonan    schedule 15.07.2020    source источник


Ответы (2)


Несколько месяцев назад я установил Dex + Active Directory Integration в кластер, установленный kubeadmn.

Предположим, что Dex теперь запущен и доступен через https://dex.example.com.

В этом случае,..

Включение ODIC на уровне сервера API состоит из 3 шагов:

Эти шаги необходимо выполнить на каждом из ваших главных узлов Kubernetes.

1- SSH к вашему главному узлу.

$ ssh root@master-ip

2- Измените конфигурацию Kubernetes API.

Добавьте параметры OIDC и соответствующим образом измените URL-адрес эмитента.

$ sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml
...
    command:
    - /hyperkube
    - apiserver
    - --advertise-address=x.x.x.x
... 

    - --oidc-issuer-url=https://dex.example.com # <-- ???? Please focus here
    - --oidc-client-id=oidc-auth-client # <-- ???? Please focus here
    - --oidc-username-claim=email # <-- ???? Please focus here
    - --oidc-groups-claim=groups # <-- ???? Please focus here
...

3- Kubernetes API перезапустится сам по себе.

Я также рекомендую ознакомиться с полным руководством вроде этого тут.

person Abdennour TOUMI    schedule 15.07.2020
comment
решение полностью совместимо с kubeadm установкой. - person Abdennour TOUMI; 15.07.2020
comment
Большое спасибо! Это то, что я искал! - person jrlonan; 15.07.2020

Флаги OIDC предназначены для Kubernetes API Server. Вы не упомянули, как вы установили Kubernetes в локальной среде. В идеале у вас должно быть несколько главных узлов, на которых работает LoadBalancer.

Таким образом, вы должны отключить трафик к одному главному узлу от балансировщика нагрузки и войти в этот главный узел, отредактировать манифест сервера api в /etc/kubernetes/manifests и добавить флаги OIDC. После того, как вы измените манифест api server pod, будет автоматически перезапущен.

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

person Arghya Sadhu    schedule 15.07.2020
comment
Спасибо! Мы развернули нашу плоскость управления через kubeadm, запустив kubeadm init --config=/etc/kubernetes/config.yaml. У нас нет балансировщиков нагрузки перед нашими главными узлами, только циклический перебор DNS для трех главных узлов, но, вероятно, хороший момент, чтобы иметь перед ними LB - person jrlonan; 15.07.2020