Lab 9.2 - Service Accounts y Permisos
Objetivos del Lab
Al final de este laboratorio, usted será capaz de:
- Crear y utilizar Service Accounts.
- Asignar permisos a Service Accounts.
- Utilizar Service Accounts en los Pods.
- Comprender los tokens y secretos de los Service Accounts.
- Probar el acceso a la API desde un Pod con un Service Account.
Duración Estimada
45-60 minutos
Requisitos Previos
- kubectl instalado y configurado.
- Cluster Kubernetes local funcional.
- Conocimientos sobre Service Accounts (Capítulo 9.2).
Parte 1: Creación de un Service Account
Paso 1.1: Crear un Service Account
Cree un namespace de prueba:
kubectl create namespace sa-test
Cree un Service Account:
kubectl create serviceaccount app-sa -n sa-test
Verifique:
kubectl get serviceaccount app-sa -n sa-test
kubectl describe serviceaccount app-sa -n sa-test
Parte 2: Asignación de Permisos
Paso 2.1: Crear un Role con Permisos
Cree role-app-permissions.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: sa-test
name: app-role
rules:
- apiGroups: [""]
resources: ["pods", "configmaps"]
verbs: ["get", "list", "watch", "create"]
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "list"]
Aplique:
kubectl apply -f role-app-permissions.yaml
Paso 2.2: Crear un RoleBinding
Cree rolebinding-app.yaml:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: app-binding
namespace: sa-test
subjects:
- kind: ServiceAccount
name: app-sa
namespace: sa-test
roleRef:
kind: Role
name: app-role
apiGroup: rbac.authorization.k8s.io
Aplique:
kubectl apply -f rolebinding-app.yaml
Parte 3: Uso en un Pod
Paso 3.1: Crear un Pod con el Service Account
Cree pod-with-sa.yaml:
apiVersion: v1
kind: Pod
metadata:
name: app-pod
namespace: sa-test
spec:
serviceAccountName: app-sa
containers:
- name: app
image: bitnami/kubectl:latest
command: ["sleep", "3600"]
Aplique:
kubectl apply -f pod-with-sa.yaml
Verifique que el Pod utilice el Service Account:
kubectl describe pod app-pod -n sa-test
Parte 4: Prueba de Permisos
Paso 4.1: Probar el Acceso a la API desde el Pod
Pruebe los permisos desde el Pod:
# Probar la lista de Pods (debería funcionar)
kubectl exec -n sa-test app-pod -- kubectl get pods
# Probar la creación de un ConfigMap (debería funcionar)
kubectl exec -n sa-test app-pod -- kubectl create configmap test-cm --from-literal=key=value --dry-run=client -o yaml
# Probar la lista de Services (debería fallar - sin permiso)
kubectl exec -n sa-test app-pod -- kubectl get services
Parte 5: Tokens y Secrets
Paso 5.1: Examinar el Token
El Service Account tiene un token almacenado en un Secret:
# Listar los Secrets del Service Account
kubectl get secrets -n sa-test
# El token está montado en el Pod en /var/run/secrets/kubernetes.io/serviceaccount/token
kubectl exec -n sa-test app-pod -- cat /var/run/secrets/kubernetes.io/serviceaccount/token
Parte 6: Limpieza
kubectl delete pod app-pod -n sa-test
kubectl delete rolebinding app-binding -n sa-test
kubectl delete role app-role -n sa-test
kubectl delete serviceaccount app-sa -n sa-test
kubectl delete namespace sa-test
Resumen del Lab
En este laboratorio, usted creó y utilizó Service Accounts con permisos RBAC. Aprendió a asignar permisos, a utilizar Service Accounts en los Pods y a probar el acceso a la API.
Próximos Pasos
El próximo laboratorio le mostrará cómo aplicar los Pod Security Standards.
Lab 9.3: Pod Security Standards
Lab creado el: Diciembre 2024