Amazon Web Services 한국 블로그

Amazon EKS Anywhere 정식 출시 – 온프레미스 Kubernetes 클러스터 생성 및 관리

지난 AWS re:invent 2020에서 Amazon Elastic Container Service(Amazon ECS) AnywhereAmazon Elastic Kubernetes Service(Amazon EKS) Anywhere를 고객 데이터 센터에서 직접 배포하는 새로운 옵션을 사전 발표 했습니다.

오늘 이 자리에서 드디어 Amazon EKS Anywhere의 정식 출시를 발표하게 되었습니다. Amazon EKS Anywhere는 Amazon EKS 배포 옵션의 일종으로, 오늘부터 이를 이용하면 VMware vSphere를 사용해 Kubernetes 클러스터를 온프레미스에서 간편하게 생성, 운영할 수 있습니다. EKS Anywhere는 온프레미스로 Kubernetes 클러스터를 생성 및 운영하기 위한 설치 가능한 소프트웨어 패키지를 제공하며 클러스터 수명 주기 지원을 위한 자동화 도구를 제공합니다.

EKS Anywhere를 이용하면 이는 Amazon EKS에서 사용하는 Kubernetes의 오픈 소스 배포판인 Amazon EKS Distro의 강점을 활용해 데이터 센터에 일관된 AWS 관리 환경을 구축할 수 있습니다.

EKS Anywhere는 또한 오픈 소스입니다. 자체적으로 관리 도구를 구매하거나 빌드하여 EKS Distro 클러스터를 생성하고 운영 환경을 구성하며 소프트웨어를 업데이트하는 복잡한 작업을 줄일 수 있습니다. EKS Anywhere를 이용하면 클러스터 관리를 자동화하고 지원 비용을 절감하며 Kubernetes 클러스터를 운영하려고 여러 개의 오픈 소스나 서드 파티 도구를 이용하는 데 드는 불필요한 수고를 덜어줍니다. EKS Anywhere는 AWS에서 전면 지원합니다. 또한 EKS 콘솔을 활용하여 Kubernetes 클러스터를 모두 조회할 수도 있습니다(실행 위치 무관).

Kubernetes 클러스터에 제공하는 배포 옵션은 다음과 같습니다.

기능 Amazon EKS EKS on Outposts EKS Anywhere EKS Distro
하드웨어 AWS 관리 고객 관리
배포 유형 Amazon EC2, AWS Fargate(서버리스) EC2 on Outposts 고객 인프라
제어 영역 관리 AWS 관리 고객 관리
제어 영역 위치 AWS 클라우드 고객 측 온프레미스 또는 데이터 센터
클러스터 업데이트 제어 영역 및 데이터 영역의 관리형 현재 위치 업데이트 프로세스 CLI(데이터 영역의 경우 Flux 지원 롤링 업데이트, 제어 영역의 경우 수동 업데이트)
네트워킹 및 보안 Amazon VPC 컨테이너 네트워크 인터페이스(CNI), 여타 호환되는 서드 파티 CNI 플러그인. Cilium CNI 서드 파티 CNI 플러그인
콘솔 지원 Amazon EKS 콘솔 EKS 콘솔, EKS Connector 사용 셀프서비스
지원 AWS Support EKS Anywhere 지원 구독 셀프서비스

EKS Anywhere는 AWS 파트너가 제공하는 다양한 제품과 통합되어 고객이 EKS Anywhere의 장점을 유리하게 활용하도록 지원하며 부가적인 기능도 제공합니다. 여기에는 클러스터 업데이트를 위한 Flux, GitOps를 위한 Flux Controller, EKS에서 클러스터를 생성하고 관리하는 데 사용되는 단순한 CLI 도구인 eksctl과 네트워킹 및 보안을 위한 Cilium 등을 포함합니다.

또한 다른 분야에서 고객이 선택한 도구와 통합되도록 유연성도 보장합니다. EKS Anywhere 클러스터에 통합을 추가하려면 참고용으로 제시한 추천 서드 파티 도구 목록을 참조하세요.

