관리 콘솔에서 EKS 클러스터 생성시 Amazon Mangaged VPC에 Control Plane이 구성되고, EC2나 오토 스케일링이나 ELB 등이 자동으로 구성된다.
EKS는 AWS 자원을 구성하기 위한 권한이 필요하게 된다. -> IAM 역할을 생성하는 작업이 선행되어 Amazon EKS에 자격 증명을 수행한 후 생성 작업이 진행된다.
EKS 관리용 인스턴스인 myeks-host에 생성된 EKS 클러스터 정보를 업데이트 해야한다. -> EKS 클러스터의 보안 정보가 있어야 kubectl을 통해 명령을 내릴 수 있기 때문이다.
또한 관리형 노드 그룹을 구성함에 있어서 다양한 AWS 자원을 동적으로 구성하기 위해 IAM 역할이 필요하다. -> 마찬가지로 IAM 역할을 생성하는 작업이 선행되어 Amazon EKS에 자격 증명을 수행한 후 생성 작업이 진행된다.
IAM 역할을 생성한다.
신뢰 정책의 STS는 보안 토큰을 통해 AWS 외부 자격을 증명하는 것으로 AssumRole은 AWS 자원에 접근할 수 있는 자격 증명을 의미한다.
나머지는 기본 설정으로 역할을 생성해준다.
출처: 인프런, Ongja_CloudNet@, ⌜CloudNet@와 함께하는 Amazon EKS 기본 강의⌟
AWS EKS는 기본적으로 클러스터의 고가용성과 안정성을 보장하기 위해 컨트롤 플레인(제어 플레인) 컴포넌트들을 여러 가용 영역(AZ)에 분산 배치하게 된다.
컨트롤 플레인은 AWS Managed VPC에 할당되어 아마존이 관리하게 된다.
클러스터 엔드포인트 엑세스를 퍼블릭으로 설정하여 인터넷 게이트웨이도 같이 구성된다.
2개의 가용 영역에서 Control Plane 자원인 API 서버, 컨트롤러, 스케쥴러가 각각 생성되고 또 다른 서브넷이 etcd가 생성된다.
부하 분산을 위해 ELB가 구성되고, 오토 스케일링 서비스도 구성된다.
EKS 관리용 인스턴스인 myeks-host에 생성된 EKS 클러스터 정보를 업데이트 해준다.
# EKS 클러스터 정보 업데이트
aws eks update-kubeconfig --region $AWS_DEFAULT_REGION --name $CLUSTER_NAME
# kubeconfig 정보 확인
cat ~/.kube/config | yh
# kube_ps1 비활성화
kubeoff
# 생성한 Kubernetes 서비스 확인
kubectl get svc
EKS 관리형 노드 그룹이 AWS 자원을 관리하기 위해 IAM 역할이 필요하다. EKS 노드 IAM 역할을 awscli를 통해 생성해보자.
# EKS 노드 IAM 역할의 신뢰 대상 지정 파일 생성
cat <<EOT > node-role-trust-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
EOT
# EKS 노드 IAM 역할 생성 (eksNodeRole)
aws iam create-role \
--role-name eksNodeRole \
--assume-role-policy-document file://"node-role-trust-policy.json"
# EKS 노드 IAM 역할에 정책 연결
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy \
--role-name eksNodeRole
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly \
--role-name eksNodeRole
aws iam attach-role-policy \
--policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy \
--role-name eksNodeRole
# EKS 노드 IAM 역할 확인
aws iam get-role --role-name eksNodeRole | jq
# EKS 노드 IAM 역할에 연결된 정책 확인
aws iam list-attached-role-policies --role-name eksNodeRole | jq
출처: 인프런, Ongja_CloudNet@, ⌜CloudNet@와 함께하는 Amazon EKS 기본 강의⌟
노드 그룹이 사용자 VPC인 myeks VPC에 생성된다.
생성되는 노드의 인스턴스는 오토 스케일 그룹에 의해 자동으로 구성하고 유지된다.
API 서버와 노드 간의 통신을 위한 EKS owend ENI가 구성된다.