Amazon Web Services 한국 블로그

Amazon EKS Distro: Amazon EKS에서 사용하는 오픈소스 Kubernetes 배포판

그동안 고객사들은 Kubernetes 인프라 관리의 무거운 부담을 덜면서 자신의 고객을 위한 혁신적 솔루션 개발에 더 집중하고 싶다는 피드백을 AWS에 전달했습니다. 이것이 바로 Amazon Elastic Kubernetes Service(EKS)가 인기 있었던 이유였습니다. 고객이 혜택을 그대로 누리면서도 Kubernetes의 관리 부담을 줄였습니다.

그러나 모든 고객이 Amazon EKS를 사용하지는 않습니다. 예를 들어, 기존 인프라 투자, 데이터 상주 요구 사항 또는 규정 준수 의무가 있어서 Kubernetes를 온프레미스에서 운영할 수도 있습니다. 이러한 상황에 처한 고객사들은 업데이트를 추적하고 호환되는 Kubernetes 버전과 기본 구성 요소의 복잡한 매트릭스를 파악하며 호환성을 테스트하고 3 ~ 4개월 단위로 반복될 수 있는 Kubernetes 릴리스 케이던스를 맞추기 위해 많은 노력이 소비되고 있다는 피드백을 전달했습니다. 고객이 새 버전을 테스트 및 검증하는 속도를 유지할 수 없는 경우에는 중요한 보안 패치가 없는 상태로 Kubernetes의 변경 사항, 버전 호환성 문제를 위반하고 지원되지 않는 버전의 Kubernetes를 실행할 수 있는 위험이 있습니다.

AWS는 Amazon EKS를 제공하면서 많은 사실을 알게 되었고, Kubernetes에 운영 보안, 안정성 및 신뢰성을 제공하는 방법을 심층적으로 이해할 수 있었습니다. 오늘 우리는 이 지식을 활용하여 구축한 Amazon EKS Distro를 공유합니다.

EKS DistroAmazon EKS에서 배포한 것과 동일한 Kubernetes 배포판 버전으로서, 사용자는 이를 사용하여 원하는 어디서든 자신의 Kubernetes 클러스터를 수동으로 생성할 수 있습니다. EKS Distro는 Amazon EKS에서 사용하는 오픈 소스 Kubernetes의 설치 가능한 빌드 및 코드를 제공합니다. 여기에는 종속성 및 AWS에서 관리하는 패치 등이 포함됩니다. 클러스터 생성 및 관리 도구를 선택하여 Amazon Elastic Compute Cloud(EC2), 기타 클라우드 및 온프레미스 하드웨어에서 AWS에 EKS Distro 클러스터를 생성할 수 있습니다.

EKS Distro는 업스트림 오픈 소스 Kubernetes 구성 요소와 클러스터 생성에 필요한 구성 데이터베이스, 네트워크, 스토리지 구성 요소 등의 타사 도구로 구성되어 있습니다. 이는 Kubernetes 제어부 구성 요소(kube-controller-manager, etcd 및 CoreDNS)와 Kubernetes 작업자 노드 구성 요소(kubelet, CNI 플러그인, CSI Sidecar 이미지, Metrics Server 및 AWS-IAM-authenticator)을 포함합니다.

클러스터 구축
EKS Distro 저장소는 Kubernetes 클러스터를 구축하고 생성하는 데 필요한 모든 것을 갖추고 있습니다. 저장소에는 EKS Distro의 원시 문서가 있으며, https://distro.eks.amazonaws.com에서 구축 및 게시했습니다.

새 클러스터를 생성하려면 설명서의 이 섹션을 따릅니다. 이 설명서에서는 오픈 소스 도구 kOps를 사용하여 모든 부품을 구축하고 궁극적으로 클러스터를 AWS의 일부 EC2 인스턴스에 배포하는 방법을 설명합니다. EKS Distro는 kOps 이외에도 다른 많은 도구에 사용할 수 있습니다. 자세한 내용은 설명서의 파트너 섹션에서 확인할 수 있으며, 많은 파트너가 오늘 해당 도구를 사용하여 배포하는 방법을 설명하는 블로그를 공개하고 있습니다.

설명서에서는 클러스터를 구축하기 전에 여러 컨테이너 이미지를 확보해야 한다고 설명합니다. EKS Distro 컨테이너 저장소에서 가져오거나 타르볼로 다운로드하거나 처음부터 빌드할 수 있습니다. 컨테이너를 처음부터 빌드하고 빌드 설명서를 따르겠습니다. 한 시간 후 20개의 컨테이너를 생성하여 Amazon Elastic Container Registry에 푸시했습니다.

지침에서는 빌드 및 배포 단계 모두에 필요한 몇 가지 필수 구성 요소를 자세히 설명하고 있습니다. 설명서에 따라 제안된 모든 도구를 설치합니다.

