Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revisionBoth sides next revision
devops:kubernetes [2021/02/17 06:41] – [Настройка client в keycloak] admindevops:kubernetes [2021/03/22 13:03] – [Обновление сертификатов] admin
Line 652: Line 652:
 current-context: ${USER}-${CLUSTER_NAME} current-context: ${USER}-${CLUSTER_NAME}
 EOF</code> EOF</code>
 +===== Bash-скрипты в init-контейнерах при деплойменте с помощью helm =====
 +В чарте в директории files я имею просто скрипт, который должне запуститься в init-контейнере. \\
 +Я поменщаю этот скрипт в секрет с помощью такого манифеста:
 +<code>
 +apiVersion: v1
 +kind: Secret
 +metadata:
 +  name: files
 +type: Opaque
 +data: 
 +{{ (.Files.Glob "files/*").AsSecrets | indent 2 }}
 +</code>
 +В деплойменте я запускаю init-контейнер, в котором монтируется секрет с этим скриптом и выполняется этот скрипт:
 +<code>
 +...
 +      initContainers:
 +      - name: copy-files
 +        image: docker.rdleas.ru/busybox
 +        command:
 +        - "sh"
 +        - "-c"
 +        - "cp /tmp/files/init-script.sh /tmp/ && chmod u+x /tmp/init-script.sh && /tmp/init-script.sh"
 +        volumeMounts:
 +        - name: files
 +          mountPath: /tmp/files/
 +...
 +      volumes:
 +      - name: files
 +        secret:
 +          secretName: files
 +</code>
 +то есть мне надо сделать скрипт исполняемым (дать соотвествующие разрешения), но смонтирован он как read-only, поэтому я предварительно копирую его. А после того, как разрешено его исполнение - запускаю скрипт.
 +
 ====== Обновление сертификатов ====== ====== Обновление сертификатов ======
 https://github.com/kubernetes/kubeadm/issues/581#issuecomment-471575078 \\ https://github.com/kubernetes/kubeadm/issues/581#issuecomment-471575078 \\
Line 688: Line 721:
   base64 -w 0 ./new_node.crt.pem   base64 -w 0 ./new_node.crt.pem
 И затем подставляем в поле **client-certificate-data:** в файлике **/etc/kubernetes/kubelet.conf** И затем подставляем в поле **client-certificate-data:** в файлике **/etc/kubernetes/kubelet.conf**
-===== Kubernetes LDAP Auth =====+====== Kubernetes LDAP Auth ======
 **LDAP**-аутентификацию к кластеру **kubernetes** можно прикрутить с помощью различных средств, но все они используют один подход и схожие по назначению компоненты: **LDAP**-аутентификацию к кластеру **kubernetes** можно прикрутить с помощью различных средств, но все они используют один подход и схожие по назначению компоненты:
   * Служба каталога с поддрежкой протокола LDAP. Например - Active Directory   * Служба каталога с поддрежкой протокола LDAP. Например - Active Directory
Line 694: Line 727:
   * Некое web-приложение, с которым взаимодействует пользователи. Оно перенапрявляет пользователя на **OpenID Connector**, получает от кластера **kubernetes** сертификат и генерирует конфиг для **kubectl**.   * Некое web-приложение, с которым взаимодействует пользователи. Оно перенапрявляет пользователя на **OpenID Connector**, получает от кластера **kubernetes** сертификат и генерирует конфиг для **kubectl**.
  
-==== OIDC Providers ====+===== OIDC Providers =====
   * Dex   * Dex
   * Keycloak   * Keycloak
  
-==== WebApps ====+===== WebApps =====
   * Kuberos - https://github.com/negz/kuberos (не поддерживается с 2019 года)   * Kuberos - https://github.com/negz/kuberos (не поддерживается с 2019 года)
   * GangWay   * GangWay
   * Dex K8s Authenticator   * Dex K8s Authenticator
  
-==== Keycloak + kubelogin ====+===== Keycloak + kubelogin =====
 Мне понравился такой вариант - **Keycloak** в качестве OIDC-провайдера и **kubelogin** в качестве способа получения токена. \\ Мне понравился такой вариант - **Keycloak** в качестве OIDC-провайдера и **kubelogin** в качестве способа получения токена. \\
  
