Как да

Удостоверете потребителите на таблото за управление на Kubernetes с Active Directory

Удостоверете потребителите на таблото за управление на Kubernetes с Active Directory

Таблото за управление Kubernetes е уеб базиран потребителски интерфейс, който позволява на потребителите лесно да взаимодействат с клъстера kubernetes. Той позволява на потребителите да управляват, наблюдават и отстраняват проблеми, както и клъстера. Вече разгледахме как да разположим таблото за управление в този урок. В това ръководство ще проучим интеграцията на таблото за управление на kubernetes в Active Directory, за да улесним управлението на потребителите и паролите.

Kubernetes поддържа две категории потребители:

За това ще използваме проект, наречен Dex. Dex е доставчик на OpenID Connect, направен от CoreOS. Той се грижи за превода между токени Kubernetes и потребители на Active Directory.

Изисквания за настройка:

Стъпка 1: Разположете Dex в клъстер Kubernetes

Първо ще трябва да създадем пространство от имена, да създадем акаунт за услуга за dex. След това ще конфигурираме RBAC правила за акаунта на услугата dex, преди да го разгърнем. Това е, за да се гарантира, че приложението има подходящи разрешения.

  1. Създайте пространство на имена на dex.yaml файл.
$ vim dex-namespace.yaml apiVersion: v1 вид: Метаданни на пространството от имена: name: auth-system 

2. Създайте пространството от имена за Dex.

$ kubectl прилага -f dex-namespace.ямъл

3. Създайте dex-rbac.yaml файл.

$ vim dex-rbac.yaml apiVersion: v1 вид: Servicedaccount метаданни: име: dex пространство от имена: auth-system --- apiVersion: rbac.упълномощаване.k8s.io / v1beta1 вид: Метаданни на ClusterRole: name: dex пространство от имена: auth-system rules: - apiGroups: ["dex.кореос.com "] ресурси: [" * "] глаголи: [" * "] - apiGroups: [" apiextensions.k8s.io "] ресурси: [" customresourcedefinitions "] глаголи: [" създаване "] --- apiVersion: rbac.упълномощаване.k8s.io / v1beta1 kind: ClusterRoleBinding metadata: name: dex namespace: auth-system roleRef: apiGroup: rbac.упълномощаване.k8s.io вид: Име на клъстерна роля: dex теми: - вид: ServiceAccount име: dex пространство от имена: auth-system

4. Създайте разрешенията за Dex.

$ kubectl прилага -f dex-rbac.ямъл

5. Създайте dex-configmap.yaml файл. Уверете се, че сте модифицирали съответно URL адреса на издателя, URI за пренасочване, клиентската тайна и конфигурацията на Active Directory.

$ vim dex-configmap.yaml kind: ConfigMap apiVersion: v1 metadata: name: dex namespace: auth-system data: config.yaml: | издател: https: // auth.кубернети.мидомен.com / web: http: 0.0.0.0: 5556 интерфейс: тема: персонализирана телеметрия: http: 0.0.0.0: 5558 staticClients: - id: oidc-auth-client redirectURIs: - https: // kubectl.кубернети.мидомен.com / callback - http: // dashtest.кубернети.мидомен.com / oauth2 / име за обратно извикване: oidc-auth-client secret: секретни конектори: - тип: ldap id: ldap име: LDAP config: хост: 172.16.16.16: 389 insecureNoSSL: true insecureSkipVerify: true bindDN: ldapadmin bindPW: 'KJZOBwS9DtB' userSearch: baseDN: OU = computingforgeeks department, DC = computingforgeeks, DC = net потребителско име: sAMAccountName idName ID: = групи, OU = computingforgeeks, DC = computingforgeeks, DC = net userMatchers: - userAttr: sAMAccountName groupAttr: memberOf nameAttr: givenName oauth2: skipApprovalScreen: true storage: type: kubernetes config: inCluster: true

6. Конфигурирайте Dex.

$ kubectl прилага -f dex-configmap.ямъл

7. Създайте разгръщането на dex.yaml файл.

