Part 5: Cluster Access, Validation, Upgrade and Deletion
Configuring Cluster Access
EKS cluster を作成した後、cluster にアクセスするための設定が必要です。このセクションでは、cluster access の設定方法を学びます。
Cluster Access Configuration Process

kubeconfig Configuration
EKS cluster にアクセスするには、kubeconfig file を設定する必要があります。AWS CLI を使用して kubeconfig を設定できます。
aws eks update-kubeconfig \
--name my-cluster \
--region us-west-2この command は ~/.kube/config file を更新し、EKS cluster へのアクセスを有効にします。
Configuring IAM User and Role Access
デフォルトでは、EKS cluster を作成した IAM entity(user または role)のみが cluster にアクセスできます。他の IAM user または role に cluster access を付与する方法は 2 つあります。従来の aws-auth ConfigMap method と、新しい EKS Access Entry method です。

Method 1: EKS Access Entry (Recommended)
EKS Access Entry は aws-auth ConfigMap を置き換える新しい method であり、より安定していて管理しやすい approach を提供します。
- cluster の Access Entry を有効にします。
aws eks update-cluster-config \
--name my-cluster \
--region us-west-2 \
--access-config authenticationMode=API_AND_CONFIG_MAP- IAM role の Access Entry を作成します。
aws eks create-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:role/MyRole \
--username my-role \
--kubernetes-groups system:masters- IAM user の Access Entry を作成します。
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- Access Entries を一覧表示します。
aws eks list-access-entries --cluster-name my-cluster- Access Entry の詳細を確認します。
aws eks describe-access-entry \
--cluster-name my-cluster \
--principal-arn arn:aws:iam::123456789012:user/my-userMethod 2: aws-auth ConfigMap (Legacy)
aws-auth ConfigMap は従来の method であり、現在も support されていますが、新しい cluster には Access Entry の使用が推奨されます。
- 現在の
aws-authConfigMap を取得します。
kubectl get configmap aws-auth -n kube-system -o yaml > aws-auth.yaml- user または role を追加するために
aws-auth.yamlfile を編集します。
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- 更新した ConfigMap を適用します。
kubectl apply -f aws-auth.yamlNote: EKS Access Entry は 2023 年に導入され、新しい cluster には Access Entry の使用が推奨されます。既存の cluster は、両方の method を support する hybrid mode に移行できます。
RBAC Configuration
Kubernetes Role-Based Access Control (RBAC) を使用して、cluster 内の resource への access を制御できます。
- namespace を作成します。
kubectl create namespace dev- 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- 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.yamlCluster Validation
EKS cluster を作成した後、cluster が正しく動作していることを確認する必要があります。このセクションでは、cluster を検証する方法を学びます。
Cluster Validation Process

Verify Nodes
cluster 内の nodes を確認します。
kubectl get nodesすべての nodes が Ready state であることを確認します。
Verify System Pods
kube-system namespace 内の pods を確認します。
kubectl get pods -n kube-systemすべての system pods が Running state であることを確認します。
Deploy Test Application
cluster が正しく動作していることを確認するため、簡単な test application を deploy します。
# 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.yamldeployment と service の status を確認します。
kubectl get deployments
kubectl get pods
kubectl get servicesLoadBalancer service の external IP を使用して application にアクセスできることを確認します。
curl http://<EXTERNAL-IP>Verify Cluster Logs
CloudWatch Logs で cluster logs を確認します。
aws logs describe-log-groups \
--log-group-name-prefix /aws/eks/my-clusterCluster Upgrade
EKS cluster を最新の状態に保つには、定期的な upgrade が必要です。このセクションでは、cluster を upgrade する方法を学びます。
Cluster Upgrade Process

Control Plane Upgrade
EKS control plane を upgrade するには、次の手順に従います。
- 利用可能な Kubernetes versions を確認します。
aws eks describe-addon-versions \
--kubernetes-version 1.27 \
--query "addons[].addonVersions[].compatibilities[].clusterVersion"- cluster を upgrade します。
aws eks update-cluster-version \
--name my-cluster \
--kubernetes-version 1.27- upgrade status を確認します。
aws eks describe-update \
--name my-cluster \
--update-id <UPDATE-ID>Node Upgrade
control plane を upgrade した後、nodes も upgrade する必要があります。
Managed Node Group Upgrade
aws eks update-nodegroup-version \
--cluster-name my-cluster \
--nodegroup-name my-nodegroupSelf-Managed Node Upgrade
self-managed nodes の場合、新しい node group を作成し、workloads を移行してから古い node group を削除する必要があります。
Add-on Upgrade
EKS add-ons を upgrade するには、次の手順に従います。
- 利用可能な add-on versions を確認します。
aws eks describe-addon-versions \
--addon-name vpc-cni \
--kubernetes-version 1.27- add-on を upgrade します。
aws eks update-addon \
--cluster-name my-cluster \
--addon-name vpc-cni \
--addon-version <VERSION>Cluster Deletion
EKS cluster が不要になったら、cost を節約するために削除できます。このセクションでは、cluster を削除する方法を学びます。
Cluster Deletion Process

Resource Cleanup
cluster を削除する前に、cluster 内で作成されたすべての resources を clean up する必要があります。
- LoadBalancer services を削除します。
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- PersistentVolumeClaims を削除します。
kubectl delete pvc --all --all-namespacesDelete Cluster Using eksctl
eksctl を使用して cluster を作成した場合、次の command で削除できます。
eksctl delete cluster --name my-cluster --region us-west-2Delete Cluster Using AWS CLI
AWS CLI を使用して cluster を削除するには、次の手順に従います。
- node group を削除します。
aws eks delete-nodegroup \
--cluster-name my-cluster \
--nodegroup-name my-nodegroup- Fargate profile を削除します。
aws eks delete-fargate-profile \
--cluster-name my-cluster \
--fargate-profile-name my-fargate-profile- cluster を削除します。
aws eks delete-cluster \
--name my-clusterClean Up Related Resources
EKS cluster を削除した後、次の関連 resources が残る場合があります。
- VPC と関連 resources:
aws ec2 delete-vpc --vpc-id vpc-xxxxxxxxxxxxxxxxx- IAM roles と 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- CloudWatch log groups:
aws logs delete-log-group \
--log-group-name /aws/eks/my-cluster/clusterQuiz
この章で学んだ内容を確認するため、EKS Cluster Creation - Part 5 Quiz を試してください。