Fleet – GitOps at Scale

SUSE Rancher 관련 자료를 보다보니 Fleet에 대한 내용이 있어서, Fleet 홈페이지에서 몇가지 자료를 정리해서 기계번역해 보았습니다.

Fleet란?

  • 클러스터 엔진: Fleet는 GitOps를 통해 로컬 클러스터에 대한 제어 능력을 높이고 지속적인 모니터링을 제공하도록 설계된 컨테이너 관리 및 배치 엔진입니다. Fleet는 확장 기능에 초점을 맞출 뿐만 아니라 사용자가 클러스터에 정확히 무엇이 설치되어 있는지 모니터링할 수 있는 높은 수준의 제어 능력과 가시성을 제공합니다.
  • GitOps at scale: Fleet은 최대 100만 개의 클러스터를 관리할 수 있지만 단일 클러스터에 적합할 정도로 가볍습니다. 대규모 프로젝트에 사용될 때 Fleet의 능력은 충분히 실현됩니다. “대규모”는 단일 조직에 많은 클러스터, 많은 구현 또는 많은 팀이 있을 수 있습니다.
  • 배포(Deployment) 관리: Fleet는 원시 Kubernetes YAML의 Git, Helm 차트, Kustomize 또는 세 가지 조합에서 배포를 관리할 수 있습니다. 소스에 관계없이 모든 리소스는 동적으로 Helm 차트로 전환되며, Helm은 클러스터에 모든 리소스를 배포하는 엔진으로 사용됩니다. 그 결과, 사용자는 높은 수준의 제어력, 일관성 및 감사성을 갖게 됩니다.

구성 관리

Fleet는 기본적으로 단일 Kubernetes 클러스터 또는 Kubernetes 클러스터의 대규모 배치(최대 백만 개)에 대한 GitOps를 관리하는 Kubernetes 사용자 지정 리소스 정의(CRD) 및 컨트롤러 세트입니다. 애플리케이션을 쉽게 사용자 정의하고 단일 지점에서 HA 클러스터를 관리할 수 있도록 지원하는 분산 초기화 시스템입니다.

아키텍처

Fleet는 두 가지 주요 구성 요소가 있습니다. Fleet manager와 Cluster Agent입니다 이러한 구성 요소는 2단계 풀 모델에서 작동합니다. Fleet manager는 git에서, Cluster Agent는 Fleet manager에서 pull할 것입니다.

Fleet Manager

Fleet manager는 모든 표준 Kubernetes 클러스터에서 실행되는 일련의 Kubernetes 컨트롤러입니다. Fleet manager가 공개한 유일한 API는 Kubernetes API이며, Fleet 컨트롤러에 대한 사용자 지정 API는 없습니다.

Cluster Agent

클러스터 에이전트 하나가 각 클러스터에서 실행되며 Fleet manager와 통신합니다. 클러스터에서 Fleet manager의 유일한 통신은 이 에이전트를 통해서만 이루어지며 모든 통신은 관리 클러스터에서 Fleet manager로 전송됩니다. Fleet manager는 다운스트림 클러스터에 대한 연결을 시작하지 않습니다. 즉, 관리되는 클러스터가 프라이빗 네트워크 및 NAT 뒤에서 실행될 수 있습니다. 클러스터 에이전트는 Fleet manager를 실행하는 클러스터의 Kubernetes API와 통신할 수 있어야 합니다. 단, manager initiated 클러스터 등록 흐름을 사용하는 경우는 예외입니다. 이것은 필수가 아니라 선택적인 패턴입니다.

클러스터 에이전트는 “always on” 연결이 설정되어 있지 않습니다. 그들이 연결할 수 있는 즉시 운영을 재개할 것입니다. 이후 향상된 기능은 에이전트가 항상 연결을 시도하므로 에이전트가 체크인하는 시간을 예약할 수 있는 기능을 추가할 수 있습니다.

보안

Fleet manager는 서비스 계정을 동적으로 생성하고 RBAC를 관리한 다음 토큰을 다운스트림 클러스터에 제공합니다. 클러스터는 선택적으로 클러스터 등록 토큰을 만료하여 등록됩니다. 클러스터 등록 토큰은 등록 프로세스 중에만 해당 클러스터에 대한 자격 증명을 생성하는 데 사용됩니다. 클러스터 자격 증명이 설정되면 클러스터는 클러스터 등록 토큰을 “포기(forget)”합니다.

클러스터에 지정된 서비스 계정에는 해당 클러스터에 대해 특별히 생성된 네임스페이스에 BundleDeployment를 나열할 수 있는 권한만 있습니다. 또한 BundleDeployment의 상태 하위 리소스와 해당 클러스터 리소스의 상태 하위 리소스를 업데이트할 수 있습니다.