다음에 설명서에 따라 EKS Distro 저장소의 개발 폴더에서 kops.sh 스크립트를 찾습니다. 스크립트를 실행하면 전체 주소 도메인 이름(FQDN)을 입력하라는 메시지가 표시됩니다. newsblog.thebeebs.net를 제공합니다.

이 스크립트는 kOps에 필요한 아티팩트를 저장하기 위해 내 계정에 S3 버킷을 만드는 등, 몇 가지 작업을 수행합니다. 또한 newsblog.thebeebs.net.yaml이라는 파일을 생성합니다. 이 파일을 편집하고 컨테이너 이미지 URL을 Elastic Container Registry에서 내 이미지를 가리키는 URL로 바꿉니다.

설명서를 계속 따라 수행하면 이제 일부 kOps 명령을 실행하여 클러스터를 생성하라고 지시합니다. 이 명령은 이전 단계의 출력인 newsblog.thebeebs.net.yaml 파일을 사용합니다.

CLUSTER_NAME=newsblog.thebeebs.net
kops create -f ./$CLUSTER_NAME.yaml
kops create secret --name $CLUSTER_NAME sshpublickey admin -i ~/.ssh/id_rsa.pub
kops update cluster $CLUSTER_NAME --yes
kops validate cluster --wait 10m
cat << EOF > aws-iam-authenticator.yaml
api 버전: v1
종류: ConfigMap
메타데이터:
  이름: aws-iam-authenticator
  네임스페이스: kube-system
  라벨:
    k8s-app: aws-iam-authenticator
데이터:
  config.yaml: |
    clusterID: $CLUSTER_NAME
EOF

이 명령 중 하나는 aws-iam-authenticator.yaml 파일을 생성합니다. 이 파일을 aws-iam-authenticator와 올바르게 작동하도록 내 kubernetes 클러스터에 적용합니다.

kubectl apply -f aws-iam-authenticator.yaml

이제 kubectl를 사용하여 모든 네임 스페이스를 열거함으로써 Kubernetes 클러스터가 EKS Distro 이미지를 사용하고 있는지 확인할 수 있습니다.

kubectl get po --all-namespaces -o json | jq -r .items[].spec.containers[].image | sort

마지막으로 kOps를 사용하고 삭제 명령을 실행하여 클러스터를 삭제합니다.

kops delete -f ./newsblog.thebeebs.net.yaml --yes

업데이트
EKS Distro
새 버전은 Amazon EKS 출시 후에 곧 출시될 예정입니다. 재현 가능한 빌드의 소스 코드, 오픈 소스 도구 및 설정이 제공되므로 EKS DistroAmazon EKS에 의해 배포된 항목과 일치하는지 확인할 수 있습니다.

주요 사항
EKS Distro에서는 Amazon EKS에서 사용하는 것과 동일한 버전의 Kubernetes 및 포인트 릴리스를 지원합니다. EKS Distro는 운영 체제 공급업체가 Kubernetes와의 작업을 테스트 및 확인한 것과 동일한 업스트림 버전의 Kubernetes 및 종속성을 제공합니다. 이는 EKS Distro가 이미 CentOS, Canonical Ubuntu, Red Hat Enterprise Linux, Suse 등과 같은 일반 운영 체제에서 작동할 수 있다는 것을 의미합니다.

가격 및 지원
EKS Distro는 오픈 소스 프로젝트이며 무료로 배포됩니다. 더 나은 결과 달성을 위해 GitHub에서 당사와 협력하십시오. 예를 들어, 문제가 발견되는 경우에 제출하거나 끌어오기 요청을 생성해 주시면 최선의 노력을 기울여서 문제를 해결하겠습니다. 파트너는 Amazon 파트너 네트워크 프로그램을 통해 지원을 받게 되며, 파트너를 통해 EKS Distro를 채택한 고객사는 해당 공급자의 지원을 받게 됩니다.

향후 계획
2021년에는 Kubernetes 클러스터를 온프레미스에서 생성 및 운영할 수 있는 설치형 소프트웨어 패키지와 클러스터 수명 주기 지원을 위한 자동화 도구를 제공하는 EKS Anywhere를 출시할 예정입니다. 이 제품은 가동 중단을 최소화하면서 프로덕션 클러스터를 중앙 집중식으로 백업, 복구, 패치 및 업그레이드할 수 있습니다. EKS AnywhereEKS Distro를 기반으로 클러스터를 생성하며, 따라서 Amazon EKS와 버전 일관성을 확보할 수 있습니다. 이 버전 및 툴링 일관성은 지원 비용을 절감하며, 온프레미스 및 Amazon EKS 클러스터를 관리하기 위해 여러 도구를 사용하는 중복 작업을 해소할 수 있습니다.

정식 출시
EKS Distro는 오늘 다운로드할 수 있으며, GitHub에서 소스 및 빌드를 구할 수 있습니다. 시작하는 데 도움을 얻으려면 설명서를 확인하십시오.

행복한 배포되세요!

— Martin