$ vim dex-разполагане.yaml apiVersion: extensions / v1beta1 kind: Разполагане метаданни: етикети: app: dex name: dex namespace: auth-system spec: replicas: 1 selector: matchLabels: app: dex strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate template : метаданни: етикети: приложение: dex ревизия: "1" спецификация: контейнери: - команда: - / usr / local / bin / dex - обслужване - / etc / dex / cfg / config.yaml изображение: кей.io / dexidp / dex: v2.17.0 imagePullPolicy: IfNotPresent име: dex портове: - containerPort: 5556 име: http протокол: TCP ресурси:  terminationMessagePath: / dev / прекратяване-дневник прекратяванеMessagePolicy: Файл томМонти: - mountPath: / etc / dex / cfg name: config - mountPath : / web / themes / custom / name: theme dnsPolicy: ClusterFirst serviceAccountName: dex restartPolicy: Always schedulerName: default-scheduler securityContext:  terminationGracePeriodSeconds: 30 тома: - configMap: defaultMode: 420 items: - key: config.yaml път: конфиг.yaml name: dex name: config - name: theme emptyDir:  

8. Разгърнете Dex.

$ kubectl прилага -f dex-разполагане.ямъл

9. Създайте услуга dex.yaml файл.

$ vim dex-услуга.yaml apiVersion: v1 вид: Метаданни на услугата: име: пространство на имена на dex: auth-system spec: selector: app: dex ports: - name: dex port: 5556 протокол: TCP targetPort: 5556

10. Създайте услуга за внедряването на Dex.

$ kubectl се прилага -f dex-услуга.ямъл

11. Създайте тайна за влизане на dex. Уверете се, че данните за сертификата за клъстера са на посоченото място или променете този път, за да сочат към него. Ако имате инсталиран мениджър на сертификати във вашия клъстер, можете да пропуснете тази стъпка.

$ kubectl създава секретни tls dex --key / data / Certs / kubernetes.мидомен.com.ключ --cert / data / Certs / kubernetes.мидомен.com.crt -n auth-system

12. Създайте dex-ingress.yaml файл. Променете съответно параметрите на хоста и името на издателя на вашия сертификат.

$ vim dex-ingress.yaml apiVersion: extensions / v1beta1 kind: Ingress metadata: name: dex namespace: auth-system annotations: kubernetes.io / tls-acme: „истинско“ навлизане.кубернети.io / force-ssl-redirect: "true" spec: tls: - secretName: dex hosts: - auth.kubernetesuat.мидомен.com правила: - хост: авт.кубернети.мидомен.com http: paths: - backend: serviceName: dex servicePort: 5556

13. Създайте проникването за услугата Dex.

$ kubectl прилага -f dex-ingress.ямъл

Изчакайте няколко минути, докато мениджърът на сертификати генерира сертификат за Dex. Можете да проверите дали Dex е разположен правилно, като прегледате: https: // auth.kubernetesuat.мидомен.com /.добре позната / openid-конфигурация

Стъпка 2: Конфигурирайте Kubernetes API за достъп до Dex като доставчик на OpenID свързване

След това ще разгледаме как да конфигурираме API сървъра както за RKE, така и за клъстер Kubeadm. За да активираме приставката OIDC, трябва да конфигурираме няколко флага на API сървъра, както е показано тук:

A. RKE КЛАСТЪР

1. SSH към вашия rke възел.

$ ssh [имейл защитен]

2. Редактирайте конфигурацията на API на Kubernetes. Добавете параметрите OIDC и съответно променете URL адреса на издателя.

$ sudo vim ~ / Rancher / клъстер.yml kube-api: service_cluster_ip_range: 10.43.0.0/16 # Изложете различен диапазон от портове за услугите на NodePort service_node_port_range: 30000-32767 extra_args: # Активирайте дневника на одита към stdout audit-log-path: "-" # Увеличете броя на изтритите работници delete-collection-worker: 3 # Задайте ниво на изходни данни на ниво отстраняване на грешки v: 4 # ДОБАВЕТЕ СЛЕДНИТЕ ЛИНИИ oidc-issuer-url: https: // auth.кубернети.мидомен.com / oidc-client-id: oidc-auth-client oidc-ca-file: / data / Certs / kubernetes.мидомен.com.crt oidc-username-претенция: имейл oidc-groups-zahtev: групи extra_binds: - / data / Certs: / data / Certs ## ГАРАНТИРАТЕ СЕРТИФИКАТИТЕ ЗА WILDCARD ПРИСЪСТВУВАТ В ТОЗИ ФАЙЛОВ ПЪТ ВЪВ ВСИЧКИ МАЙСТЪРСКИ НОДИ

