← До списку лабораторних по Kubernetes
Повний опис / сценарій лабораторної:
Мета: навчитися керувати тим чи монтується токен 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.