Amazon EKS Anywhere 시작하기
EKS Anywhere를 시작하려면 로컬 개발과 테스트 목적으로 컴퓨터에 부트스트랩 클러스터를 하나 만들면 좋습니다. 현재로서는 이렇게 하면 프로덕션 워크로드용으로 VMWare vSphere 환경에 클러스터를 만들 수 있습니다.

eksctl을 사용해 데스크톱 컴퓨터에 클러스터를 생성해 봅시다! Mac의 homebrew를 사용하여 eksctleksctl-anywhere를 설치하면 됩니다. 아니면 EKS Anywhere 클러스터에 사용하고자 하는 몇 가지 추가적인 도구(예: kubectl 등)를 설치해도 됩니다. Linux에 관한 자세한 내용은 EKS Anywhere 설명서의 설치 안내서를 참조하세요.

$ brew install aws/tap/eks-anywhere
$ eksctl anywhere version
0.63.0

클러스터 구성을 생성하고 클러스터를 만듭니다.

$ CLUSTER_NAME=dev-cluster
$ eksctl anywhere generate clusterconfig $CLUSTER_NAME \
    --provider docker > $CLUSTER_NAME.yaml
$ eksctl anywhere create cluster -f $CLUSTER_NAME.yaml
[i] Performing setup and validations
[v] validation succeeded {"validation": "docker Provider setup is valid"}
[i] Creating new bootstrap cluster
[i] Installing cluster-api providers on bootstrap cluster
[i] Provider specific setup
[i] Creating new workload cluster
[i] Installing networking on workload cluster
[i] Installing cluster-api providers on workload cluster
[i] Moving cluster management from bootstrap to workload cluster
[i] Installing EKS-A custom components (CRD and controller) on workload cluster
[i] Creating EKS-A CRDs instances on workload cluster
[i] Installing AddonManager and GitOps Toolkit on workload cluster
[i] GitOps field not specified, bootstrap flux skipped
[i] Deleting bootstrap cluster
[v] Cluster created!

워크로드 클러스터가 생성되면 관리자 컴퓨터에 워크로드 클러스터에 대한 관리자 권한을 포함한 KUBECONFIG 파일이 저장됩니다. 이 파일을 kubectl과 함께 사용하면 워크로드를 설정하고 배포할 수 있습니다.

$ export KUBECONFIG=${PWD}/${CLUSTER_NAME}/${CLUSTER_NAME}-eks-a-cluster.kubeconfig
$ kubectl get ns
NAME                                STATUS   AGE
capd-system                         Active   21m
capi-kubeadm-bootstrap-system       Active   21m
capi-kubeadm-control-plane-system   Active   21m
capi-system                         Active   21m
capi-webhook-system                 Active   21m
cert-manager                        Active   22m
default                             Active   23m
eksa-system                         Active   20m
kube-node-lease                     Active   23m
kube-public                         Active   23m
kube-system                         Active   23m

간단한 테스트 애플리케이션을 만들어 클러스터가 제대로 작동하는지 확인할 수 있습니다. 클러스터에 새 포드를 배포하여 실행되는지 확인하고, 다음과 같은 명령으로 배포 포트를 로컬 컴퓨터에 전달합니다.

$ kubectl apply -f "https://anywhere.eks.amazonaws.com/manifests/hello-eks-a.yaml"
$ kubectl get pods -l app=hello-eks-a
NAME                                     READY   STATUS    RESTARTS   AGE
hello-eks-a-745bfcd586-6zx6b   1/1     Running   0          22m
$ kubectl port-forward deploy/hello-eks-a 8000:80
$ curl localhost:8000
⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢

Thank you for using