3. API Kubernetes ще се рестартира сам, след като стартирате RKE UP.

$ rke нагоре

Б. КУСТЪР KUBEADM

1. SSH към вашия възел.

$ ssh [имейл защитен]

2. Редактирайте конфигурацията на API на Kubernetes. Добавете параметрите OIDC и съответно променете URL адреса на издателя.

$ sudo vim / etc / kubernetes / manifests / kube-apiserver.yaml ... команда: - / hyperkube - apiserver - --advertise-address = 10.10.40.30 # ДОБАВЕТЕ СЛЕДНИТЕ ЛИНИИ: ... - --oidc-issuer-url = https: // auth.кубернети.мидомен.com / - --oidc-client-id = oidc-auth-client ## ОСИГУРЕТЕ СЕРТИФИКАТИТЕ ЗА WILDCARD ПРИСЪСТВУВАТ В ТОЗИ ФАЙЛОВ ПЪТ ВЪВ ВСИЧКИ МАЙСТЪРНИ НОДИ: - --oidc-ca-file = / etc / ssl / kubernetes / kubernetes.мидомен.com.crt - --oidc-username-претенция = имейл - --oidc-groups-zahtev = групи .. 

3. API Kubernetes ще се рестартира сам.

СТЪПКА 3: Разгърнете проксито Oauth2 и конфигурирайте влизането в таблото на kubernetes

1. Генерирайте тайна за проксито Oauth2.

python -c 'импортиране на os, base64; печат база64.urlsafe_b64encode (os.urandom (16)) '

2. Копирайте генерираната тайна и я използвайте за OAUTH2_PROXY_COOKIE_SECRET стойност в следващата стъпка.

3. Създайте oauth2-proxy-разполагане.yaml файл. Променете съответно тайната на клиента OIDC, URL адреса на издателя на OIDC и тайната на бисквитката на прокси Oauth2.

$ vim oauth2-proxy-разполагане.yaml apiVersion: extensions / v1beta1 kind: Метаданни за внедряване: етикети: k8s-app: oauth2-proxy name: oauth2-proxy namespace: auth-system spec: replicas: 1 selector: matchLabels: k8s-app: oauth2-proxy template: metadata: етикети: k8s-app: oauth2-proxy spec: контейнери: - args: - --cookie-secure = false - --provider = oidc - --client-id = oidc-auth-client - --client-secret = * ********** - --oidc-issuer-url = https: // auth.кубернети.мидомен.com / - --http-адрес = 0.0.0.0: 8080 - - upstream = файл: /// dev / null - --email-domain = * - --set-auth-header = true env: # docker run -ti --rm python: 3-alpine python -c 'тайни за импортиране, base64; печат (base64.b64encode (base64.b64encode (тайни.token_bytes (16)))); ' - име: OAUTH2_PROXY_COOKIE_SECRET стойност: *********** изображение: sguyennet / oauth2-proxy: header-2.2 imagePullPolicy: Винаги име: oauth2-прокси портове: - containerPort: 8080 протокол: TCP

4. Разгърнете проксито Oauth2.

$ kubectl прилага -f oauth2-proxy-разполагане.ямъл

5. Създайте услуга oauth2-proxy.yaml файл.

$ vim oauth2-proxy-service.yaml apiVersion: v1 вид: Метаданни на услугата: етикети: k8s-app: oauth2-proxy name: oauth2-proxy namespace: auth-system spec: ports: - name: http port: 8080 protocol: TCP targetPort: 8080 selector: k8s-app : oauth2-прокси

6. Създайте услуга за внедряването на прокси Oauth2.

$ kubectl прилага -f oauth2-прокси-услуга.ямъл