확장성

Fleet은 최대 100만 클러스터까지 확장할 수 있도록 설계되었습니다. 여기서는 Kubernetes, 컨트롤러 기반 아키텍처를 100만 개 이상의 객체로 확장하는 방법에 대해 자세히 설명합니다.

핵심 개념

Fleet는 기본적으로 단일 Kubernetes 클러스터 또는 Kubernetes 클러스터의 대규모 배에 대한 GitOps를 관리하기 위한 Kubernetes 사용자 지정 리소스 정의(CRD) 및 컨트롤러 세트입니다. Fleet는 대량 수평 확장을 위해 설계되었지만, 지금까지 최대 100만 클러스터까지 확장하는 작업은 운영 환경에서가 아니라 테스트 환경에서만 수행되었습니다.

참고 : CRD의 이름 지정 규칙에 대한 자세한 내용을 보려면 여기를 클릭하십시오.

다음은 본 문서 전반에 걸쳐 유용한 Fleet 개념 중 일부입니다.

  • Fleet Manager: Git에서 Kubernetes 자산의 배치를 조정하는 중앙 집중식 구성요소입니다. 다중 클러스터 설정에서는 일반적으로 전용 Kubernetes 클러스터가 됩니다. 단일 클러스터 설정에서 Fleet Manager는 GitOps로 관리하는 클러스터와 동일한 클러스터에서 실행됩니다.
  • Fleet controller: GitOps를 오케스트레이션하는 Fleet manager에서 실행 중인 컨트롤러입니다. 실제로 Fleet manager와 Fleet controller는 서로 상당히 교환적으로 사용됩니다.
  • Single Cluster Style: manager와 다운스트림 클러스터가 동일한 클러스터인 Fleet 설치 스타일입니다. 이것은 GitOps로 빠르게 시작하고 실행할 수 있는 매우 간단한 패턴입니다.
  • Multi Cluster Style: 많은 수의 다운스트림 클러스터를 관리하는 중앙 관리자가 있는 Fleet 실행 스타일입니다.
  • Fleet agent: 모든 관리되는 다운스트림 클러스터는 Fleet manager에게 다시 통신하는 에이전트를 실행합니다. 이 에이전트는 다운스트림 클러스터에서 실행되는 또 다른 Kubernetes 컨트롤러 세트일 뿐입니다.
  • GitRepo: Fleet가 감시하는 Git 저장소는 GitRepo 유형으로 표시됩니다.
  • Bundle: git에서 리소스를 오케스트레이션하는 데 사용되는 내부 단위입니다. GitRepo를 스캔하면 하나 이상의 Bundle이 생성됩니다. Bundle은 클러스터에 배포되는 리소스의 모음입니다. Bundle은 Fleet에서 사용되는 기본 배치 단위입니다. Bundle의 내용은 Kubernetes 매니페스트, Kustomize 구성 또는 Helm 차트일 수 있습니다. 원본에 관계없이 내용은 에이전트에 의해 Helm 차트에 동적으로 렌더링되고 Helm 릴리스로 다운스트림 클러스터에 설치됩니다.
  • BundleDeployment: Bundle이 클러스터에 배포되는 경우 Bundle 인스턴스를 Bundle 배포라고 합니다. BundleDeployment는 클러스터별 사용자 지정과 함께 특정 클러스터에 있는 해당 Bundle의 상태를 나타냅니다. Fleet 에이전트는 에이전트가 관리 중인 클러스터에 대해 생성된 BundleDeployment 리소스만 인식합니다.
  • Downstream Cluster: Fleet가 매니페스트를 배포하는 클러스터를 다운스트림 클러스터라고 합니다. 단일 클러스터 사용 사례에서 Fleet 관리자인 Kubernetes 클러스터는 manager인 동시에 다운스트림 클러스터입니다.
  • Cluster Registration Token: 에이전트가 새 클러스터를 등록하는 데 사용하는 토큰입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

Rancher v2.7.0 Release 노트

한 동안 Rancher 수업이 없어서 잊고지내다가 보니 Rancher v2.7.0이 나왔더라고요. 릴리즈 노트에 있는 내용 간단히 정리해 보았습니다. 기능과…
Read More

Rancher 2.8 소식

Rancher 2.8이 나온다는 소식이 있어서, 몇가지 내용 정리해 보았습니다. KubeCon NA 2023에서도 발표한다고해서 정식 릴리즈되었나?하고 찾아보니 아직 정식…