Amazon Web Services 한국 블로그

Amazon EKS Windows 컨테이너 지원 정식 출시

올해 3월에 Amazon Elastic Kubernetes Service의 Windows 컨테이너 지원에 대한 미리 보기가 발표되었고 초대를 받은 고객들이 실험 후 피드백을 제공했습니다. 이 피드백에 따라 수 개월에 걸쳐 제품을 다듬은 결과, 오늘 Windows 컨테이너 지원이 정식 출시되었습니다.

Windows 서버에서 실행되도록 설계된 애플리케이션을 구축하고 지원하는 많은 개발 팀이 이제 이 발표를 통해 Linux 애플리케이션과 함께 이러한 애플리케이션을 Kubernetes에 배포할 수 있게 되었습니다. 이 기능 덕에 시스템 로깅, 성능 모니터링 및 코드 배포 파이프라인에서의 일관성이 개선될 것입니다.

Amazon Elastic Kubernetes Service는 Kubernetes 클러스터의 구축, 보안, 운영 및 유지 관리 프로세스를 간소화하여 조직에서 Kubernetes의 운영 대신 애플리케이션 구축에 집중할 수 있도록 합니다. AWS는 자랑스럽게도 Kubernetes 기반 Windows 컨테이너를 정식으로 출시한 첫 번째 공급자입니다. 앞으로 고객은 Windows와 Linux 워크로드에서 모두 Kubernetes가 제공하는 비즈니스 이점을 누릴 수 있을 것입니다.

이 기능의 작동 방식을 보여드리려면 Amazon Elastic Kubernetes Service 클러스터가 필요합니다. 여기에서는 새로운 클러스터를 생성하지만 Kubernetes 버전 1.14 이상을 사용하는 모든 클러스터에서 이 기능을 사용할 수 있습니다. 클러스터를 구성한 후에는 새 Windows 노드 몇 개를 추가하고 Windows 애플리케이션을 배포합니다. 마지막으로는 애플리케이션을 테스트하여 예상대로 작동하는지 확인합니다.

클러스터를 설정하는 가장 간단한 방법은 EKS를 위한 공식 CLI 도구인 eksctl을 사용하는 것입니다. 아래의 명령은 demo-windows-cluster라는 이름의 클러스터를 생성하고 Linux 노드 2개를 클러스터에 추가합니다. 현재 Windows 노드와 Pod 네트워킹을 지원하려면 1개 이상의 Linux 노드가 필요하지만 저는 고가용성을 위해 2개를 선택했습니다. 여러분도 이렇게 하는 것이 좋습니다.

eksctl create cluster \
--name demo-windows-cluster \
--version 1.14 \
--nodegroup-name standard-workers \
--node-type t3.medium \
--nodes 2 \
--nodes-min 1 \
--nodes-max 3 \
--node-ami auto

eksctl 버전 0.7부터는 install-vpc-controllers라는 새로운 유틸리티가 추가되었습니다. 이 유틸리티는 필요한 VPC 리소스 컨트롤러와 VPC 승인 Webhook를 클러스터에 설치합니다. 이러한 구성 요소는 Linux 노드에서 실행되며 Windows 노드의 수신 Pod에 대한 네트워킹을 지원합니다. 이 도구를 사용하려면 다음 명령을 실행합니다.

eksctl utils install-vpc-controllers --name demo-windows-cluster --approve

eksctl을 사용하지 않으려는 경우 설명서의 지침에 따라 PowerShell 또는 Bash 스크립트를 실행하여 동일한 결과를 얻을 수 있습니다.

다음으로 Windows 노드 몇 개를 클러스터에 추가해야 합니다. eksctl을 사용하여 클러스터를 생성하는 경우 아래의 명령을 사용합니다. 기존 클러스터에서 작업하는 경우 설명서에서 Windows 노드 그룹을 생성하고 클러스터에 연결하는 방법에 대한 지침을 확인하십시오.