███████╗██╗  ██╗███████╗
██╔════╝██║ ██╔╝██╔════╝
█████╗  █████╔╝ ███████╗
██╔══╝  ██╔═██╗ ╚════██║
███████╗██║  ██╗███████║
╚══════╝╚═╝  ╚═╝╚══════╝

 █████╗ ███╗   ██╗██╗   ██╗██╗    ██╗██╗  ██╗███████╗██████╗ ███████╗
██╔══██╗████╗  ██║╚██╗ ██╔╝██║    ██║██║  ██║██╔════╝██╔══██╗██╔════╝
███████║██╔██╗ ██║ ╚████╔╝ ██║ █╗ ██║███████║█████╗  ██████╔╝█████╗  
██╔══██║██║╚██╗██║  ╚██╔╝  ██║███╗██║██╔══██║██╔══╝  ██╔══██╗██╔══╝  
██║  ██║██║ ╚████║   ██║   ╚███╔███╔╝██║  ██║███████╗██║  ██║███████╗
╚═╝  ╚═╝╚═╝  ╚═══╝   ╚═╝    ╚══╝╚══╝ ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝╚══════╝

You have successfully deployed the hello-eks-a pod hello-eks-a-c5b9bc9d8-qp6bg

For more information check out
https://anywhere.eks.amazonaws.com

⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢⬡⬢

EKS Anywhere는 프로덕션 클러스터에 VMWare vSphere 버전 7.0 이상도 지원합니다. 프로덕션 클러스터를 생성하려면 VMware vSphere 배포 요구 사항을 참조하고 EKS Anywhere 설명서의 프로덕션 클러스터 생성을 확인하세요. 이것은 컴퓨터에서 테스트 클러스터를 생성하는 프로세스와 거의 같습니다.

프로덕션 등급 EKS Anywhere 클러스터에는 vSphere에 적어도 세 개의 제어 영역 노드와 세 개의 작업자 노드를 포함해야 고가용성과 롤링 업그레이드를 보장할 수 있습니다. 크기 조정, 업데이트, 클러스터 삭제와 같은 보편적인 운영 작업에 관한 자세한 내용은 EKS Anywhere 설명서의 클러스터 관리를 참조하세요.

EKS Connector – 공개 평가판
EKS Connector는 각종 Kubernetes 클러스터를 EKS 콘솔에 연결해주는 새 기능입니다. EC2의 자체 관리형 클러스터, 온프레미스로 실행 중인 EKS Anywhere 클러스터 및 AWS 외부에서 실행 중인 다른 Kubernetes 클러스터 등 모든 Kubernetes 클러스터를 EKS 콘솔에 연결할 수 있습니다. 이렇게 하면 연결된 모든 클러스터를 중앙에서 간편하게 조회할 수 있습니다.

EKS Anywhere 클러스터를 연결하려면 EKS 콘솔Clusters(클러스터) 섹션으로 이동해 Add cluster(클러스터 추가) 드롭다운 메뉴에서Register(등록)를 선택합니다.

클러스터 이름을 정의한 다음 Provider(공급자)를 선택합니다(적절한 공급자를 찾을 수 없는 경우, Other(기타) 선택).

클러스터를 등록하면 Cluster Overview(클러스터 개요) 페이지로 리디렉션됩니다. Download YAML file(YAML 파일 다운로드)을 선택하여 클러스터를 EKS에 연결하는 데 필요한 모든 인프라를 배포할 Kubernetes 구성 파일을 가져옵니다.

다운로드된 eks-connector.yaml과 설명서의 EKS Connector에서 가져온 eks-connector-binding.yaml 역할 바인딩 파일을 적용합니다. EKS Connector가 프록시 역할을 하여 EKS 콘솔 요청을 클러스터의 Kubernetes API 서버로 전달하므로, 사용자는 커넥터의 서비스 계정을 EKS Connector Role과 연결하여 AWS IAM 엔터티 역할을 맡을 권한을 부여해야 합니다.

$ kubectl apply -f eks-connector.yaml
$ kubectl apply -f eks-connector-binding.yaml

등록이 완료되면 클러스터 상태가 ACTIVE여야 합니다.

