AWS Controllers for Kubernetes(ACK)를 사용하여 Kubernetes에서 AWS 리소스 배포 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

AWS Controllers for Kubernetes(ACK)를 사용하여 Kubernetes에서 AWS 리소스 배포

AWS Controllers for Kubernetes(ACK)를 사용하면 Kubernetes에서 직접 AWS 서비스 리소스를 정의 및 관리할 수 있습니다. AWS Controllers for Kubernetes(ACK)를 사용하면 친숙한 Kubernetes API 및 도구를 사용하여 애플리케이션 워크로드와 함께 Kubernetes 사용자 지정 리소스를 사용하여 워크로드 리소스 및 클라우드 인프라를 관리할 수 있습니다.

EKS 기능을 사용하면 ACK는 AWS에서 완전하게 관리되므로 클러스터에서 ACK 컨트롤러를 설치, 유지 관리 및 조정할 필요가 없습니다.

ACK 작동 방식

ACK는 Kubernetes 사용자 지정 리소스 사양을 AWS API 직접 호출로 변환합니다. AWS 서비스 리소스를 나타내는 Kubernetes 사용자 지정 리소스를 생성, 업데이트 또는 삭제하면 ACK는 AWS 리소스를 생성, 업데이트 또는 삭제하는 데 필요한 AWS API 직접 호출을 수행합니다.

ACK에서 지원하는 각 AWS 리소스에는 구성을 지정하기 위한 Kubernetes API 스키마를 정의하는 자체 사용자 지정 리소스 정의(CRD)가 있습니다. 예를 들어 ACK는 버킷, 버킷 정책 및 기타 S3 리소스를 포함하여 S3에 대한 CRD를 제공합니다.

ACK는 AWS 리소스의 상태를 Kubernetes 사용자 지정 리소스에 정의된 원하는 상태로 지속적으로 조정합니다. 리소스가 원하는 상태에서 드리프트되면 ACK는 이를 감지하고 수정 조치를 수행하여 다시 정렬합니다. Kubernetes 리소스에 대한 변경 사항은 AWS 리소스 상태에 즉시 반영되지만, 업스트림 AWS 리소스 변경에 대한 수동 드리프트 감지 및 수정에는 최대 10시간(재동기화 기간)이 걸릴 수 있습니다. 하지만 보통은 훨씬 더 빠릅니다.

S3 버킷 리소스 매니페스트 예제

apiVersion: s3.services.k8s.aws/v1alpha1 kind: Bucket metadata: name: my-ack-bucket spec: name: my-unique-bucket-name

이 사용자 지정 리소스를 클러스터에 적용하면 ACK는 계정에 Amazon S3 버킷(아직 존재하지 않는 경우)을 생성합니다. 기본이 아닌 스토리지 티어를 지정하거나 정책을 추가하는 등 이 리소스에 대한 후속 변경 사항은 AWS의 S3 리소스에 적용됩니다. 이 리소스가 클러스터에서 삭제되면 AWS의 S3 버킷이 기본적으로 삭제됩니다.

ACK의 이점

ACK는 Kubernetes 네이티브 AWS 리소스 관리를 제공하므로 애플리케이션에 사용하는 것과 동일한 Kubernetes API 및 도구를 사용하여 AWS 리소스를 관리할 수 있습니다. 이 통합 접근 방식에서는 여러 도구 사이를 전환하거나 별도의 코드형 인프라 시스템을 학습할 필요가 없으므로 인프라 관리 워크플로를 단순화합니다. Kubernetes 매니페스트에서 AWS 리소스를 선언적으로 정의하여 기존 개발 프로세스와 원활하게 통합되는 GitOps 워크플로 및 인프라를 코드 사례로 사용할 수 있습니다.

ACK는 AWS 리소스의 원하는 상태를 실제 상태와 지속적으로 조정하여 드리프트를 수정하고 인프라 전반에서 일관성을 보장합니다. 이러한 지속적 조정은 선언된 구성과 일치하도록 AWS 리소스에 대한 대역 외 필수 변경 사항을 자동으로 되돌려 코드형 인프라의 무결성을 유지 관리합니다. 여러 AWS 계정 및 리전에서 리소스를 관리하도록 ACK를 구성하여 추가 도구 없이도 복잡한 다중 계정 아키텍처를 지원할 수 있습니다.

다른 인프라 관리 도구에서 마이그레이션하는 조직의 경우 ACK는 리소스 채택을 지원하므로 기존 AWS 리소스를 다시 생성하지 않고도 ACK 관리를 이에 적용할 수 있습니다. 또한 ACK는 수정 액세스 없이도 AWS 리소스 관찰을 위한 읽기 전용 리소스 및 Kubernetes AWS 리소스가 클러스터에서 삭제된 경우에도 선택적으로 리소스를 유지하기 위한 주석을 제공합니다.

ACK의 EKS 기능에 대해 자세히 알아보고 시작하려면 ACK 개념EKS에 대한 ACK 고려 사항 섹션을 참조하세요.

지원되는 AWS 서비스

ACK는 다양한 AWS 서비스(다음을 포함하되 이에 국한되지 않음)를 지원합니다.

  • Amazon EC2

  • Amazon S3

  • Amazon RDS

  • Amazon DynamoDB

  • Amazon ElastiCache

  • Amazon EKS

  • Amazon SQS

  • Amazon SNS

  • AWS Lambda

  • AWS IAM

정식 버전인 업스트림으로 나열된 모든 AWS 서비스는 ACK의 EKS 기능에서 지원됩니다. 자세한 내용은 full list of AWS services supported를 참조하세요.

다른 EKS 관리형 기능과 통합

ACK는 다른 EKS 관리형 기능과 통합됩니다.

  • Argo CD: Argo CD를 사용하여 여러 클러스터에서 ACK 리소스 배포를 관리하여 AWS 인프라에 대한 GitOps 워크플로를 지원합니다.

    • ACK는 ArgoCD와 페어링할 때 GitOps의 이점을 확장하지만, ACK는 git과의 통합이 필요하지 않습니다.

  • Kube Resource Orchestrator(kro): kro를 사용하여 ACK 리소스에서 복잡한 리소스를 구성하여 리소스 관리를 단순화하는 상위 수준 추상화를 생성합니다.

    • Kubernetes 리소스와 AWS 리소스를 모두 정의하는 kro를 사용하여 복합 사용자 지정 리소스를 생성할 수 있습니다. 팀원은 이러한 사용자 지정 리소스를 사용하여 복잡한 애플리케이션을 빠르게 배포할 수 있습니다.

ACK 시작하기

ACK의 EKS 기능을 시작하는 방법:

  1. ACK가 사용자를 대신하여 AWS 리소스를 관리하는 데 필요한 권한이 있는 IAM 기능 역할을 생성 및 구성하세요.

  2. AWS 콘솔, AWS CLI 또는 기본 코드형 인프라를 통해 EKS 클러스터에서 ACK 기능 리소스를 생성하세요.

  3. 클러스터에 Kubernetes 사용자 지정 리소스를 적용하여 Kubernetes에서 AWS 리소스 관리를 시작하세요.