7. Създайте входно табло за управление.yaml файл. Променете съответно URL адресите на таблото за управление и параметъра на хоста.

$ vim табло за управление.yaml apiVersion: extensions / v1beta1 kind: Ingress metadata: name: kubernetes-dashboard namespace: kube-system annotations: nginx.навлизане.кубернети.io / auth-url: "https: // табло за управление.кубернети.мидомен.com / oauth2 / auth "nginx.навлизане.кубернети.io / auth-signin: "https: // табло за управление.кубернети.мидомен.com / oauth2 / start?rd = https: // $ host $ request_uri $ is_args $ args "nginx.навлизане.кубернети.io / secure-backends: "true" nginx.навлизане.кубернети.io / configuration-snippet: | auth_request_set $ token $ upstream_http_authorization; proxy_set_header Упълномощаване $ token; spec: rules: - host: dashboard.кубернети.мидомен.com http: paths: - backend: serviceName: kubernetes-dashboard servicePort: 443 path: /

8. Създайте проникването за услугата на таблото.

$ kubectl приложи -f табло за управление.ямъл

9. Създайте тайна за влизане на kubernetes-dashboard-external-tls. Уверете се, че данните за сертификата за клъстера са на посоченото място или променете този път, за да сочат към него. Пропуснете тази стъпка, ако използвате диспечер на сертификати.

$ kubectl създаде секретни tls kubernetes-dashboard-external-tls --key / data / Certs / kubernetes.мидомен.com.ключ --cert / data / Certs / kubernetes.мидомен.com.crt -n auth-system

10. Създайте oauth2-proxy-ingress.yaml файл. Променете съответно издателя на мениджъра на сертификати и параметрите на хоста.

$ vim oauth2-proxy-ingress.yaml apiVersion: extensions / v1beta1 kind: Влизане в метаданни: анотации: kubernetes.io / tls-acme: „истинско“ навлизане.кубернети.io / force-ssl-redirect: "true" name: oauth-proxy namespace: auth-system spec: rules: - host: dashboard.кубернети.мидомен.com http: paths: - backend: serviceName: oauth2-proxy servicePort: 8080 path: / oauth2 tls: - hosts: - dashboard.кубернети.мидомен.com secretName: kubernetes-dashboard-external-tls

10. Създайте проникването за прокси услугата Oauth2.

$ kubectl прилага -f oauth2-proxy-ingress.ямъл

11. Създайте обвързване на ролята.

$ kubectl създава обвързване на роли -обвързване на ролите- --clusterrole = admin --user = д.g kubectl създайте обвързване на роли mkemei-rolebinding-default --clusterrole = admin [имейл защитен] -n по подразбиране // Имайте предвид, че потребителските имена са чувствителни към малки и големи букви и трябва да потвърдим правилния формат, преди да приложим обвързването на ролите.

12. Изчакайте няколко минути и прегледайте https: // таблото за управление.кубернети.мидомен.com.

13. Влезте с вашия потребител на Active Directory.

Както можете да видите по-долу: [имейл защитен] трябва да може да вижда и променя пространството от имена по подразбиране.

Проверете още статии за Kubernetes:

Наблюдавайте внедряването на Kubernetes с оперативен изглед на Kubernetes

Как да изпращаме регистрационните файлове на Kubernetes до външно търсене на еластично

Как да извършите клонирането на Git в внедряването на Kubernetes Pod

Как да инсталирате MariaDB на Debian 10 Buster
В този урок ще ви покажа как можете да инсталирате MariaDB 10.3 на Debian 10 (Buster). MariaDB е релационна система за управление на бази данни, раздв...
Инсталирайте MariaDB 10.4 на Debian 9 | Debian 8
Това ръководство ще ви преведе как да инсталирате MariaDB 10.4 на Debian 9 / Debian 8 Linux. MariaDB е сървър за бази данни с отворен код, издаден под...
Инсталирайте и конфигурирайте phpMyAdmin на Fedora 32/31/30/29
Можете да ни подкрепите, като изтеглите тази статия като PDF от връзката по-долу. Изтеглете ръководството като PDF Близо В това ръководство ще ра...