управление_доступом_в_kubernetes

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
управление_доступом_в_kubernetes [2025/11/04 12:09]
val [Предоставление доступа к services/proxy в Namespace]
управление_доступом_в_kubernetes [2025/11/04 19:30] (current)
val
Line 14: Line 14:
  
   * [[https://​medium.com/​@subhampradhan966/​implementing-and-verifying-kubernetes-service-accounts-a-step-by-step-guide-c43b727260b2|Implementing and Verifying Kubernetes Service Accounts: A Step-by-Step Guide]]   * [[https://​medium.com/​@subhampradhan966/​implementing-and-verifying-kubernetes-service-accounts-a-step-by-step-guide-c43b727260b2|Implementing and Verifying Kubernetes Service Accounts: A Step-by-Step Guide]]
 +
 +  * [[https://​medium.com/​@reza.sadriniaa/​automatic-kubernetes-certificate-renewal-a-step-by-step-guide-c4320192a74d|Automatic Kubernetes Certificate Renewal: A Step-by-Step Guide]]
 +  * [[https://​weng-albert.medium.com/​updating-kubernetes-certificates-easy-peasy-en-139fc07f26c8|Updating Kubernetes Certificates:​ Easy Peasy!(En)]]
  
 ===== Реклама ===== ===== Реклама =====
Line 23: Line 26:
 ===== Техническое задание ===== ===== Техническое задание =====
  
-  * Создать учетную запись ​пользователя с необходимыми правами ​и файл конфигурации для подключения ​младшего системного ​администратора к Web ресурсам Kubernetes +  * Создать учетную запись и файл конфигурации с правами для подключения ​к приложениямадминистрированию ​ресурсов выделенного Namespace и всего кластера Kubernetes 
-  * Создать учтённую ​запись для сервиса с необходимыми правами для запуска ​приложений в Kubernetes+  * Использовать учтёные записи приложений в Kubernetes ​для доступа к API 
  
 ===== Запись вебинара ===== ===== Запись вебинара =====
Line 30: Line 33:
   * Тэги: Kubernetes, ServiceAccout,​ RBAC   * Тэги: Kubernetes, ServiceAccout,​ RBAC
  
-===== Подготовка к вебинару =====+===== Подготовка к повтору ​вебинара =====
 <​code>​ <​code>​
 user1@client1:​~$ rm user1* user1@client1:​~$ rm user1*
Line 37: Line 40:
  
 kube1:~# rm -r users/ kube1:~# rm -r users/
 +
 +kube1:~# kubectl delete serviceaccounts admin-user
 </​code>​ </​code>​
  
Line 103: Line 108:
   * [[https://​kubernetes.io/​docs/​reference/​kubectl/​generated/​kubectl_config/​kubectl_config_set-credentials/​]]   * [[https://​kubernetes.io/​docs/​reference/​kubectl/​generated/​kubectl_config/​kubectl_config_set-credentials/​]]
 <​code>​ <​code>​
 +user1@client1:​~$ ###rm -rf .kube/
 +
 user1@client1:​~$ kubectl config set-cluster cluster.local --insecure-skip-tls-verify=true --server=https://​192.168.13.221:​6443 user1@client1:​~$ kubectl config set-cluster cluster.local --insecure-skip-tls-verify=true --server=https://​192.168.13.221:​6443
   ИЛИ   ИЛИ
Line 123: Line 130:
 user1@client1:​~$ kubectl auth whoami user1@client1:​~$ kubectl auth whoami
  
-user1@client1:​~$ kubectl get pods+user1@client1:​~$ kubectl get pods #-A
 Error from server (Forbidden) или ... Error from server (Forbidden) или ...
 </​code>​ </​code>​
Line 214: Line 221:
 </​code>​ </​code>​
  
-  * Запускаем pod my-debian ([[Система Kubernetes#​Базовые объекты k8s]]) в my-ns+  * Запускаем pod my-debian ([[Система Kubernetes#​Базовые объекты k8s]]) в my-ns (создать,​ если нет)
  
  
Line 287: Line 294:
  
 kube1:​~/​users#​ kubectl get clusterrolebindings | less kube1:​~/​users#​ kubectl get clusterrolebindings | less
 +
 +kube1:​~/​users#​ kubectl get clusterrolebindings admin -o yaml
  
 kube1:​~/​users#​ kubectl get clusterrolebindings cluster-admin -o yaml kube1:​~/​users#​ kubectl get clusterrolebindings cluster-admin -o yaml
Line 312: Line 321:
 ==== Поиск предоставленных кластерных ролей для учетной записи ==== ==== Поиск предоставленных кластерных ролей для учетной записи ====
 <​code>​ <​code>​
 +kube1:​~/​users#​ kubectl get clusterrolebindings -o=json | jq '​.items[] | select(.subjects[]?​.name == "​kubeadm:​cluster-admins"​)'​
 +
 kube1:​~/​users#​ kubectl get clusterrolebindings -o=json | jq '​.items[] | select(.subjects[]?​.name == "​user1"​)'​ kube1:​~/​users#​ kubectl get clusterrolebindings -o=json | jq '​.items[] | select(.subjects[]?​.name == "​user1"​)'​
 +
 +kube1:​~/​users#​ kubectl get clusterrolebindings -o=json | jq '​.items[] | select(.subjects[]?​.name == "​default"​)'​
 +
 +kube1:​~/​users#​ kubectl delete -f user1-cluster-admin.yaml
 </​code>​ </​code>​
  
Line 321: Line 336:
 ===== Шаг 6. Использование Service Accounts в приложениях ===== ===== Шаг 6. Использование Service Accounts в приложениях =====
  
-  * Используем запущенное приложение ([[Система Kubernetes#​Базовые объекты k8s]])+  * Используем ​ранее ​запущенное приложение ([[Система Kubernetes#​Базовые объекты k8s]]) ​в my-ns
  
 <​code>​ <​code>​
-kube1:​~/​users#​ kubectl describe pod my-debian | grep -i account+kube1:​~/​users#​ kubectl ​-n my-ns describe pod my-debian | grep -i account
  
-kube1:​~/​users#​ kubectl auth can-i get pods --as=system:​serviceaccount:​default:default+kube1:​~/​users#​ kubectl -n my-ns exec -ti pods/​my-debian -- bash 
 + 
 +root@my-debian:/#​ apt update && apt install kubectl 
 +</​code>​ 
 + 
 +  * [[#Шаг 2.3 Создание файла конфигурации kubectl]] 
 + 
 +<​code>​ 
 +kube1:​~/​users#​ kubectl auth can-i get pods --as=system:​serviceaccount:​my-ns:default
  
 kube1:​~/​users#​ cat sa-default-cluster-admin.yaml kube1:​~/​users#​ cat sa-default-cluster-admin.yaml
Line 333: Line 356:
 kind: ClusterRoleBinding kind: ClusterRoleBinding
 metadata: metadata:
-  name: user1-cluster-admin+  name: sa-default-cluster-admin
 subjects: subjects:
 - kind: ServiceAccount - kind: ServiceAccount
   name: default   name: default
-  namespace: ​default+  namespace: ​my-ns
 roleRef: roleRef:
   kind: ClusterRole   kind: ClusterRole
Line 344: Line 367:
 </​code><​code>​ </​code><​code>​
 kube1:​~/​users#​ kubectl apply -f sa-default-cluster-admin.yaml kube1:​~/​users#​ kubectl apply -f sa-default-cluster-admin.yaml
 +</​code>​
  
-kube1:​~/​users#​ kubectl exec -ti pods/​my-debian -- bash+Проверяем доступ к API из приложения
  
-root@my-debian:/# apt update && apt install ​kubectl+<​code>​ 
 +kube1:​~/​users#​ kubectl delete ​-f sa-default-cluster-admin.yaml 
 + 
 +kube1:~/dashboard# kubectl ​-n my-ns delete pod my-debian ​                                                     ​
 </​code>​ </​code>​
- 
-  * [[#Шаг 2.3 Создание файла конфигурации kubectl]] 
  
 ===== Вопросы?​ ===== ===== Вопросы?​ =====
управление_доступом_в_kubernetes.1762247378.txt.gz · Last modified: 2025/11/04 12:09 by val