R&D/클라우드

Kubernetes Cluster API

sunshout1 2025. 4. 27. 04:27

Cluster API (CAPI)는

"Kubernetes 클러스터 자체를 Kubernetes 스타일로 선언적으로 관리하기 위한 표준 API" 입니다.

Cluster API는 무엇을 하는가

Cluster API는 쿠버네티스 클러스터를 쿠버네티스 스타일로, 즉 선언적으로 관리할 수 있도록 해주는 표준입니다.
Deployment, Service 같은 리소스를 YAML로 정의하듯이,
Cluster, Machine, MachineSet 같은 리소스를 정의하고 관리할 수 있게 만들어줍니다.

쉽게 말해, 쿠버네티스 클러스터를 하나 더 만들고 싶다면,
명령어 몇 개를 입력하고 YAML 파일을 적용하는 것만으로 자동으로 새로운 클러스터가 생성됩니다.
그리고 업그레이드나 노드 교체 역시 수작업 없이 진행할 수 있습니다.

Cluster API를 사용하면 무엇이 달라지는가

Cluster API가 없던 시절에는,
새 클러스터를 만들 때마다 수작업으로 VM을 생성하고, 네트워크를 설정하고, 쿠버네티스를 부트스트랩하는 과정을 거쳐야 했습니다.
심지어 클라우드 사업자마다 이 과정은 제각각이었고, 온프레미스 환경에서는 더 많은 커스터마이징이 필요했습니다.

Cluster API를 도입하면 이 모든 과정을 하나의 통일된 방식으로 선언할 수 있습니다.
VM을 만들든, 물리 서버를 등록하든, 기본 흐름은 같고 YAML 파일만 다를 뿐입니다.

그 결과, 클러스터 운영이 표준화되고, 자동화가 가능해지며, GitOps 같은 운영 방식도 자연스럽게 적용할 수 있습니다.

 

 

Cluster API는 몇 가지 핵심 리소스로 클러스터를 구성합니다.

  • Cluster: 전체 클러스터를 나타내는 리소스입니다. 클러스터의 네트워크, 컨트롤 플레인 정보 등을 정의합니다.
  • Machine: 클러스터 내 하나의 노드를 나타냅니다. 하나의 Machine이 하나의 VM이나 서버에 대응합니다.
  • MachineSet: 여러 개의 Machine을 관리하는 리소스입니다. ReplicaSet과 비슷한 역할을 합니다.
  • MachineDeployment: MachineSet을 업그레이드하거나 롤링 업데이트를 관리할 때 사용합니다.

이 리소스들을 조합하면, 클러스터 생성, 확장, 업그레이드, 축소까지 모든 생명주기를 관리할 수 있습니다.

Cluster API는 어떻게 동작하는가

Cluster API는 별도의 Management Cluster 안에 설치됩니다.
Management Cluster에는 Cluster API Core Controller와 Infrastructure Provider Controller 같은 컴포넌트가 설치되어 있습니다.
사용자는 이 Management Cluster에 YAML을 적용해서 새로운 클러스터 생성을 요청합니다.

그러면 Cluster API가 Infrastructure Provider를 통해 실제 클라우드(VMware, AWS, Azure, OpenStack 등)나 온프레미스 환경에 서버를 만들고, Kubernetes를 설치하고, 준비가 완료된 클러스터를 제공합니다.

Management Cluster와 Target Cluster는 서로 별도로 존재하며,
Management Cluster를 통해 여러 Target Cluster를 동시에 관리할 수도 있습니다.

Cluster API를 도입하면 기대할 수 있는 변화

Cluster API를 도입하면 다음과 같은 운영상의 이점을 얻을 수 있습니다.

  • 클러스터 생성, 업데이트, 삭제가 명령어 한 번과 YAML 한 장으로 가능해집니다.
  • 클라우드 사업자나 인프라 종류에 관계없이 통일된 방식으로 클러스터를 관리할 수 있습니다.
  • 수작업 절차를 줄이고 GitOps 기반 운영을 적용할 수 있습니다.
  • 대규모 멀티 클러스터 운영이 수월해집니다.

특히 대규모 쿠버네티스 환경을 운영하는 조직에서는 Cluster API가 필수적인 도구로 자리잡아 가고 있습니다.

728x90