← До фільтрів та технологій

← До списку лабораторних по Kubernetes

Kubernetes Лабораторна 44: ServiceAccount та automountServiceAccountToken

Технологія: Kubernetes

Номер лабораторної: 44 · Рівень: middle

Тема: ServiceAccount та керування токенами

Повний опис / сценарій лабораторної:

Мета: навчитися керувати тим чи монтується токен serviceaccount в pod і які права має додаток у кластері.



Крок 1. Переглянути default serviceaccount у namespace.

Команда: kubectl get sa

Пояснення: за замовчуванням pod використовують обліковий запис default.



Крок 2. Створити окремий serviceaccount app-sa.

Команда: kubectl create serviceaccount app-sa

Пояснення: ми дамо йому обмежені права.



Крок 3. Створити role тільки для читання pod.

Пояснення: role дозволить get list watch pod у поточному namespace.



Крок 4. Звязати role з app-sa через rolebinding.

Команда: kubectl apply -f rb-app-sa.yaml

Пояснення: app-sa тепер має мінімальні права.



Крок 5. Створити pod з використанням app-sa.

Yaml: pod з serviceAccountName app-sa та automountServiceAccountToken true.

Пояснення: всередині pod буде змонтовано токен.



Крок 6. Перевірити доступ до kube api з pod.

Команда: kubectl exec -it <pod-app-sa> -- sh і далі curl на https адрес kube api з використанням токена.

Пояснення: ти побачиш що можна читати інформацію про pod і namespace.



Крок 7. Створити інший pod з automountServiceAccountToken false.

Пояснення: у такому pod токен не монтується і додаток не має прямого доступу до api.



Крок 8. Перевірити що токен відсутній.

Команда: kubectl exec -it <pod-no-token> -- ls /var/run/secrets/kubernetes.io/serviceaccount || echo no token

Пояснення: переконайся що директорія з токеном недоступна.



Крок 9. Обговорити найкращі практики.

Пояснення: виділи коли варто відключати automount для подів які не потребують доступу до api.



Крок 10. Міні звіт.

Завдання: опиши типову схему рольового поділу для мікросервісів які взаємодіють через kube api.