eksctl create nodegroup \
--region us-west-2 \
--cluster demo-windows-cluster \
--version 1.14 \
--name windows-ng \
--node-type t3.medium \
--nodes 3 \
--nodes-min 1 \
--nodes-max 4 \
--node-ami-family WindowsServer2019FullContainer \
--node-ami ami-0f85de0441a8dcf46

해당 지역의 최신 Windows AMI ID를 찾으려면 AWS SSM Parameter Store에 쿼리하면 됩니다. 이 작업을 수행하기 위한 지침은 Amazon EKS 설명서에서 찾을 수 있습니다.

이제 노드가 설정되어 실행되고 있으므로 샘플 애플리케이션을 배포할 수 있습니다. AWS 컨테이너 로드맵 GitHub 리포지토리의 YAML 파일을 사용하겠습니다. 이 파일은 IIS를 실행하는 단일 컨테이너로 구성된 앱을 구성합니다. IIS는 기본적인 HTML 페이지를 호스팅합니다.

kubectl apply -f https://raw.githubusercontent.com/aws/containers-roadmap/master/preview-programs/eks-windows-preview/windows-server-IIS.yaml

이러한 Windows 컨테이너는 Linux 컨테이너보다 약간 큰 경우가 많으므로 다운로드하고 시작하는 데 시간이 조금 더 걸립니다. 다음 명령을 실행하여 배포 프로세스를 모니터링합니다.

kubectl get pods -o wide --watch

Pod가 [Running] 상태로 전환될 때까지 약 5분간 기다립니다. 다음 명령을 실행합니다. 이 명령을 실행하면 Pod에 연결되고 컨테이너 안에서 PowerShell 세션이 시작됩니다. windows-server-iis-66bf9745b-xsbsx 속성은 Pod의 이름입니다. 여러분이 작업할 때는 이 이름이 달라집니다.

kubectl exec -it windows-server-iis-66bf9745b-xsbsx powershell

PowerShell 세션에 연결되면 컨테이너 안에서 터미널을 사용할 때와 같이 PowerShell을 실행할 수 있습니다. 따라서 아래의 명령을 실행하면 뉴스 블로그에 대한 몇몇 정보를 얻을 수 있습니다.

Invoke-WebRequest -Uri https://thinkwithwp.com/blogs/aws/ -UseBasicParsing

PowerShell 세션을 종료하려면 exit를 입력합니다. 그러면 터미널로 돌아갑니다. 터미널에서 샘플 애플리케이션으로 배포한 서비스를 검사할 수 있습니다. 다음 명령을 입력합니다.

kubectl get svc windows-server-iis-service

서비스를 설명하는 다음과 같은 출력이 반환됩니다.

NAME				TYPE 		CLUSTER-IP 	EXTERNAL-IP 				PORT(S) 	AGE
windows-server-iis-service 	LoadBalancer 	xx.xx.xxx.xxx 	unique.us-west-2.elb.amazonaws.com 	80:32750/TCP 	54s

External IP는 로드 밸런서의 주소입니다. 이 URL을 브라우저에 입력하고 /default.html을 추가하면 샘플 애플리케이션 배포로 생성된 HTML 페이지가 로드됩니다. 이 페이지에 대한 서비스는 앞서 배포한 Windows 컨테이너 중 하나의 IIS 서버를 통해 제공됩니다.

Hello EKS가 표시된 웹 사이트

이제 Windows 컨테이너가 Amazon Elastic Kubernetes Service에서 실행되고 있습니다. 자세한 내용은 설명서를 참조하십시오. Amazon EKS Windows 컨테이너 지원은 Amazon EKS가 제공되는 지역과 동일한 모든 지역에서 제공되며 여기에서 요금 세부 정보를 확인할 수 있습니다.

Amazon Elastic Kubernetes Service 로드맵은 장기간 계속되지만 그 과정에서 사용자 피드백을 통해 우선 순위 프로세스를 조정할 계획입니다. 이 새로운 기능을 살펴보고 여러분의 의견을 알려주시기 바랍니다.

– Matic Beeby, AWS Tech Evangelist