$ eks describe-cluster --name "my-first-registered-cluster" --region ${AWS_REGION}

예상 출력은 다음과 같습니다.

{
    "cluster": {
    "name": "my-first-registered-cluster",
    "arn": "arn:aws:eks:{EKS-REGION}:{ACCOUNT-ID}:cluster/my-first-registered-cluster", 
    "createdAt": 1627672425.765,
    "connectorConfig": {
    "activationId": "xxxxxxxxACTIVATION_IDxxxxxxxx", 
    "activationExpiry": 1627676019.0,
    "provider": "OTHER",
     "roleArn": "arn:aws:iam::{ACCOUNT-ID}:role/eks-connector-agent"
    },
  "status": "ACTIVE", "tags": {}
  } 
}

EKS Connector는 Amazon EKS가 제공되는 모든 AWS 리전에서 공개 평가판으로 제공 중입니다. 최소한의 대기 시간을 보장하려면 클러스터 위치와 가장 가까운 리전을 선택하세요. 자세한 내용은 Amazon EKS 사용 설명서의 EKS Connector를 참조하세요.

알아야 할 사항
EKS Anywhere에 관해 유의해야 할 점을 몇 가지 소개합니다.

연결성: 완전 연결, 부분 연결 해제 및 완전 연결 해제의 세 가지 연결성 옵션이 있습니다. 완전 연결 및 부분 연결 해제 연결성을 선택하는 경우, EKS Anywhere 클러스터를 EKS Connector를 통해 EKS 콘솔에 연결하고 클러스터 구성과 워크로드 상태를 확인할 수 있습니다. AWS Controllers for Kubernetes(ACK)를 통해 AWS 서비스를 활용할 수 있습니다. AWS System Manager Agents를 사용해 EKS Anywhere 인프라 리소스를 연결하고 SSM 콘솔을 사용해 이를 조회하면 됩니다.

보안 모델: AWS는 Shared Responsibility(공동 책임) 모델을 따르므로 클라우드 보안은 AWS 책임이고 클라우드 의 보안은 고객 책임입니다. 다만 EKS Anywhere는 오픈 소스 도구이므로 책임 분포도가 Amazon EKS와 같은 관리형 클라우드 서비스와는 다릅니다. AWS에는 안전한 도구를 구축하여 제공할 책임이 있습니다. 이 도구로 처음에 안전한 Kubernetes 클러스터를 제공합니다. 자세한 내용은 EKS Anywhere 설명서의 보안 모범 사례를 참조하세요.

AWS Support: AWS Enterprise Support가 있어야 Amazon EKS Anywhere Support 구독을 구매할 수 있습니다. EKS Anywhere 클러스터에 비즈니스 지원을 받고자 하는 경우, 테크니컬 어카운 관리자(TAM)에게 자세한 정보를 문의하시기 바랍니다. 또한 EKS Anywhere는 오픈 소스 커뮤니티에서 지원하기도 합니다. 곤란한 점이 발생하면 문제를 제기하세요. 누군가가 최대한 빨리 답을 제안해줍니다.

정식 출시
Amazon EKS Anywhere는 지금 정식 출시되어 온프레미스 인프라와 함께 EKS 기능을 활용할 수 있으며 파트너 통합, 관리형 애드온 및 큐레이팅한 오픈 소스 도구 도입 기간을 단축해줍니다.

라이브 데모, 질문 및 답변(Q&A)을 통해 자세한 내용을 알아보려면 오는 9월 13일에 진행되는 Containers from the Couch에 함께해주세요. 클러스터 만드는 법에 관한 데모를 볼 수 있으며 크기 조정, 클러스터 버전 업그레이드 및 GitOps 관리를 위한 관리자 워크플로도 보여드립니다.

기존 AWS Support 담당자, Amazon EKS의 AWS 포럼이나 Github의 컨테이너 로드맵을 통해 피드백을 보내주세요.

Channy