Kosmos 구성 요소

Kosmos 구성 요소

Fleet

Kosmos Fleet은 인프라 운영자, 워크로드 개발자, 보안 및 네트워크 엔지니어 등 조직 내 다양한 역할을 지원하기 위한 도구 모음입니다. 이 도구들은 SPC, 퍼블릭 클라우드, 온프레미스 환경 전반에서 클러스터, 인프라, 워크로드를 관리할 수 있도록 설계되었습니다. 이러한 도구들은 클러스터와 리소스를 논리적으로 그룹화한 “fleet” 개념을 중심으로 구성되어 있습니다.

컨테이너, 컨테이너 오케스트레이션, 서비스 메시 등 클라우드 네이티브 기술을 채택한 조직은 단일 클러스터만으로는 부족한 시점에 도달하곤 합니다. 예를 들어, 운영 환경과 비운영 환경의 분리, 서비스 계층 및 지역 또는 팀별 분산 등의 이유로 여러 클러스터를 배포해야 할 수 있습니다. 이러한 멀티 클러스터 접근 방식의 이점과 트레이드오프는 멀티 클러스터 사용 사례에서 자세히 확인할 수 있습니다.

Kosmos는 프로젝트나 워크로드에 상관없이 여러 클러스터를 보다 쉽게 관리할 수 있도록 fleet 개념을 도입했습니다. 예를 들어, 조직 내 10개의 프로젝트 각각에 두 개의 클러스터가 존재하고 서로 다른 프로덕션 애플리케이션이 실행 중이라면, fleet 없이 시스템 전체 변경을 하려면 모든 프로젝트의 클러스터를 각각 수정해야 합니다. 또한 여러 클러스터를 모니터링하려면 프로젝트 컨텍스트를 전환해야 할 수도 있습니다. Fleet을 사용하면 클러스터를 논리적으로 그룹화하고 단일 “fleet 호스트 프로젝트”를 통해 중앙 집중식 관리와 가시성을 확보할 수 있습니다.

Fleet은 단순한 클러스터 그룹화 이상의 기능을 제공합니다. 클러스터 경계를 추상화하여 리소스를 팀 단위로 할당하거나, 공통 구성을 자동으로 적용하는 등 fleet 기반 기능을 통해 다양한 관리를 수행할 수 있습니다.

Fleet은 SPC에서 실행되는 Kubernetes Engine 클러스터만으로 구성할 수도 있고, 외부 클러스터를 포함할 수도 있습니다.

Fleet의 주요 기능

  • 멀티 클러스터 관리: 서로 다른 프로젝트 및 환경(운영, 스테이징 등)에 걸친 클러스터를 단일 논리 그룹으로 관리합니다.
  • 통합 가시성: 모든 클러스터를 중앙 위치에서 모니터링하고 관리할 수 있어 전체 인프라 상태를 쉽게 파악할 수 있습니다.
  • 정책 및 구성 일관성 유지: 클러스터 전반에 공통 보안 정책, 구성 등을 일괄 적용할 수 있어 운영 효율을 높입니다.
  • Fleet 기반 서비스: 멀티 클러스터 서비스 및 워크로드 ID 연합 등 fleet 기반 기능을 제공합니다.
  • 클러스터 간 기능 제공: 클러스터 간 워크로드 분산 및 리소스 관리가 가능해지며, 클러스터 경계를 넘는 기능을 구현할 수 있습니다.

Clusters

Kosmos에서 클러스터란 Kosmos UI 및 CLI를 통해 연결 및 관리 가능한 모든 Kubernetes 클러스터를 의미합니다. 이는 Kosmos가 설치된 로컬 클러스터일 수도 있고, 퍼블릭 클라우드에 배포된 외부 클러스터일 수도 있습니다.

클러스터가 Kosmos에 연결되면, Kosmos는 자동으로 해당 클러스터에 에이전트를 설치하려 시도합니다. 이 Kosmos 에이전트는 이후 모든 클러스터와의 상호작용을 담당합니다.

연결이 완료되면, 해당 클러스터 내에서 가상 클러스터(vCluster) 및 DevSpace를 생성할 수 있습니다.

DevSpaces

Kosmos의 DevSpace는 특정 사용자 또는 팀에게 할당되는 Kubernetes 네임스페이스입니다. Kubernetes의 네임스페이스는 단일 클러스터 내에서 리소스를 격리하는 데 사용됩니다.

Kosmos에서는 각 DevSpace가 클러스터와 프로젝트에 연결되며, 격리 및 관리 우수 사례를 따르도록 템플릿 기반으로 생성됩니다. kubectl을 이용해 쉽게 접근하고, 액세스를 관리할 수 있습니다.

DevSpace는 사용자의 작업 공간으로, 공유 클러스터 자원을 기반으로 하는 vCluster를 관리하는 기능에 중점을 둡니다. DevSpace 내 사용자의 vCluster는 Kosmos Operator가 관리하는 공유 물리 클러스터에서 실행됩니다.