-=== Настройка client в keycloak ===+==== Настройка client в keycloak ====
                
 В параметры клиента в **keycloak** в **valid redirect uris** нужно прописать **http://localhost:8000** (или *) В параметры клиента в **keycloak** в **valid redirect uris** нужно прописать **http://localhost:8000** (или *)
  
-=== Настройка кластера kubernetes ===+==== Настройка кластера kubernetes ====
 На каждой мастер-ноде редактируем файл **/etc/kubernetes/manifests/kube-apiserver.yaml** и добавляем туда такие параметры: На каждой мастер-ноде редактируем файл **/etc/kubernetes/manifests/kube-apiserver.yaml** и добавляем туда такие параметры:
 <code>    - --oidc-ca-file=/etc/ssl/certs/RDLeas_Root_CARDleas-SRV-DC02-CA.pem <code>    - --oidc-ca-file=/etc/ssl/certs/RDLeas_Root_CARDleas-SRV-DC02-CA.pem
Line 731: Line 764:
         oidc-username-claim: email</code>         oidc-username-claim: email</code>
  
-=== Настройка клиентской машины ===+==== Настройка клиентской машины ====
 Устанавливаем плагин kubelogin. \\ Устанавливаем плагин kubelogin. \\
 Скачиваем бинарник https://github.com/int128/kubelogin/releases \\ Скачиваем бинарник https://github.com/int128/kubelogin/releases \\
Line 756: Line 789:
   name: sbl-apps-dev-oidc</code>   name: sbl-apps-dev-oidc</code>
  
-=== Назначение привилегий в кластере ===+==== Назначение привилегий в кластере ====
 Название групп в манифестах должно быть точно таким же как и в токене. В моей инсталляции в начале названия группы есть слеш. \\ Название групп в манифестах должно быть точно таким же как и в токене. В моей инсталляции в начале названия группы есть слеш. \\
 Права на неймспейс (в даннос лучае - default) выдаем так: Права на неймспейс (в даннос лучае - default) выдаем так:
Line 808: Line 841:
 </code> </code>
  
-=== Разрешение проблем ===+==== Разрешение проблем ====
 Поглядеть текущий токен можно так: Поглядеть текущий токен можно так:
   kubelogin get-token --oidc-issuer-url=https://sso.rdleas.ru/auth/realms/rdleas --oidc-client-id=kubernetes   kubelogin get-token --oidc-issuer-url=https://sso.rdleas.ru/auth/realms/rdleas --oidc-client-id=kubernetes
 Расшифровать его (и увидеть список групп в нем) можно тут: https://jwt.io/ \\ Расшифровать его (и увидеть список групп в нем) можно тут: https://jwt.io/ \\
  
-== invalid bearer token, oidc: email not verified ==+=== invalid bearer token, oidc: email not verified ===
 В логе **kube-apiserver** ошибка В логе **kube-apiserver** ошибка
   Unable to authenticate the request due to an error: [invalid bearer token, oidc: email not verified]   Unable to authenticate the request due to an error: [invalid bearer token, oidc: email not verified]
Line 825: Line 858:
   kubectl --token=$token --server=https://192.168.1.2:6443 --insecure-skip-tls-verify get po --v=10   kubectl --token=$token --server=https://192.168.1.2:6443 --insecure-skip-tls-verify get po --v=10
    
-==== Dex + Dex K8s authenticator ====+===== Dex + Dex K8s authenticator =====
 https://uni.dtln.ru/digest/autentifikaciya-v-kubernetes-s-pomoshchyu-dex-prikruchivaem-ldap \\ https://uni.dtln.ru/digest/autentifikaciya-v-kubernetes-s-pomoshchyu-dex-prikruchivaem-ldap \\
 https://habr.com/ru/post/436238/ \\ https://habr.com/ru/post/436238/ \\
Line 831: Line 864:
 https://github.com/mintel/dex-k8s-authenticator \\ https://github.com/mintel/dex-k8s-authenticator \\
  
-==== Keycloak + Gangway ====+===== Keycloak + Gangway =====
 https://github.com/heptiolabs/gangway \\ https://github.com/heptiolabs/gangway \\
  
-==== Dex + GangWay ====+===== Dex + GangWay =====
 https://github.com/alexbrand/gangway-dex-tutorial https://github.com/alexbrand/gangway-dex-tutorial
  
  • devops/kubernetes.txt
  • Last modified: 2023/11/30 08:03
  • by admin