Parte 5: Acceso, validación, actualización y eliminación del clúster
Configuración del acceso al clúster
Después de crear un clúster de EKS, se requiere configuración para acceder al clúster. En esta sección, aprenderemos cómo configurar el acceso al clúster.
Proceso de configuración del acceso al clúster

Configuración de kubeconfig
Necesitas configurar el archivo kubeconfig para acceder a un clúster de EKS. Puedes configurar kubeconfig usando AWS CLI:
aws eks update-kubeconfig \
--name my-cluster \
--region us-west-2Este comando actualiza el archivo ~/.kube/config para habilitar el acceso al clúster de EKS.
Configuración del acceso para IAM User y Role
De forma predeterminada, solo la entidad IAM (user o role) que creó el clúster de EKS puede acceder al clúster. Hay dos métodos para conceder acceso al clúster a otros IAM users o roles: el método tradicional con aws-auth ConfigMap y el nuevo método EKS Access Entry.

Método 1: EKS Access Entry (recomendado)
EKS Access Entry es un nuevo método que reemplaza el aws-auth ConfigMap y proporciona un enfoque más estable y fácil de administrar.
- Habilita Access Entry para el clúster:
aws eks update-cluster-config \
--name my-cluster \
--region us-west-2 \
--access-config authenticationMode=API_AND_CONFIG_MAP- Crea Access Entry para un IAM role:
aws eks create-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:role/MyRole \
--username my-role \
--kubernetes-groups system:masters- Crea Access Entry para un IAM user:
aws eks create-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:user/my-user \
--username my-user \
--kubernetes-groups system:masters- Lista los Access Entries:
aws eks list-access-entries --cluster-name my-cluster- Describe los detalles de Access Entry:
aws eks describe-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:user/my-userMétodo 2: aws-auth ConfigMap (heredado)
El aws-auth ConfigMap es el método tradicional y aún es compatible, pero se recomienda usar Access Entry para clústeres nuevos.
- Obtén el ConfigMap
aws-authactual:
kubectl get configmap aws-auth -n kube-system -o yaml > aws-auth.yaml- Edita el archivo
aws-auth.yamlpara agregar users o roles:
apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: arn:aws:iam::123456789012:role/EKSNodeRole
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
# Additional role
- rolearn: arn:aws:iam::123456789012:role/MyRole
username: my-role
groups:
- system:masters
mapUsers: |
# IAM user
- userarn: arn:aws:iam::123456789012:user/my-user
username: my-user
groups:
- system:masters- Aplica el ConfigMap actualizado:
kubectl apply -f aws-auth.yamlNota: EKS Access Entry se introdujo en 2023, y se recomienda usar Access Entry para clústeres nuevos. Los clústeres existentes se pueden migrar a un modo híbrido que admite ambos métodos.
Configuración de RBAC
Puedes controlar el acceso a los recursos dentro del clúster usando Kubernetes Role-Based Access Control (RBAC).
- Crea namespace:
kubectl create namespace dev- Crea role:
# role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: dev
name: developer
rules:
- apiGroups: [""]
resources: ["pods", "services", "configmaps", "secrets"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["apps"]
resources: ["deployments", "statefulsets", "daemonsets"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]kubectl apply -f role.yaml- Crea role binding:
# rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: developer-binding
namespace: dev
subjects:
- kind: User
name: my-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: developer
apiGroup: rbac.authorization.k8s.iokubectl apply -f rolebinding.yamlValidación del clúster
Después de crear un clúster de EKS, debes verificar que el clúster esté funcionando correctamente. En esta sección, aprenderemos cómo validar el clúster.
Proceso de validación del clúster

Verificar Nodes
Verifica los nodes en el clúster:
kubectl get nodesVerifica que todos los nodes estén en estado Ready.
Verificar Pods del sistema
Verifica los pods en el namespace kube-system:
kubectl get pods -n kube-systemVerifica que todos los system pods estén en estado Running.
Desplegar una aplicación de prueba
Despliega una aplicación de prueba simple para verificar que el clúster esté funcionando correctamente:
# nginx.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: nginxkubectl apply -f nginx.yamlVerifica el estado del deployment y del service:
kubectl get deployments
kubectl get pods
kubectl get servicesVerifica que puedas acceder a la aplicación usando la IP externa del service LoadBalancer:
curl http://<EXTERNAL-IP>Verificar los logs del clúster
Verifica los logs del clúster en CloudWatch Logs:
aws logs describe-log-groups \
--log-group-name-prefix /aws/eks/my-clusterActualización del clúster
Para mantener un clúster de EKS actualizado, se requieren actualizaciones periódicas. En esta sección, aprenderemos cómo actualizar un clúster.
Proceso de actualización del clúster

Actualización del control plane
Para actualizar el control plane de EKS, sigue estos pasos:
- Comprueba las versiones de Kubernetes disponibles:
aws eks describe-addon-versions \
--kubernetes-version 1.27 \
--query "addons[].addonVersions[].compatibilities[].clusterVersion"- Actualiza el clúster:
aws eks update-cluster-version \
--name my-cluster \
--kubernetes-version 1.27- Comprueba el estado de la actualización:
aws eks describe-update \
--name my-cluster \
--update-id <UPDATE-ID>Actualización de Nodes
Después de actualizar el control plane, los nodes también deben actualizarse:
Actualización de Managed Node Group
aws eks update-nodegroup-version \
--cluster-name my-cluster \
--nodegroup-name my-nodegroupActualización de Self-Managed Node
Para self-managed nodes, necesitas crear un nuevo node group, migrar workloads y luego eliminar el node group antiguo.
Actualización de add-ons
Para actualizar los add-ons de EKS, sigue estos pasos:
- Comprueba las versiones de add-on disponibles:
aws eks describe-addon-versions \
--addon-name vpc-cni \
--kubernetes-version 1.27- Actualiza el add-on:
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version <VERSION>Eliminación del clúster
Cuando un clúster de EKS ya no sea necesario, puedes eliminarlo para ahorrar costos. En esta sección, aprenderemos cómo eliminar un clúster.
Proceso de eliminación del clúster

Limpieza de recursos
Antes de eliminar un clúster, debes limpiar todos los recursos creados en el clúster:
- Elimina los services LoadBalancer:
kubectl get services --all-namespaces -o json | jq -r '.items[] | select(.spec.type == "LoadBalancer") | .metadata.name + " " + .metadata.namespace' | while read name namespace; do
kubectl delete service $name -n $namespace
done- Elimina PersistentVolumeClaims:
kubectl delete pvc --all --all-namespacesEliminar el clúster usando eksctl
Si creaste el clúster usando eksctl, puedes eliminarlo con el siguiente comando:
eksctl delete cluster --name my-cluster --region us-west-2Eliminar el clúster usando AWS CLI
Para eliminar un clúster usando AWS CLI, sigue estos pasos:
- Elimina node group:
aws eks delete-nodegroup \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup- Elimina Fargate profile:
aws eks delete-fargate-profile \
--cluster-name my-cluster \
--fargate-profile-name my-fargate-profile- Elimina el clúster:
aws eks delete-cluster \
--name my-clusterLimpiar recursos relacionados
Después de eliminar el clúster de EKS, los siguientes recursos relacionados pueden permanecer:
- VPC y recursos relacionados:
aws ec2 delete-vpc --vpc-id vpc-xxxxxxxxxxxxxxxxx- IAM roles y policies:
aws iam detach-role-policy \
--role-name EKSClusterRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
aws iam delete-role --role-name EKSClusterRole
aws iam detach-role-policy \
--role-name EKSNodeRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
aws iam detach-role-policy \
--role-name EKSNodeRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
aws iam detach-role-policy \
--role-name EKSNodeRole \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
aws iam delete-role --role-name EKSNodeRole- Grupos de logs de CloudWatch:
aws logs delete-log-group \
--log-group-name /aws/eks/my-cluster/clusterCuestionario
Para probar lo que aprendiste en este capítulo, intenta el Cuestionario de creación de clúster de EKS - Parte 5.