DevSpace의 주요 기능

  • 클러스터 내 격리: 팀 또는 애플리케이션별로 리소스, 정책을 분리할 수 있어 보안과 안정성을 강화합니다.
  • 리소스 관리: 관리자는 DevSpace마다 리소스 쿼터를 설정할 수 있어, 각 팀이 정해진 범위를 넘지 않도록 관리할 수 있습니다.
  • 멀티 테넌시 지원: 논리적 경계를 통해 클러스터 내 여러 팀이나 서비스가 자원을 충돌 없이 사용할 수 있습니다.
  • 리소스 범위 제한: pod, service, secret 등 Kubernetes 객체들이 DevSpace 단위로 구분되어 동일 이름으로도 충돌 없이 존재할 수 있습니다.

Virtual clusters

가상 클러스터(vCluster)는 다른 Kubernetes 클러스터의 네임스페이스 내에서 실행되는 완전한 Kubernetes 클러스터입니다. 이는 “호스트” 또는 “상위” 클러스터라고도 불립니다. 가상 클러스터는 기존 네임스페이스의 한계를 극복할 수 있는 강력한 도구입니다.

상위 클러스터의 멀티 테넌시 설정을 조정할 수 없거나, 사용자가 CRD 생성이나 네트워크 연결 등 더 많은 권한을 요구할 때 vCluster는 훌륭한 대안이 됩니다.

Kosmos의 vCluster 기능은 오픈소스 vCluster 프로젝트를 기반으로 하며, Kosmos는 이를 중앙에서 관리할 수 있도록 기능을 확장합니다. Kosmos에서 가상 클러스터를 생성하거나 외부 클러스터를 가져와 중앙에서 통합 관리할 수 있습니다.

vCluster의 실제 활용

vCluster를 통해 단일 물리 클러스터를 여러 논리 클러스터로 분할하여 자원 활용도를 극대화하고 워크로드를 효율적으로 관리할 수 있습니다.

기존 네임스페이스 기반 분할은 다음과 같은 한계가 있었습니다:

  • 클러스터 전체 리소스 충돌: 오퍼레이터 등 일부 리소스는 네임스페이스 수준으로 분리할 수 없어 격리 문제가 발생합니다.
  • 공유 제어 플레인: 모든 네임스페이스가 API 서버, etcd, 스케줄러 등을 공유하여 오류 격리 및 속도 제어가 어렵습니다.

vCluster는 클러스터마다 독립적인 API 서버를 제공하여 이러한 문제를 해결합니다. 자체 데이터 저장소를 사용하므로, 호스트 클러스터의 오류나 충돌로부터 독립적입니다.

또한 vCluster는 비용 절감에도 효과적입니다. 별도 물리 클러스터 대신 가상 클러스터를 사용하면, 컨트롤 플레인 수를 줄일 수 있어 유지 관리가 간편해지고 테스트 환경, CI, 데모 등에 적합한 솔루션이 됩니다.

Fleet vs DevSpaces

Fleet은 호스트 클러스터를 관리하는 논리적 워크스페이스이고, DevSpace는 **가상 클러스터(vCluster)**를 관리하는 논리적 워크스페이스입니다. 둘 다 CRUD 연산을 지원합니다.

  • Fleet: 다수 클러스터를 중앙에서 관리할 수 있는 멀티 클러스터 단위 관리 도구입니다.
  • DevSpace: 단일 클러스터 내에서 리소스를 분리 및 관리할 수 있는 도구입니다.

Kosmos에서는 이 두 개념이 모두 중요하며, 각각 다른 레벨의 인프라에서 작동합니다.

1. Fleet (여러 클러스터를 그룹화)

Fleet은 프로젝트와 무관하게 여러 클러스터를 그룹화하여 중앙에서 관리 및 관찰할 수 있도록 합니다.

2. DevSpace (단일 클러스터 내 논리 분리)

DevSpace는 클러스터 내에서 리소스를 논리적으로 분리하여, 하나의 클러스터를 여러 사용자나 팀이 공유하면서도 독립적으로 사용할 수 있도록 합니다.

Fleet과 DevSpace의 주요 차이점

기능 항목FleetDevSpace
범위(Scope)프로젝트 간 멀티 클러스터단일 클러스터
목적(Purpose)여러 클러스터 중앙 관리클러스터 내 논리적 분리
관리 레벨클러스터 단위리소스 단위
활용 사례클러스터 그룹화, 클러스터 간 통합 서비스팀/앱 리소스 격리 및 독립적 운영
정책 적용 범위클러스터 전반 정책, 멀티 클러스터 서비스 적용RBAC 및 리소스 쿼터 등 DevSpace 내 적용
워크로드 경계클러스터 간에 걸침단일 클러스터 내에 머무름

Edit this page on GitHub