본문 바로가기

Kubernetes

CNCF란? Cloud Native란?

반응형

 

Cloud Native Landscape란?

CNCF(Cloud Native Computing Foundation)에서 제공하는 것으로 다양한 카테고리와 수많은 기술들이 나열되어 있습니다. 

모든 오픈 소스 프로젝트와 상용 제품들을 카테고리로 나누어 정리하고, 현재의 생태계에 대한 개요를 제공하는 것입니다.

 

 

CNCF (Cloud Native Computing Foundation)의 Landscape에서 "Graduated" 및 "Incubating" 단계의 프로젝트들에 대해서 살펴보려고 합니다.

  1. Graduated Projects (졸업 프로젝트)
    • CNCF에서 졸업한 프로젝트는 신뢰성과 성숙도가 입증된 오픈소스 프로젝트로, 클라우드 네이티브 생태계에서 널리 사용되는 기술들입니다.
    • 이러한 프로젝트들은 수년간의 개발과 유지보수를 통해 견고한 커뮤니티와 상용 지원을 확보했으며, 성능, 보안, 유연성 측면에서 검증되었습니다.
    • 예시로는 Kubernetes, Prometheus, Envoy 등이 있습니다. 이들은 기업 및 커뮤니티에서 폭넓게 사용되고 있으며, 클라우드 네이티브 애플리케이션 배포와 운영에 핵심적인 역할을 합니다.
  2. Incubating Projects (인큐베이팅 프로젝트)
    • 인큐베이팅 단계에 있는 프로젝트들은 아직 완전히 성숙하지 않았지만, CNCF에서 잠재력을 인정받아 지원을 받는 프로젝트들입니다.
    • 이 단계에서는 프로젝트가 사용자와 기여자를 더 많이 확보하고 기술적 성숙도를 높이는 과정에 있으며, 커뮤니티와 생태계 내에서 점점 더 중요한 역할을 하게 됩니다.
    • 대표적인 예로는 Argo, Flux, OpenTelemetry 등이 있습니다. 이러한 프로젝트들은 아직 졸업하지 않았지만, 클라우드 네이티브 워크로드를 지원하는 데 중요한 도구들로 인정받고 있습니다.

 

 

해당 이미지는 CNCF 에서 "Graduated" 및 "Incubating" 단계를 부여받은 프로젝트 입니다.

 

1. Application Definition & Image Build (애플리케이션 정의 및 이미지 빌드)

  • Helm (CNCF Graduated)
  • Artifact Hub (CNCF Incubating)
  • Backstage (CNCF Incubating)
  • Buildpacks.io (CNCF Incubating)
  • Dapr (CNCF Incubating)
  • KubeVela (CNCF Incubating)
  • KubeVirt (CNCF Incubating)
  • Operator Framework (CNCF Incubating)

1. Helm (CNCF Graduated)

  • 설명: Helm은 Kubernetes 애플리케이션을 정의, 설치 및 업그레이드하는 패키지 매니저입니다.
  • 문제 해결: Kubernetes의 복잡한 애플리케이션 배포를 간소화하고 반복 가능한 방식으로 관리할 수 있도록 돕습니다.
  • https://helm.sh/docs/
  • 특징
    • 애플리케이션 배포의 버전 관리 및 롤백 기능 제공.
    • Chart라는 포맷을 사용해 Kubernetes 리소스들을 패키징 및 배포.
  • 사용 사례: 여러 클러스터에서 대규모 애플리케이션 배포를 관리할 때 유용합니다.

2. Artifact Hub (CNCF Incubating)

  • 설명: Artifact Hub는 Helm 차트, OLM 번들, Falco 규칙 등 클라우드 네이티브 아티팩트를 찾고 관리할 수 있는 중앙 저장소입니다.
  • 문제 해결: 클라우드 네이티브 환경에서 필요한 다양한 아티팩트들을 쉽게 검색하고 관리할 수 있도록 합니다.
  • https://artifacthub.io/docs/
  • 특징
    • Helm 차트 외에도 여러 종류의 아티팩트를 검색 가능.
    • 오픈 소스 및 상용 프로젝트의 아티팩트도 포함.
  • 사용 사례: Kubernetes 애플리케이션 배포 시 필요한 다양한 자원을 한곳에서 손쉽게 찾을 수 있습니다.

3. Backstage (CNCF Incubating)

  • 설명: Backstage는 개발자를 위한 오픈 플랫폼으로, 소프트웨어 인프라와 툴을 통합하여 효율적인 개발 환경을 제공합니다.
  • 문제 해결: 여러 팀이 사용하는 도구와 서비스를 한곳에서 관리할 수 없을 때의 복잡성을 해결합니다.
  • https://backstage.io/docs/overview/what-is-backstage
  • 특징
    • 서비스 카탈로그, 기술 문서 및 플러그인 확장 기능 제공.
    • 개발 환경에서 사용되는 다양한 도구들을 중앙에서 관리 가능.
  • 사용 사례: 다양한 팀과 프로젝트가 있는 대규모 조직에서 개발 툴 관리 및 통합을 필요로 할 때 유용합니다.

4. Buildpacks.io (CNCF Incubating)

  • 설명: Buildpacks.io는 소스 코드를 자동으로 컨테이너 이미지로 변환해주는 도구입니다.
  • 문제 해결: 소스 코드에서 컨테이너 이미지를 생성하는 과정을 자동화하여 개발 생산성을 높입니다.
  • https://buildpacks.io/docs/
  • 특징:
    • 여러 언어 및 프레임워크 지원.
    • 소스 코드의 변경 사항을 감지하여 효율적으로 이미지를 빌드.
  • 사용 사례: DevOps 파이프라인에서 소스 코드부터 컨테이너 이미지 빌드까지 자동화할 때 유용합니다.

5. Dapr (CNCF Incubating)

  • 설명: Dapr은 클라우드 네이티브 애플리케이션을 개발할 때 반복적인 패턴을 처리하는 분산 런타임입니다.
  • 문제 해결: 분산 시스템에서 흔히 발생하는 문제(서비스 간 통신, 상태 저장 등)를 표준화하여 개발을 단순화합니다.
  • https://docs.dapr.io/concepts/overview/
  • 특징
    • 서비스 호출, 상태 관리, 비밀 관리 등의 빌트인 기능 제공.
    • 다중 언어 및 프레임워크 지원.
    • 사이드카 아키텍처로 HTTP 및 gRPC API를 노출, 컨테이너 또는 프로세스로 애플리케이션 코드에 Dapr 런타임 코드를 포함할 필요가 없음
  • 사용 사례: 마이크로서비스 기반의 분산 애플리케이션을 개발할 때 유용합니다.

6. KubeVela (CNCF Incubating)

  • 설명: KubeVela는 Kubernetes 기반 애플리케이션을 선언적으로 관리할 수 있는 플랫폼입니다.
  • 문제 해결: 복잡한 Kubernetes 배포 및 애플리케이션 관리 프로세스를 단순화합니다.
  • https://kubevela.io/docs/
  • 특징
    • 선언적 애플리케이션 배포 및 관리.
    • Open Application Model(OAM)을 기반으로 개발자 친화적인 인터페이스 제공.
    • CI가 아닌 지속적 배포(CD)에 초점을 맞추고 있으며, 기존 CI 툴과 통합해 선언적 배포와 보안을 강화합니다.
  • 사용 사례: 개발자가 Kubernetes의 복잡성을 이해하지 않고도 애플리케이션을 쉽게 배포 및 관리할 수 있습니다.

7. KubeVirt (CNCF Incubating)

  • 설명: KubeVirt는 가상 머신(VM)을 Kubernetes 클러스터 내에서 실행할 수 있게 해주는 도구입니다.
  • 문제 해결: 컨테이너와 가상 머신을 동일한 클러스터에서 함께 관리할 수 있도록 합니다.
  • 특징
    • VM과 컨테이너 워크로드를 동일한 인프라에서 실행 및 관리.
    • Kubernetes의 네이티브 리소스처럼 VM을 관리 가능.
    • API와 사용자 정의 리소스 정의(CRD)를 통해 VM을 선언적으로 관리할 수 있으며, 스케줄링, 네트워킹, 스토리지 등의 리소스는 Kubernetes가 처리
  • 사용 사례: 레거시 애플리케이션을 컨테이너화하지 않고도 Kubernetes에서 실행해야 할 때 유용합니다.

8. Operator Framework (CNCF Incubating)

  • 설명: Operator Framework는 Kubernetes에서 복잡한 애플리케이션을 쉽게 관리할 수 있도록 도와주는 툴셋입니다.
  • 문제 해결: Kubernetes에서 상태 저장 애플리케이션의 수명 주기 관리 문제를 해결합니다.
  • https://operatorframework.io/about/
  • 특징:
    • 애플리케이션의 배포, 업데이트, 복구 등을 자동으로 관리.
    • 커스텀 리소스 정의(CRD) 및 컨트롤러를 사용하여 애플리케이션의 상태를 지속적으로 관리.
  • 사용 사례: 데이터베이스나 캐시 같은 복잡한 상태 저장 애플리케이션을 Kubernetes에서 관리할 때 유용합니다.

 

 

2. Continuous Integration & Delivery

  • Argo (CNCF Graduated)
  • Flux (CNCF Graduated)
  • Keptn (CNCF Incubating)
  • OpenKruise (CNCF Incubating)

1. Argo (CNCF Graduated)

  • 설명: Argo는 Kubernetes 환경에서의 워크플로우 자동화를 위한 도구입니다. CI/CD 파이프라인을 구축하고 관리하는 데 사용됩니다.
  • 문제 해결: Kubernetes에서의 복잡한 애플리케이션 배포 및 자동화를 단순화하고, 컨테이너화된 애플리케이션의 지속적 통합과 배포를 효율적으로 관리할 수 있습니다.
  • https://argo-workflows.readthedocs.io/en/latest/
  • 특징
    • Argo CD, Argo Workflows, Argo Rollouts 등의 하위 프로젝트가 있으며, 다양한 배포 전략을 지원
    • Kubernetes 네이티브 방식으로 선언적 GitOps 스타일의 배포를 수행
    • 복잡한 워크플로우를 시각화하고 관리할 수 있는 기능 제공
  • 사용 사례: 복잡한 마이크로서비스 아키텍처에서 여러 애플리케이션을 Kubernetes에 효율적으로 배포 및 관리할 때 유용합니다.

 

2. Flux (CNCF Graduated)

  • 설명: Flux는 GitOps 기반의 지속적 배포 도구로, Kubernetes 클러스터에서의 애플리케이션 업데이트를 자동화합니다.
  • 문제 해결: Kubernetes 클러스터에서 선언적 방식으로 애플리케이션 배포를 자동화하고, Git 저장소와 클러스터 상태를 동기화합니다.
  • https://fluxcd.io/flux/
  • 특징
    • Git 저장소를 단일 소스로 사용하여 배포 및 관리
    • Kubernetes 애플리케이션의 상태를 지속적으로 모니터링하고 자동으로 업데이트
    • Helm 차트 및 Kustomize와의 통합 지원
  • 사용 사례: 지속적으로 애플리케이션을 배포해야 하는 환경에서 GitOps 방식을 사용하여 쉽게 배포 및 관리를 할 수 있습니다.

 

3. Keptn (CNCF Incubating)

  • 설명: Keptn은 클라우드 네이티브 환경에서 서비스 배포, 테스트 및 운영을 자동화하는 도구입니다.
  • 문제 해결: 여러 단계의 배포 과정에서 성능, 품질 및 안정성을 보장하며, 자동화된 피드백 루프를 통해 지속적 배포와 운영을 개선합니다.
  • https://keptn.sh/stable/docs/
  • 특징
    • SLO(Service Level Objective) 기반의 배포 및 모니터링
    • 다양한 CI/CD 도구와의 통합을 통해 배포와 테스트 자동화 지원
    • 이벤트 기반의 자동화 파이프라인 구성
  • 사용 사례: 대규모 애플리케이션 배포 및 모니터링이 필요할 때, SLO를 기반으로 성능을 보장하면서 운영 자동화를 구현할 수 있습니다.

 

4. OpenKruise (CNCF Incubating)

  • 설명: OpenKruise는 Kubernetes 네이티브 애플리케이션 관리를 위한 확장된 워크로드 기능을 제공하는 도구입니다.
  • 문제 해결: Kubernetes에서 기본적으로 제공하지 않는 고급 워크로드 관리 기능을 추가로 제공하여 애플리케이션을 더욱 유연하게 관리할 수 있습니다.
  • https://openkruise.io/
  • 특징
    • 기본 Kubernetes 워크로드보다 확장된 배포 전략 지원
    • 고급 롤링 업데이트, 클론 셋, 컨테이너 리스타트 등의 기능 제공
    • 리소스 오케스트레이션 및 최적화된 배포 기능 지원
  • 사용 사례: 더 복잡하고 세부적인 Kubernetes 애플리케이션 배포 및 관리가 필요할 때 유용합니다.

 

 

3. Streaming & Messaging (스트리밍 및 메시징)

  • CloudEvents (CNCF Graduated)
  • NATS (CNCF Graduated)
  • Strimzi (CNCF Incubating)

 

1. CloudEvents (CNCF Graduated)

  • 설명: CloudEvents는 클라우드 서비스 간의 이벤트 데이터를 표준화하는 스펙입니다. 이벤트 드리븐 아키텍처에서 이벤트의 데이터 형식을 통일하여 시스템 간 상호 운용성을 높입니다.
  • 문제 해결: 이벤트 기반 시스템 간의 데이터 표준화 문제를 해결하여, 다양한 서비스와 클라우드 간의 상호 호환성을 보장합니다.
  • https://cloudevents.io/
  • 특징
    • 이벤트 전송을 위한 통일된 데이터 포맷 제공
    • REST, HTTP, Kafka, MQTT 등 다양한 프로토콜 지원
    • 클라우드 네이티브 환경에서 발생하는 이벤트 간의 일관된 구조 보장
  • 사용 사례: 이벤트 기반 마이크로서비스 아키텍처에서 여러 클라우드 및 서비스 간의 통신을 표준화할 때 유용합니다.

 

2. NATS (CNCF Graduated)

    • 설명: NATS는 고성능의 메시징 시스템으로, 실시간 애플리케이션과 서비스 간 통신을 지원합니다. 매우 가볍고 빠른 메시징 솔루션으로서 분산 시스템에서 사용됩니다.
    • 문제 해결: 대규모 분산 시스템에서 낮은 지연 시간과 높은 처리량을 요구하는 실시간 메시징 문제를 해결합니다.
    • https://docs.nats.io/

 

  • 특징
    • 낮은 지연 시간과 높은 성능을 제공하는 메시징 시스템
    • 간단한 API로 빠르게 통합 가능
    • Publish&Subscribe 패턴, 요청/응답 패턴 지원 (메시지 큐에 구독자를 등록하면 클라이언트에서 보낸 하나의 메시지가 등록된 모든 구독자에게 전달이 되어서 처리) -> 1:N 관계의 비동기 처리를 구현하고자 할 때 사용
    • JetStream을 통한 지속성 지원, Key/Value 데이터 구조 지원 (버전 관리, TTL, Watchers 기능 포함)
    • Object Storage 버전 관리 기능 포함
  • 사용 사례: 고성능 메시징이 필요한 실시간 애플리케이션 및 마이크로서비스 간의 통신에서 사용됩니다.

 

 

3. Strimzi (CNCF Incubating)

 

  • 설명: Strimzi는 Kubernetes에서 Apache Kafka를 쉽게 실행하고 관리할 수 있도록 지원하는 오픈소스 프로젝트입니다. Kafka 클러스터를 Kubernetes 환경에 맞춰 자동으로 설치, 관리, 확장할 수 있게 합니다.
  • 문제 해결: Kubernetes 클러스터에서 Apache Kafka를 효율적으로 배포하고 관리하는 복잡성을 해결하며, 데이터 스트리밍 애플리케이션의 배포 및 운영을 간소화합니다.
  • https://strimzi.io/documentation/
  • 특징
    • Kubernetes 네이티브 방식으로 Kafka 클러스터를 설치, 구성, 관리 가능
    • Kafka 클러스터의 자동화된 스케일링, 업데이트 및 롤링 리스타트 지원
    • Kubernetes 리소스(예: StatefulSets, ConfigMaps)를 활용하여 Kafka 클러스터 관리
    • Kafka 브로커, Zookeeper, Kafka Connect 등 다양한 Kafka 구성 요소에 대한 지원
    • 보안 기능 제공 (TLS, OAuth 2.0, 인증 및 권한 부여)
    • 클러스터 모니터링 및 경고 기능 제공
  • 사용 사례: Strimzi는 대규모 데이터 스트리밍 플랫폼을 Kubernetes에서 쉽게 관리하고, Apache Kafka를 사용해 분산 시스템의 실시간 데이터를 처리해야 하는 환경에 적합합니다. 운영자는 Kafka 클러스터의 배포 및 관리 작업을 자동화하여 운영 부담을 줄일 수 있습니다.

 

4. Database (데이터베이스)

  • TiKV (CNCF Graduated)
  • Vitess (CNCF Graduated)

1. TiKV (CNCF Graduated)

  • 설명: TiKV는 분산 트랜잭션 키-값 저장소로, 고가용성과 높은 일관성을 제공하는 오픈소스 데이터베이스입니다. 클라우드 네이티브 환경에서 대규모 데이터 처리와 스케일링에 최적화되어 있습니다.
  • 문제 해결: 데이터의 고가용성과 트랜잭션 일관성을 요구하는 대규모 분산 시스템에서 신뢰성 있는 키-값 저장소 솔루션을 제공합니다.
  • https://tikv.org/docs/7.1/new-features/overview/
  • 특징
    • 분산 트랜잭션 지원, ACID 준수
    • 고가용성을 위한 자동 복구데이터 복제
    • 스케일링이 용이하며 수평 확장 가능
    • Raft 프로토콜을 기반으로 데이터 복제 및 일관성 보장
    • MySQLPostgreSQL 클라이언트와의 호환성 지원
    • 대용량 데이터 처리에 적합한 성능과 확장성 제공
  • 사용 사례: 대규모 트랜잭션 처리와 일관성이 요구되는 금융 서비스, 전자 상거래 플랫폼, 실시간 데이터 분석 시스템 등에서 유용합니다.

 

2. Vitess (CNCF Graduated)

  • 설명: Vitess는 MySQL 데이터베이스를 위한 수평 확장 솔루션으로, 대규모 클라우드 네이티브 환경에서 데이터베이스를 확장하고 관리할 수 있도록 설계되었습니다. 특히 Google과 같은 대규모 트래픽을 처리하는 환경에서 검증된 솔루션입니다.
  • 문제 해결: MySQL의 확장성 한계를 극복하며, 대규모 트래픽을 처리해야 하는 분산 시스템에서 데이터베이스 성능을 최적화합니다.
  • https://vitess.io/docs/21.0/overview/whatisvitess/
  • 특징
    • 수평 확장을 지원하여 대규모 데이터베이스를 효율적으로 분산 처리
    • Sharding(샤딩)을 통해 대용량 데이터를 자동으로 분할하여 처리
    • 복제자동 페일오버를 통해 데이터베이스의 고가용성 보장
    • 다양한 클라우드 플랫폼에서 Kubernetes와 함께 손쉽게 배포 및 관리 가능
    • MySQL과의 완벽한 호환성을 유지하면서도 확장성과 성능을 극대화
  • 사용 사례: 대규모 데이터 트래픽을 처리하는 애플리케이션, 예를 들어 동영상 스트리밍 서비스, 전자 상거래 플랫폼, 소셜 네트워크 등에서 사용됩니다.

 

5. Scheduling & Orchestration (스케줄링 및 오케스트레이션)

  • Kubernetes (CNCF Graduated)
  • Crossplane (CNCF Incubating)
  • Karmada (CNCF Incubating)
  • Knative (CNCF Incubating)
  • Volcano (CNCF Incubating)

 

1. Kubernetes (CNCF Graduated)

  • 설명: Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 스케일링하는 오픈소스 플랫폼으로, 클라우드 네이티브 인프라의 핵심적인 역할을 합니다.
  • 문제 해결: 컨테이너 기반 애플리케이션의 복잡한 배포와 스케일링, 그리고 관리의 어려움을 해결합니다.
  • https://kubernetes.io/docs/home/
  • 특징
    • 자동 스케일링 및 배포: 애플리케이션의 트래픽 증가에 따라 자동으로 리소스를 할당하고 스케일링
    • 자체 복구 기능: 컨테이너나 노드의 장애 발생 시 자동으로 재배포 및 복구 수행
    • 광범위한 확장성 및 모듈성: 수평 확장, 다양한 플러그인 및 확장 도구 지원
  • 사용 사례: 클라우드 네이티브 애플리케이션 관리, 마이크로서비스 아키텍처, 그리고 대규모 애플리케이션 배포 환경에서 사용됩니다.

 

2. Crossplane (CNCF Incubating)

  • 설명: Crossplane은 Kubernetes에서 인프라를 관리하는 오픈소스 프로젝트로, 클라우드 및 온프레미스 리소스를 Kubernetes API를 통해 관리할 수 있게 합니다.
  • 문제 해결: 클라우드 네이티브 환경에서 인프라 관리를 통합하고, 개발자가 익숙한 Kubernetes API로 인프라와 애플리케이션을 함께 관리할 수 있도록 합니다.
  • https://docs.crossplane.io/latest/
  • 특징
    • Kubernetes 네이티브 인프라 관리: 클라우드 리소스(예: AWS, GCP, Azure)를 Kubernetes CRD(Custom Resource Definition)로 관리
    • 멀티 클라우드 및 하이브리드 클라우드 지원: 하나의 Kubernetes API로 여러 클라우드 플랫폼을 관리
    • 애플리케이션과 인프라의 통합: 인프라와 애플리케이션을 동일한 방식으로 선언적 관리
  • 사용 사례: 클라우드 인프라 통합 관리, DevOps 환경에서 인프라와 애플리케이션을 동시에 관리하고자 하는 경우, 그리고 하이브리드 및 멀티 클라우드 환경에서의 복잡한 인프라 관리를 간소화할 때 유용합니다.

 

3. Karmada (CNCF Incubating)

  • 설명: Karmada는 Kubernetes 기반의 멀티 클러스터 관리를 위한 오픈소스 프로젝트로, 여러 Kubernetes 클러스터를 중앙에서 통합 관리할 수 있게 해줍니다.
  • 문제 해결: 멀티 클러스터 환경에서 중앙화된 관리와 애플리케이션의 글로벌 배포 문제를 해결합니다.
  • https://karmada.io/docs/
  • 특징
    • Kubernetes-native API 호환성: 기존 Kubernetes 클러스터와 도구 체인에 원활하게 통합되며, 단일 클러스터에서 멀티 클러스터로 무변경 업그레이드를 지원
    • 멀티 클러스터 자동화: 클러스터 간 자동 스케일링, 페일오버, 로드 밸런싱을 지원하며, 다양한 시나리오(예: 액티브-액티브, 재해 복구 등)에 대한 빌트인 정책 제공
    • 중앙화된 멀티 클러스터 관리: 퍼블릭 클라우드, 온프레미스, 엣지 환경의 클러스터를 중앙에서 관리하며, 위치에 구애받지 않는 클러스터 관리와 다차원 고가용성 정책(리전, 가용영역, 클러스터, 프로바이더 간)을 제공
  • 사용 사례: Karmada는 여러 클라우드와 클러스터에서 애플리케이션을 통합적으로 관리해야 하는 멀티 클러스터 환경에서 유용합니다. 

 

4. Knative (CNCF Incubating)

  • 설명: Knative는 Kubernetes 위에서 서버리스 워크로드를 쉽게 배포하고 관리할 수 있도록 설계된 오픈소스 플랫폼입니다. 서버리스 애플리케이션의 개발과 관리를 간소화합니다.
  • 문제 해결: 서버리스 애플리케이션의 배포, 스케일링 및 관리를 간소화하여 서버 관리의 복잡성을 줄입니다.
  • https://knative.dev/docs/concepts/#knative-serving
  • 특징
    • 자동 스케일링: 트래픽에 따라 서버리스 애플리케이션을 자동으로 확장하거나 축소하여 리소스를 효율적으로 관리하고, 필요하지 않은 리소스는 자동으로 축소해 비용 절감
    • 이벤트 기반 애플리케이션: Knative Eventing을 통해 다양한 이벤트 소스에서 이벤트를 받아 처리하며, 이벤트 기반 마이크로서비스 아키텍처를 쉽게 구축 가능, CloudEvents 표준을 준수해 이벤트를 처리
    • Kubernetes 통합: Knative Serving과 Eventing을 사용해 서버리스 애플리케이션을 Kubernetes 클러스터에서 관리할 수 있으며, 기존 Kubernetes API 및 도구와 완벽하게 호환
  • 사용 사례: Knative는 서버리스 애플리케이션 개발 및 배포에 적합하며, 특히 이벤트 기반 아키텍처나 트래픽이 비정기적인 워크로드에서 자동으로 리소스를 최적화하는 환경에 유용합니다. 이벤트 주도형 마이크로서비스, 트래픽 변화가 큰 웹 애플리케이션, 백엔드 프로세싱 워크로드 등에 효과적입니다.

 

5. Volcano (CNCF Incubating)

  • 설명: Volcano는 Kubernetes 상에서 고성능 컴퓨팅(HPC) 워크로드를 관리하고 스케줄링하는 오픈소스 프로젝트입니다. HPC 애플리케이션을 최적화하여 실행할 수 있도록 설계되었습니다.
  • 문제 해결: 데이터 과학, 머신러닝, 고성능 컴퓨팅 워크로드를 Kubernetes에서 관리할 때의 스케줄링 복잡성을 해결합니다.
  • https://volcano.sh/en/docs/
  • 특징:
    • 고성능 컴퓨팅 스케줄링 최적화: 병렬 작업, 대용량 데이터 계산 작업을 효율적으로 스케줄링하며, 다양한 컴퓨팅 프레임워크(Spark, TensorFlow, PyTorch 등)를 지원
    • 리소스 관리 최적화: CPU, GPU, Arm 등 다양한 아키텍처에서 자원 사용량을 최적화하여, 고성능 워크로드의 리소스 할당을 개선하고 효율적으로 배포
    • 다양한 스케줄링 정책 지원: Gang 스케줄링, Fair-share, Queue 스케줄링, Preemption 등 다양한 스케줄링 정책을 지원하여 유연하게 워크로드를 관리 가능
  • 사용 사례: Volcano는 머신러닝, 데이터 과학, 금융 모델링, 유전자 분석 등 고성능 컴퓨팅을 필요로 하는 작업에 적합하며, Kubernetes 환경에서의 복잡한 배치 작업 스케줄링을 효율적으로 처리합니다.

 

 

 

6. Coordination & Service Discovery (조정 및 서비스 디스커버리)

  • CoreDNS (CNCF Graduated)
  • etcd (CNCF Graduated)

 

1. CoreDNS (CNCF Graduated)

  • 설명: CoreDNS는 클라우드 네이티브 환경에서 서비스 디스커버리를 위한 오픈소스 DNS 서버로, 특히 Kubernetes 클러스터에서 서비스 디스커버리와 네임서버 구성을 쉽게 처리하는 플러그인 기반의 유연한 DNS 서버입니다.
  • 문제 해결: Kubernetes 클러스터 내에서 서비스 디스커버리 및 네임서버 구성의 복잡성을 줄이고, 확장 가능한 DNS 솔루션을 제공하여 트래픽을 효율적으로 라우팅할 수 있도록 돕습니다.
  • https://coredns.io/manual/toc/
  • 특징
    • 플러그인 기반 아키텍처: 다양한 기능을 플러그인 형태로 추가할 수 있어 DNS 서버를 유연하게 구성 및 확장 가능
    • Kubernetes 네이티브 통합: Kubernetes 환경에서 네임스페이스와 서비스를 관리하고, 클러스터 내부 서비스 디스커버리를 쉽게 처리
    • 고성능 및 확장성: 다중 코어 지원과 간단한 설정으로 고성능을 제공하며, 대규모 클러스터 환경에서도 안정적으로 확장성 유지
  • 사용 사례: CoreDNS는 Kubernetes 클러스터에서 서비스 디스커버리, 네트워크 트래픽 관리, 그리고 DNS 기반 라우팅을 간편하게 설정하고 관리하는 데 사용됩니다.

 

2. etcd (CNCF Graduated)

  • 설명: etcd는 분산 키-값 저장소로, 특히 Kubernetes 클러스터와 같은 분산 시스템에서 설정 정보와 메타데이터를 저장하고 동기화하는 데 사용됩니다. Kubernetes의 핵심 데이터 저장소 역할을 하며, 고가용성과 데이터 일관성을 보장합니다.
  • 문제 해결: 분산 시스템에서 데이터 일관성과 고가용성을 유지하면서, 클러스터 내에서 설정 정보를 동기화하고 저장하는 복잡성을 해결합니다.
  • https://etcd.io/docs/v3.5/
  • 특징
    • 강력한 일관성 보장: Raft 알고리즘을 사용해 분산된 시스템 내에서 데이터의 일관성을 유지하며, 모든 클러스터 멤버가 동일한 상태를 공유
    • 고가용성: 데이터는 여러 노드에 복제되어 장애 발생 시에도 빠른 복구가 가능하고, 안정적인 데이터 접근을 보장
    • Kubernetes 필수 구성 요소: Kubernetes의 핵심 데이터 저장소로, 클러스터의 모든 상태와 설정 정보를 관리
  • 사용 사례: etcd는 Kubernetes 클러스터에서 설정 정보, 서비스 레지스트리, 메타데이터 저장소 등 분산 시스템에서의 중요한 역할을 하며, 데이터 일관성을 요구하는 다양한 시스템에서 활용됩니다.

 

 

7. Service Proxy (서비스 프록시)

  • Envoy (CNCF Graduated)
  • Contour (CNCF Incubating)

 

1. Envoy (CNCF Graduated)

  • 설명: Envoy는 클라우드 네이티브 애플리케이션에서 서비스 간 통신을 관리하는 고성능 오픈소스 프록시입니다. 마이크로서비스 아키텍처에서 네트워크 트래픽을 효율적으로 처리하고, 로드 밸런싱, 서비스 디스커버리, 모니터링, 그리고 보안 기능을 제공합니다.
  • 문제 해결: 마이크로서비스 아키텍처에서 서비스 간의 복잡한 통신을 관리하고, 로드 밸런싱과 모니터링, 트래픽 관리의 어려움을 해결합니다.
  • https://www.envoyproxy.io/docs/envoy/v1.31.2/intro/what_is_envoy
  • 특징
    • 로드 밸런싱 및 트래픽 관리: Envoy는 고급 로드 밸런싱 알고리즘을 통해 트래픽을 효율적으로 분배하고, 트래픽 라우팅, 재시도 정책을 유연하게 설정 가능
    • 서비스 메쉬 통합: Istio와 같은 서비스 메쉬와 원활하게 통합되어, 서비스 간의 통신을 제어하고 모니터링하며, 보안 정책을 쉽게 적용
    • 강력한 모니터링 및 관찰 가능성: 트래픽 메트릭, 로깅, 분산 트레이싱을 지원하여 네트워크 성능 모니터링 및 디버깅이 가능하며, 이를 통해 네트워크와 애플리케이션 성능 문제를 쉽게 파악 가능
  • 사용 사례: Envoy는 마이크로서비스 간의 트래픽을 최적화하고, 다양한 언어와 프레임워크로 이루어진 대규모 애플리케이션에서 서비스 메쉬를 구축할 때 필수적으로 사용됩니다. 특히 네트워크 관리와 성능 최적화가 중요한 환경에서 폭넓게 활용됩니다.

 

2. Contour (CNCF Incubating)

  • 설명: Contour는 Envoy 기반의 고성능 서비스 프록시로, Kubernetes 환경에서 HTTP(S) 트래픽을 관리하는 Ingress 컨트롤러입니다. Envoy를 역방향 프록시와 로드 밸런서로 사용하며, Kubernetes 클러스터 내에서 로드 밸런싱과 트래픽 관리를 쉽게 설정할 수 있도록 설계된 오픈소스 프로젝트입니다.
  • 문제 해결: Kubernetes 클러스터에서 복잡한 HTTP(S) 트래픽 관리와 라우팅을 효율적으로 처리하며, 동적 구성 업데이트를 통해 다양한 트래픽 요구사항을 해결합니다. 여러 팀이 사용하는 클러스터에서 안전하게 다중 Ingress 구성을 지원합니다.
  • https://projectcontour.io/docs/1.30/
  • 특징
    • Envoy 기반 Ingress 컨트롤러: Envoy를 사용하여 Kubernetes에서 HTTP 및 HTTPS 트래픽을 처리하며, 성능과 확장성을 제공
    • 동적 재구성: 트래픽 규칙을 실시간으로 업데이트할 수 있으며, Kubernetes 클러스터 내 서비스 변경 사항에 유연하게 대응
    • TLS 관리 및 보안: TLS 인증서를 자동으로 관리하고 갱신하여 보안 정책을 쉽게 적용
  • 사용 사례: Contour는 Kubernetes 클러스터에서 Ingress 컨트롤러로 사용되어 HTTP 및 HTTPS 트래픽을 효율적으로 처리하고, Envoy의 성능을 활용하여 서비스 간 트래픽을 안전하고 효과적으로 관리하는 데 사용됩니다. 특히 멀티팀 Kubernetes 클러스터에서 Ingress 설정을 관리할 때 유용합니다.

 

 

8. Remote Procedure Call (원격 프로시저 호출)

  • gRPC (CNCF Graduated)

 

gRPC (CNCF Graduated)

  • 설명: gRPC는 Google이 개발한 고성능 오픈소스 원격 프로시저 호출(RPC) 프레임워크로, 클라이언트와 서버 간의 통신을 쉽게 구현할 수 있도록 설계되었습니다. gRPC는 HTTP/2를 기반으로 하며, 스트리밍과 양방향 통신을 지원하는 프로토콜입니다.
  • 문제 해결: 마이크로서비스 아키텍처에서 클라이언트와 서버 간의 복잡한 통신 문제를 해결하고, HTTP/2를 통해 빠르고 효율적인 통신을 가능하게 합니다. 또한, 다양한 프로그래밍 언어를 지원해 여러 환경에서 일관된 통신을 제공합니다.
  • https://grpc.io/docs/what-is-grpc/introduction/
  • 특징
    • HTTP/2 기반 통신: gRPC는 HTTP/2를 기반으로 하여 멀티플렉싱, 흐름 제어, 헤더 압축 등을 지원하며, 효율적인 양방향 스트리밍 통신을 제공
    • 다양한 언어 지원: gRPC는 C++, Java, Python, Go 등 여러 프로그래밍 언어를 지원하여 다양한 플랫폼과 환경에서 일관된 통신 인터페이스를 제공
    • 프로토콜 버퍼 사용: gRPC는 데이터 직렬화를 위해 Google의 Protocol Buffers(proto)를 사용하여 효율적이고 빠른 데이터 전송이 가능
  • 사용 사례: gRPC는 마이크로서비스 아키텍처, 분산 시스템, 실시간 데이터 스트리밍, IoT 애플리케이션 등에서 클라이언트와 서버 간의 고성능 통신을 구현하는 데 사용됩니다. 또한, 다양한 프로그래밍 언어를 사용하는 환경에서 일관된 통신 방법을 제공하는 데 유용합니다.

 

9. Service Mesh (서비스 메시)

  • Istio (CNCF Graduated)
  • Linkerd (CNCF Graduated)

1. Istio (CNCF Graduated)

 

 

  • 설명: Istio는 서비스 메시를 위한 오픈소스 플랫폼으로, 마이크로서비스 간의 네트워크 통신을 제어, 관리, 모니터링, 그리고 보안을 제공하는 데 사용됩니다. Istio는 서비스 간의 트래픽을 통제하고, 인증 및 암호화를 통해 네트워크 보안을 강화합니다.
  • 문제 해결: 마이크로서비스 아키텍처에서 발생하는 복잡한 네트워크 통신 문제를 해결하고, 서비스 간 트래픽을 일관되게 관리하며, 인증 및 암호화를 통해 보안을 강화합니다. 네트워크의 문제를 쉽게 파악하고 대응할 수 있도록 모니터링 기능도 제공합니다.
  • https://istio.io/latest/docs/overview/what-is-istio/
  • 특징
    • 트래픽 관리: A/B 테스트, Canary 배포, 로드 밸런싱, 트래픽 분할 등의 고급 트래픽 제어 기능을 제공하여 서비스 간의 트래픽을 세밀하게 관리
    • 보안 강화: 서비스 간 통신을 자동으로 암호화하고, 상호 TLS 인증 및 권한 부여를 통해 네트워크 보안을 강화
    • 모니터링 및 관찰성: 자동으로 메트릭, 로그, 분산 트레이싱을 수집하여 네트워크 내 트래픽의 모니터링과 관찰 가능성을 제공
  • 사용 사례: Istio는 대규모 마이크로서비스 환경에서 서비스 간 트래픽을 효율적으로 관리하고 보안을 강화하는 데 사용됩니다. 복잡한 네트워크 통신이 필요한 애플리케이션, 특히 트래픽 관리와 모니터링이 중요한 상황에서 유용합니다.

 

2. Linkerd (CNCF Graduated)

  • 설명: Linkerd는 경량화된 서비스 메시 솔루션으로, 마이크로서비스 간 트래픽 관리와 보안을 제공하는 오픈소스 프로젝트입니다. Kubernetes 환경에서 설치와 운영이 간편하며, 서비스 간 통신을 안전하게 관리합니다. Linkerd는 성능과 단순성을 강조하여, 빠르게 서비스를 배포하고 관리할 수 있습니다.
  • 문제 해결: Linkerd는 복잡한 마이크로서비스 환경에서 서비스 간의 트래픽 관리, 모니터링, 보안을 간소화하고 쉽게 구현할 수 있도록 하여, 마이크로서비스 네트워크의 복잡성을 해결합니다.
  • https://linkerd.io/2.16/overview/
  • 특징
    • 경량화된 트래픽 관리: Linkerd는 간단하고 경량화된 서비스 메시로, 트래픽 관리, 로드 밸런싱, 그리고 고성능을 효율적으로 처리
    • 자동화된 보안: Linkerd는 자동으로 TLS 암호화를 적용하여 서비스 간 통신의 보안을 강화하고, 통신 데이터의 안전성을 보장
    • 손쉬운 설치와 운영: 경량화된 아키텍처 덕분에 설치 및 운영이 매우 간편하며, Kubernetes 클러스터 내에서 빠르게 배포하고 관리 가능
  • 사용 사례: Linkerd는 성능과 단순성을 중시하는 경량화된 서비스 메시로, 중소규모의 마이크로서비스 환경에서 트래픽 관리와 보안을 쉽게 구현하는 데 적합합니다. Kubernetes 클러스터에서 손쉽게 트래픽 제어 및 모니터링을 제공하는 데 사용됩니다.

 

10. API Gateway (API 게이트웨이)

  • Emissary Ingress (CNCF Incubating)

Emissary Ingress (CNCF Incubating)

  • 설명: Emissary Ingress는 Kubernetes 클러스터에서 API 게이트웨이 역할을 하는 오픈소스 솔루션입니다. 특히 Envoy 프록시를 기반으로 구축되어 있으며, 마이크로서비스 간의 트래픽을 효율적으로 관리하고, API 요청을 라우팅하는 데 최적화되어 있습니다.
  • 문제 해결: Emissary Ingress는 마이크로서비스 아키텍처에서 복잡한 API 요청을 관리하고, 외부 트래픽을 내부 서비스로 안전하게 라우팅하는 문제를 해결합니다. 또한 확장 가능한 API 관리와 보안 기능을 제공하여 Kubernetes 클러스터에서 트래픽을 안정적으로 제어합니다.
  • https://www.getambassador.io/docs/emissary
  • 특징
    • Envoy 기반 게이트웨이: Envoy 프록시를 기반으로 고성능의 API 라우팅과 트래픽 관리 기능을 제공하며, 높은 안정성과 확장성을 보장
    • 고급 트래픽 관리: A/B 테스트, Canary 배포, 트래픽 분할 등의 기능을 지원하여 API 요청을 세밀하게 제어하고 관리
    • 통합 보안: TLS 인증, JWT 인증을 통해 API 요청을 안전하게 처리하며, 외부 트래픽에 대한 보안을 강화
  • 사용 사례: Emissary Ingress는 Kubernetes 클러스터에서 API 요청을 효율적으로 처리하고, 서비스 간의 트래픽을 안전하게 관리해야 하는 환경에서 사용됩니다. 마이크로서비스 간의 API 관리 및 보안을 강화하는 데 적합하며, 외부 트래픽을 내부 서비스로 안전하게 라우팅하는 데 유용합니다.

 

11. Cloud Native Storage

  • Rook (CNCF Graduated)
  • CubeFS (CNCF Incubating)
  • Longhorn (CNCF Incubating)

 

1. Rook (CNCF Graduated)

  • 설명: Rook는 클라우드 네이티브 환경에서 분산 스토리지 시스템을 관리하는 오픈소스 스토리지 오케스트레이터입니다. Kubernetes 상에서 클러스터 파일 시스템, 블록 스토리지, 오브젝트 스토리지를 자동으로 배포하고 관리할 수 있도록 지원합니다.
  • 문제 해결: 분산 스토리지 시스템의 배포와 관리를 자동화하여, 클라우드 네이티브 환경에서 스토리지 관리의 복잡성을 줄입니다.
  • https://rook.io/docs/rook/v1.12/Getting-Started/intro/
  • 특징
    • 다양한 스토리지 유형 지원: Rook는 블록, 파일, 오브젝트 스토리지를 지원하여 유연한 스토리지 배포 가능
    • Kubernetes와의 통합: Kubernetes 환경에서 스토리지를 자동으로 배포하고, 확장 및 관리 작업을 지원
    • 자체 복구 기능: Rook는 장애 발생 시 자동으로 스토리지를 복구하며, 고가용성 제공
  • 사용 사례: Rook는 Kubernetes 클러스터에서 클라우드 네이티브 애플리케이션을 위한 스토리지 관리에 적합하며, 다양한 스토리지 요구를 충족하는 대규모 분산 스토리지 솔루션을 필요로 하는 환경에서 사용됩니다.

 

2. CubeFS (CNCF Incubating)

  • 설명: CubeFS는 클라우드 네이티브 환경에서 확장성과 높은 성능을 제공하는 분산 파일 시스템입니다. 다양한 데이터 접근 프로토콜(S3, POSIX, HDFS)을 지원하며, Kubernetes에 쉽게 통합 및 관리할 수 있도록 설계된 파일 스토리지 솔루션입니다.
  • 문제 해결: 대규모 분산 환경에서 데이터 저장 및 관리를 단순화하고, 클라우드 네이티브 워크로드에서 효율적인 파일 스토리지를 제공합니다.
  • https://cubefs.io/docs/master/overview/introduction.html
  • 특징
    • 높은 확장성: CubeFS는 PB 및 EB 수준으로 스토리지 확장이 가능하며, 성능 저하 없이 대규모 데이터 저장소로 확장 가능
    • Kubernetes 통합: Kubernetes 클러스터에 CubeFS를 배포하고 관리할 수 있으며, 클라우드 네이티브 환경에 최적화
    • 다양한 프로토콜 지원: CubeFS는 S3, POSIX, HDFS와 호환되며, 프로토콜 간의 상호 운용성 제공
    • 데이터 일관성 보장: 멀티 레벨 캐싱과 강력한 복제 프로토콜을 통해 데이터의 강력한 일관성을 보장
  • 사용 사례: CubeFS는 대규모 데이터 저장과 처리가 필요한 클라우드 네이티브 워크로드에서 사용되며, 파일 기반 애플리케이션 및 빅데이터 처리 시스템에 적합합니다.

 

3. Longhorn (CNCF Incubating)

  • 설명: Longhorn는 Kubernetes 환경에서 사용하기 쉬운 경량 분산 블록 스토리지 시스템입니다. 오픈소스 프로젝트로, 데이터를 안전하게 복제하고 백업할 수 있는 기능을 제공합니다. 
  • 문제 해결: 클라우드 네이티브 환경에서 복잡한 스토리지 관리 문제를 간소화하여 블록 스토리지를 쉽게 운영하고, 데이터를 보호하며 복구할 수 있도록 지원합니다.
  • https://longhorn.io/docs/1.7.1/what-is-longhorn/
  • 특징
    • 분산 블록 스토리지: Longhorn는 각 스토리지 볼륨을 분산된 형태로 복제하며, 데이터 손실을 방지
    • 자동화된 백업 및 복구: 백업을 NFS 또는 AWS S3와 같은 외부 저장소에 저장하고, 스냅샷을 주기적으로 생성하여 데이터 보호
    • Kubernetes 네이티브 통합: Longhorn는 Kubernetes와 완벽히 통합되어, Persistent Volume(PV)과 Persistent Volume Claim(PVC)을 통해 쉽게 배포 및 관리 가능
    • 다중 복제 및 스케줄링: 각 볼륨의 복제본 수를 설정하고, 여러 노드에 복제본을 스케줄링하여 고가용성 보장
  • 사용 사례: Longhorn는 데이터 보호 및 복구가 중요한 Kubernetes 클러스터에서 사용되며, 클라우드 네이티브 애플리케이션의 분산 블록 스토리지를 관리하는 데 적합합니다.

 

12. Container Runtime (컨테이너 런타임)

  • containerd (CNCF Graduated)
  • CRI-O (CNCF Graduated)

1. containerd (CNCF Graduated)

설명: containerd는 클라우드 네이티브 환경에서 컨테이너 실행을 관리하는 경량 오픈소스 컨테이너 런타임입니다. Docker와 Kubernetes의 기본 런타임으로 사용되며, 이미지 풀링, 저장, 실행, 네트워크 관리, 스토리지와 같은 핵심 기능을 제공합니다.
문제 해결: containerd는 컨테이너 실행과 관련된 복잡한 작업을 간소화하여, 안정적인 컨테이너 배포와 관리 환경을 제공합니다.

https://containerd.io/docs/
특징

  • 가벼운 런타임: 경량의 컨테이너 런타임으로, 리소스 효율성이 높고 빠른 실행을 지원
  • Kubernetes와 통합: Kubernetes에서 CRI(Container Runtime Interface)를 사용하여 쉽게 연동 가능
  • 확장 가능성: 플러그인 아키텍처를 통해 다양한 기능 확장이 가능, 컨테이너 실행, 이미지 관리 등을 효율적으로 관리

사용 사례: containerd는 Kubernetes 클러스터에서 컨테이너 실행을 관리하며, 가상화된 애플리케이션의 배포 및 운영에 필수적인 역할을 합니다.

 

 

2. CRI-O (CNCF Graduated)

  • 설명: CRI-O는 Kubernetes에 최적화된 경량 컨테이너 런타임으로, OCI(Open Container Initiative) 표준을 준수하여 Kubernetes가 컨테이너를 관리할 수 있도록 지원하는 컨테이너 런타임입니다. Kubernetes가 컨테이너를 실행하고 관리하는 데 필요한 최소한의 기능만 제공하며, 기존 Docker 런타임의 복잡성을 줄인 대안으로 사용됩니다.
  • 문제 해결: Kubernetes에서 컨테이너를 실행할 때, Docker의 복잡한 기능을 생략하고, 컨테이너 런타임에 필요한 핵심 기능만 제공하여 성능과 리소스 사용을 최적화합니다. CRI-O는 다양한 OCI 호환 런타임을 사용할 수 있도록 설계되었습니다.
  • https://cri-o.io/
  • 특징
    • Kubernetes 최적화: CRI 표준을 구현하여, Kubernetes와의 원활한 통합을 지원하며, Kubernetes Pod의 컨테이너 실행을 관리
    • 경량 설계: Docker의 모든 기능을 포함하지 않고, 컨테이너 런타임에 필요한 필수 요소만 제공하여 성능을 향상
    • OCI 표준 준수: CRI-O는 모든 OCI 호환 컨테이너 런타임과 호환되며, 다양한 컨테이너 이미지를 지원
    • 네트워킹 및 보안: CNI(Container Network Interface)와 다양한 보안 도구(Seccomp, SELinux, Capabilities)를 통해 네트워킹 및 보안 정책을 관리
  • 사용 사례: CRI-O는 Kubernetes 클러스터에서 경량화된 컨테이너 런타임을 필요로 하는 환경에서 사용되며, 대규모 클러스터 운영에서 성능을 극대화하는 데 적합합니다.

 

13. Cloud Native Network (클라우드 네이티브 네트워크)

  • Cilium (CNCF Graduated)
  • CNI (CNCF Graduated)

1. Cilium (CNCF Graduated)

  • 설명: Cilium은 클라우드 네이티브 환경에서 네트워크와 보안을 투명하게 관리하는 오픈소스 네트워킹 솔루션입니다. Linux 커널의 eBPF(Extended Berkeley Packet Filter)를 활용하여 네트워크 트래픽을 처리하고, 세밀한 보안 정책을 제공합니다.
  • 문제 해결: Cilium은 IP 주소 대신 서비스 및 컨테이너 ID를 기반으로 보안 정책을 적용하여, 변화하는 환경에서도 안정적으로 보안을 관리합니다.
  • https://docs.cilium.io/en/stable/index.html
  • 특징
    • eBPF 기반 네트워킹: Cilium은 eBPF를 활용하여 Linux 커널 수준에서 네트워크 트래픽을 처리하고, 고성능 네트워킹과 보안 정책을 구현
    • 서비스 메시 통합: Cilium은 Istio와 같은 서비스 메시와 통합하여 네트워크 보안 정책 강화
    • 고성능 및 확장성: Cilium은 마이크로서비스 간의 네트워크 성능을 저하시키지 않고 확장 가능
  • 사용사례: Cilium은 Kubernetes 환경에서 마이크로서비스 간의 통신과 보안을 효과적으로 관리하고, 네트워크 가시성 및 성능을 강화하는 데 사용됩니다.

 

2. CNI (CNCF Graduated)

  • 설명: CNI(Container Network Interface)는 Kubernetes와 같은 컨테이너 오케스트레이션 시스템에서 네트워킹을 제공하기 위한 표준 인터페이스입니다. CNI는 컨테이너 네트워크 설정 및 관리 작업을 간단하게 처리하며, 다양한 네트워크 플러그인과 통합될 수 있습니다.
  • 문제 해결: 컨테이너 기반 애플리케이션에서는 네트워킹 설정이 복잡해질 수 있습니다. CNI는 이러한 복잡성을 줄이고, 다양한 네트워크 플러그인을 Kubernetes와 쉽게 통합할 수 있게 합니다.
  • https://www.cni.dev/
  • 특징
    • 유연한 네트워크 플러그인 통합: CNI는 다양한 네트워크 플러그인(Calico, Weave, Flannel 등)을 지원
    • 모듈식 아키텍처: 네트워크와 관련된 다양한 작업(예: IP 주소 할당, 라우팅 설정)을 모듈식으로 처리하여 유연한 네트워킹 설정 가능
    • Kubernetes 네이티브: Kubernetes와 완벽하게 통합되어, 클러스터 내에서 컨테이너 네트워크 설정 자동화
  • 사용 사례: CNI는 Kubernetes 클러스터에서 네트워킹을 설정하고 관리하는 데 필수적인 도구로, 다양한 네트워크 환경에서 유연하고 확장 가능한 네트워크 설정을 제공합니다.

14. Security & Compliance (보안 및 규정 준수)

  • Falco (CNCF Graduated)
  • Open Policy Agent (CNCF Graduated)
  • SPIFFE (CNCF Graduated)
  • SPIRE (CNCF Graduated)
  • Kyverno (CNCF Incubating)
  • Keycloak (CNCF Incubating)
  • in-toto (CNCF Incubating)

1. Falco (CNCF Graduated)

  • 설명: Falco는 클라우드 네이티브 보안 도구로, 런타임 통찰력을 활용하여 클라우드, 컨테이너 및 kubernetes 워크로드에 대한 실시간 위협 탐지를 제공하는 오픈소스 프로젝트입니다.
  • 문제 해결: Falco는 의심스러운 활동을 신속하게 탐지하여 보안 침해 예방, 정책 적용으로 규정 준수 강화, 지속적 모니터링으로 시스템 안정성에 도움을 줍니다.
  • 특징
    • 실시간 모니터링 : Falco는 시스템 콜을 실시간으로 모니터링하여 컨테이너와 호스트에서 발생하는 모든 활동을 추적
    • 정책 기반 경고 : 사용자가 정의한 보안 정책에 따라 이상 행동을 탐지하고 경고를 생성. 이를 통해 보안 침해를 신속하게 식별 가능
    • 다양한 데이터 소스 지원 : Kubernetes, Docker, Cloud Foundry 등 다양한 환경에서 데이터를 수집하고 모니터링 가능
    • 확장성 : Falco는 다양한 플러그인과 통합할 수 있으며, 다른 보안 도구 및 로그 시스템과 연동 가능
    • 사용자 정의 규칙 : 특정 요구 사항에 맞게 사용자 정의 규칙을 생성하여 특정 행동이나 이벤트에 대한 경고 설정 가능
  • 사용 사례: Falco를 컨테이너, 쿠버네티스 및 클라우드를 위한 보안 카메라로 생각할 수 있습니다. 호스트, 컨테이너, 오케스트레이터 및 클라우드 로그에서 신호를 수집하고 의심스럽거나 비정상적인 동작을 보고합니다. Falco는 보안 이벤트를 감지하기 위한 커널 계측 메커니즘을 제공합니다. 그런 다음 노드, 컨테이너 런타임 및 쿠버네티스에서 가져온 메타데이터로 이를 보강합니다. 이 메타데이터는 컨테이너 이름, 이미지, 오케스트레이터 레이블, 오케스트레이터 리소스 유형 등을 기반으로 Falco 규칙을 동적으로 적용하는 데 사용됩니다.
  • Falco 문서

2. OPA (CNCF Graduated)

  • 설명: Open Policy Agent(OPA, "오파"로 발음)는 스택 전체에서 정책 시행을 통합하는 오픈 소스 범용 정책 엔진입니다. OPA는 정책을 코드로 지정하고 간단한 API를 제공하여 소프트웨어에서 정책 의사 결정을 오프로드할 수 있는 고급 선언적 언어를 제공합니다. OPA를 사용하여 마이크로서비스, 쿠버네티스, CI/CD 파이프라인, API 게이트웨이 등에서 정책을 시행할 수 있습니다.
  • 문제 해결: 클라우드 네이티브 환경에서 정책을 코드로 지정함으로써 일관된 정책 적용, 복잡한 규칙 처리에 도움이 되며 분산된 환경에서도 정책을 중앙에서 관리할 수 있습니다.
  • 특징
    • 정책 언어 Rego : OPA는 Rego라는 선언형 정책 언어를 사용하여 복잡한 정책 로직을 간결하게 표현하고 정의 가능
    • API 기반 : REST API를 통해 정책 결정을 제공하여, 애플리케이션이 OPA에 요청을 보내고 정책에 따른 허가 또는 거부 결정을 받을 수 있음
    • 유연한 통합 : Kubernetes, CI/CD 파이프라인, API 게이트웨이, 서비스 메시 등 다양한 환경과 쉽게 통합 가능
    • 정책 버전 관리 : 정책을 버전 관리하여 변경 이력을 추적하고 롤백할 수 있는 기능 제공
    • 관찰 가능성 : 정책 평가에 대한 로그를 기록하여 정책 적용 과정을 모니터링할 수 있음
  • 사용 사례: OPA는 Kubernetes 클러스터에서 RBAC을 강화하여 더 복잡한 정책을 정의하고 적용할 수 있습니다. 또한 CI/CD 파이프라인에 통합되어 자동 정책 검사를 수행하거나, Istio와 같은 서비스 메시와 통합하여 서비스 간 통신에 대한 세밀한 정책을 적용합니다.
  • OPA 문서

3. TUF (CNCF Graduated)

  • 설명: TUF는 컨테이너 레지스트리, 패키지 저장소 등을 보호하여 시스템이 공격에 저항하고 안전하게 복구할 수 있는 오픈소스 프레임워크입니다. TUF는 보안 메커니즘과 툴링을 결합하여 Sigstore와 같은 다른 보안 프로젝트에서도 사용되는 강력한 신뢰 루트를 제공합니다. 통합하기 쉽고 관리하기 쉽습니다.
  • 문제 해결: TUF는 소프트웨어 업데이트 과정, 공급망 등에서 발생하는 위협에 대해 신뢰성 있는 SW 배포 지원, 방어 메커니즘 제공, 데이터 유출 및 손상 방지 등의 기능을 제공합니다.
  • 특징
    • 다단계 서명 및 역할 : TUF는 여러 역할(예: 관리자, 배포자 등) 간의 권한을 분리하여, 특정 작업에 대한 접근을 제한. 이로 인해 각 역할에 대해 별도의 서명 절차를 요구
    • 서명된 메타데이터 : 모든 업데이트 메타데이터는 서명되어 있어, 수신자는 메타데이터의 진위를 확인할 수 있고, 이로 인해 중간자 공격 및 메타데이터 변조를 방지
    • 회복력 : TUF는 업데이트 서버가 공격받거나 오프라인 상태일 때도 업데이트를 계속 제공할 수 있도록 설계. (ex, 이전 버전의 메타데이터를 캐싱하여 사용자가 안전하게 소프트웨어를 업데이트할 수 있게 합니다.)
    • 자동 롤백 : 업데이트가 실패하거나 문제가 발생할 경우, TUF는 자동으로 이전 안전한 버전으로 롤백할 수 있는 기능을 제공
  • 사용 사례: 사용자에게 영향을 미치는 많은 유형의 키 및 저장소/레지스트리 손상을 방지하며 안전한 패키지 업데이르를 제공합니다. 손상에서 복구할 수 있는 안전한 방법을 제공합니다. 12년의 실무 경험, 약 12건의 보안 감사, 6건 정도의 심사를 거친 논문, 프로덕션에서 사용된 6건 정도의 구현, 수백만 개의 컨테이너 등이 보안되었습니다.
  • TUF 문서

4. cert-manager (CNCF Incubating)

  • 설명: cert-manager는 Kubernetes 및 OpenShift 워크로드를 위한 강력하고 확장 가능한 X.509 인증서 컨트롤러입니다. 인기 있는 공개 발급자와 비공개 발급자 모두 다양한 발급자로부터 인증서를 얻고 인증서가 유효하고 최신 상태인지 확인하고 만료되기 전에 구성된 시간에 인증서를 갱신하려고 시도합니다.
  • 문제 해결: cert-manager를 사용하여 TLS 인증서를 자동으로 관리함으로써 보안 수준을 높이고 안전항 통신을 보장합니다. 또한 수동의 번거로움을 덜어주고 자동화하여 운영 효율성을 높입니다. 인증서와 관련된 활동을 Kubernetes CRDs로 관리함으로써 관리가 용이해집니다.
  • 특징
    • 자동 인증서 발급 : cert-manager는 Let’s Encrypt, HashiCorp Vault, AWS Certificate Manager 등 다양한 인증서 발급 서비스를 지원하여 자동으로 TLS 인증서를 발급 가능
    • 자동 갱신 : 발급된 인증서는 정해진 기간이 지나면 만료되기 때문에 cert-manager는 인증서를 자동으로 갱신
    • Kubernetes 리소스 통합 : cert-manager는 Kubernetes Custom Resource Definitions (CRDs)을 사용하여 인증서, 발급자, 인증서 서명 요청(Certificate Signing Request) 등을 관리
    • 유연한 정책 설정 : 다양한 인증서 발급 정책을 설정할 수 있어, 환경에 맞는 맞춤형 관리가 가능
  • 사용 사례: 수동 인증서 관리란 발생을 기다리는 중단입니다. 잊어버린 갱신 한 번만 해도 전체 사이트가 다운됩니다. 따라서 자동화는 안정성의 핵심이며, cert-manager는 Kubernetes에서 이를 달성하기 위한 가장 중요한 도구입니다. 또한 서비스 메시와 같은 워크로드에는 로컬 인증 기관이 필요할 수 있으며, cert-manager는 인프라의 이러한 핵심 부분을 발급하고 제어하는 데 도움이 될 수 있습니다.
  • cert-manager 문서

5. in-toto (CNCF Incubating)

  • 설명: in-toto는 소프트웨어 공급망에 보안을 제공합니다. 소프트웨어를 만들 때 발생하는 빌드, 버전 제어, 테스트, 배포, 종속성 등의 작업을 암호화하여 누가, 어떤 단계를, 어떤 순서로 수행되었는지 추적하고 검증할 수 있습니다. in-toto는 또한 이러한 작업에 대한 정책을 시행하여 공급망이 설명한 대로 수행되도록 할 수 있습니다.
  • 문제 해결: 소프트웨어 공급망 전반을 추적하여 변경 사항을 실시간으로 탐지 및 방지할 수 있습니다. 또한 공급망을 추적하고 기록하기 때문에 문제 발생 시 원인을 찾는 데 도움을 줍니다. 또한 각 단계에서 소프트웨어가 정확하게 빌드, 테스트 되었는지 검증이 가능합니다.
  • 특징
    • 공급망 전체 추적 : in-toto는 소프트웨어 공급망에서 발생하는 모든 단계를 기록하고 추적합니다. 빌드, 테스트, 패키징 등 모든 활동을 투명하게 관리하여 각 단계의 무결성을 확인 가능
    • 정책 기반 검증 : in-toto는 개발 및 배포 과정에서 발생하는 각 단계가 사전에 정의된 정책에 따라 실행되었는지 검증. 이로 인해 예상치 못한 변경이나 위반 사항을 탐지 가능
    • 서명된 메타데이터 : 각 단계에서 생성된 메타데이터는 서명되어, 변경이 발생하지 않았음을 보장. 이를 통해 누군가가 악의적으로 공급망의 데이터나 코드를 변조하는 것을 방지
    • 프레임워크의 유연성 : in-toto는 소프트웨어 파이프라인의 모든 요소와 유연하게 통합될 수 있어, 특정 도구나 환경에 종속되지 않음. 다양한 빌드 시스템 및 CI/CD 파이프라인과 호환
    • 위협 모델 방지: in-toto는 소프트웨어 공급망에서 발생할 수 있는 다양한 위협 모델(예: 빌드 중 악성 코드 주입, 배포 시 코드 변조 등)을 사전에 정의하고 이에 맞는 보호 메커니즘을 제공
  • 사용 사례: 소프트웨어 공급망의 많은 손상이 사용자에게 영향을 미치지 않도록 방지합니다. 또한 추적성을 제공하여 문제가 발생했을 때 무슨 일이 일어났는지 확인할 수 있습니다.
  • in-toto 문서

6. Keycloak (CNCF Incubating)

  • 설명: Keycloak은 최신 애플리케이션과 서비스를 위한 오픈소스 ID 및 액세스 관리(IAM) 솔루션입니다. 주로 개발자가 최소한의 노력으로 애플리케이션을 쉽게 보호할 수 있도록 설계되었으며, OAuth2, OpenID Connect, WebAuthn을 지원하는 업계 보안 표준 프로토콜을 기반으로 구축됩니다.
  • 문제 해결: 애플리케이션과 서비스에 대해 인증과 인가를 쉽게 관리할 수 있도록 지원합니다. 별도로 구현할 필요가 없어 관리 복잡성이 감소될뿐만 아니라,. 기존 인프라와 통합이 가능하고, 강력한 인증 및 사용자 관리가 가능합니다.
  • 특징
    • 친숙한 인터페이스 : 관리자와 사용자에게 Keycloak을 구성하고 관리하기 위한 광범위하고 친숙한 인터페이스를 제공
    • 기존 인프라 통합 : SAML2 기반 IdP, LDAP 서버, Kerberos/SPNEGO, 사용자 지정 사용자 스토리지 솔루션과 같은 기존 보안 인프라는 통합하기 쉽고 애플리케이션과 최종 사용자에게 투명하게 제공
    • 노코딩 기반 : 완벽하게 사용자 지정 가능한 로그인 페이지, 강력한 인증, 비밀번호 복구 지원, 클라이언트 비밀 로테이션, 2FA 복구 코드, 약관, 단계별 인증 등을 제공. 코딩 필요 없이 가능
    • 확장성 : 사용자에게 표시되는 모든 페이지는 사용자 지정 테마를 지원하므로 페이지의 모양과 느낌을 수정하여 회사 브랜딩 및 기존 애플리케이션과 통합 가능
  • 사용 사례: Keycloak은 내장된 클라우드 네이티브 ID 및 액세스 제어 표준을 제공합니다. 애플리케이션의 보안 측면을 Keycloak에 위임함으로써 개발자는 다양한 인증 메커니즘에 대해 걱정하거나 암호화에 대해 이해하거나 비밀번호를 안전하게 저장하는 방법에 대해 걱정할 필요가 없습니다. 개발자는 OAuth2, OpenID Connect, WebAuthn, SAML2 기반 IDP, LDAP 서버, Kerberos/SPNEGO와 같은 최신 인증 및 권한 부여 프로토콜을 활용할 수 있습니다. Keycloak은 인프라 팀과 클라우드 네이티브 개발자가 통합된 보안 표준을 통해 클라우드 네이티브 스택 기술을 보호하여 사용자에게 사용성, 확장성 및 보안에 중점을 둔 클라우드 친화적인 경험을 제공할 수 있도록 합니다.
  • keycloak 문서

 

15. Automation & Configuration (자동화 및 구성)

  • KubeEdge (CNCF Incubating)
  • Chaos Mesh (CNCF Incubating)
  • Litmus (CNCF Incubating)

1. Cloud Custodian (CNCF Incubating)

  • 설명: Cloud Custodian은 대부분의 조직이 퍼블릭 클라우드 계정을 관리하는 데 사용하는 수십 개의 도구와 스크립트를 하나의 오픈 소스 도구로 통합한 도구입니다. YAML 파일로 정의된 정책을 통해 클라우드 인프라를 관리합니다.
  • 문제 해결: Cloud Custodian은 특히 대규모 클라우드 환경에서 수작업으로 관리하기 어려운 보안, 비용 절감, 규정 준수 문제를 자동화하는 데 중점을 둡니다.
  • 특징
    • 정책 기반 관리 : YAML 형식의 정책 파일을 작성해, 어떤 리소스를 관리할지, 어떤 작업을 수행할지 정의
    • 다중 클라우드 지원 : AWS, Azure, GCP 등 여러 클라우드 환경에서 작동하며, 클라우드 간 일관된 관리 정책을 적용
    • 자동화된 조치 : 조건에 맞는 리소스를 발견하면 자동으로 정의된 조치를 수행(예: 리소스 종료, 태그 추가, 알림 전송 등).
    • 확장 가능성 : 사용자 정의 필터와 작업을 추가해 조직의 요구에 맞게 확장
    • 실시간 모니터링 및 대응 : 클라우드 환경의 실시간 변화를 감지하고, 이를 기반으로 적시에 정책을 적용
  • 사용 사례: Cloud Custodian은 다양한 클라우드 관리 및 운영 시나리오에 사용되며 주요 사례로는 비용 최적화, 보안 관리, 규정 준수 등이 있습니다.
  • Cloud Custodian 문서

2. KubeEdge (CNCF Incubating)

  • 설명: KubeEdge 는 네이티브 컨테이너화된 애플리케이션 오케스트레이션과 디바이스 관리를 Edge의 호스트로 확장하는 오픈 소스 시스템입니다. Kubernetes를 기반으로 구축되었으며 클라우드와 Edge 간의 네트워킹, 애플리케이션 배포 및 메타데이터 동기화를 위한 핵심 인프라 지원을 제공합니다. 
  • 문제 해결: KubeEdge는 에지 컴퓨팅에서 발생하는 간헐적인 네트워크 연결 문제, edge 디바이스 원격 관리, edge에서의 저지연 데이터 처리에 도움을 줍니다.
  • 특징
    • 클라우드-에지 협력 아키텍처 : 클라우드는 중앙 집중식 관리를 담당하고, 에지는 데이터를 처리하고 애플리케이션을 실행
    • 오프라인 동작 지원 : 에지 장치와 클라우드 간의 연결이 끊겼을 때도 에지 장치는 독립적으로 동작하도록 지원
    • 디바이스 관리 : KubeEdge는 다양한 에지 디바이스(IoT 장치)를 관리할 수 있는 디바이스 관리 기능을 제공
    • 저지연 데이터 처리 : 에지에서 실시간으로 데이터를 처리하고, 클라우드로 전송할 데이터의 양을 줄임으로써 저지연 환경을 제공
  • 사용 사례: KubeEdge는 운송, 에너지, 인터넷, CDN, 제조, 스마트 캠퍼스 등 다양한 산업에서 널리 채택되어 위성 컴퓨팅, 전자 통행료 징수, 스마트 다리 관리, 자동차 클라우드 협업, CDN 서비스 관리, 콜센터 아키텍처, 스마트 캠퍼스 및 물류 시스템 혁신 등 여러 비즈니스 시나리오에서 엣지-클라우드 협업, 실시간 데이터 처리, 대규모 IoT 디바이스 관리와 같은 혁신적인 솔루션을 제공합니다.
  • KubeEdge 문서

 

16. Container Registry (컨테이너 레지스트리)

  • Harbor (CNCF Graduated)
  • Dragonfly (CNCF Incubating)

1. Harbor (CNCF Graduated)

  • 설명: Harbor는 정책 및 역할 기반 액세스 제어를 통해 아티팩트를 보호하고, 이미지가 스캔되어 취약성이 없는지 확인하고, 이미지를 신뢰할 수 있는 것으로 서명하는 오픈 소스 레지스트리입니다. 모든 Kubernetes 환경 또는 Docker 지원 시스템에 설치할 수 있습니다.
  • 문제 해결: Harbor는 이미지 보안 취약점 관리, 이미지 중앙 집중식 관리, 역할 기반 접근 제어, 멀티 클라우드 지원에 도움이 됩니다.
  • 특징
    • 이미지 저장 및 관리 : Docker 이미지와 OCI 이미지를 쉽게 저장하고 관리할 수 있는 기능을 제공
    • 보안 기능:
      • 사용자 인증 및 권한 관리: LDAP, OIDC 등 다양한 인증 메커니즘을 지원하며, 역할 기반 접근 제어(RBAC)를 통해 세부적인 권한 설정이 가능
      • 이미지 스캐닝: CI/CD 파이프라인에서 이미지 배포 전에 보안 취약점을 자동으로 스캔
    • 레포지토리 관리: 프로젝트별로 레포지토리를 생성하여 이미지 및 차트를 구성할 수 있으며, 정책 기반으로 관리 가능
    • 다양한 배포 옵션: 온프레미스 또는 클라우드 환경에서 하이브리드 및 멀티 클라우드 아키텍처를 지원
    • 자동화: Webhook 및 API를 통해 자동화된 작업을 수행하고 CI/CD 도구와 통합이 용이
  • 사용 사례: 보안 및 검증을 위한 다중 통합 기능을 갖춘 셀프 호스팅 컨테이너 레지스트리로 사용되어 주요 사례로는 기업 내 이미지 저장소, Helm 차트 관리 저장소가 있습니다.
  • Harbor 문서

2. Dragonfly (CNCF Incubating)

  • 설명: Dragonfly는 클라우드 네이티브 환경을 위해 설계되었으며, p2p 기술을 기반으로 효율적이고 안정적이며 안전한 파일 배포 및 이미지 가속을 제공하는 오픈 소스 분산 파일 전송 시스템입니다. 이미지 배포, 파일 배포, 로그 배포, 추론 모델 배포 등의 분야에서 널리 사용됩니다.
  • 문제 해결: 대규모 네트워크 환경에서 발생할 수 있는 병목 현상을 줄이고 최적화하는 등 네트워크 효율성을 높이고, P2P 다운로드 방식으로 파일 전송 속도를 높이며, 자동 재전송을 통헤 데이터의 신뢰성을 보장합니다.
  • 특징
    • 분산 파일 전송 : Dragonfly는 P2P(피어 투 피어) 기반의 파일 전송 방식을 사용하여, 여러 노드 간에 파일을 효율적으로 전송
    • 고속 다운로드 : 파일을 여러 조각으로 나누어 동시에 다운로드함으로써, 대용량 파일의 다운로드 속도를 개선
    • 데이터 캐싱 : 이전에 다운로드된 파일을 로컬에 캐시하여, 동일한 파일을 다시 다운로드할 필요가 없도록 하여 대역폭과 시간을 절약
    • 컨테이너 이미지 지원 : Docker 및 OCI 이미지의 전송을 지원하여, 컨테이너 환경에서의 효율적인 이미지 배포 지원
    • Kubernetes 통합 : Dragonfly는 Kubernetes와 원활하게 통합되어, 클러스터 내의 여러 노드에서 파일을 효과적으로 관리하고 전송 가능
    • 모니터링 및 로깅 : 파일 전송 상태를 실시간으로 모니터링하고, 로그를 수집하여 운영팀이 시스템의 성능을 추적할 수 있도록 지원
  • 사용 사례: 백투소스 다운로드 트래픽과 백투소스 요청을 줄이고 노드 유휴 대역폭 활용도를 개선합니다. 대규모 쿠버네티스 클러스터에서 중앙 집중식 컨테이너 레지스트리 또는 파일 서비스에 액세스할 때 리소스를 다운로드하는 데 대역폭이 부족하거나 과부하가 발생하는 문제를 해결합니다. P2P 기술을 기반으로 컨테이너 레지스트리 또는 파일 서비스의 대역폭과 부하를 줄이고 이미지 또는 파일의 다운로드 속도를 가속화합니다.
  • Dragonfly 문서

 

 

 

17. Key Management (키 관리)

  • SPIFFE (CNCF Graduated)
  • SPIRE (CNCF Graduated)
 

1. Spiffe (CNCF Graduated)

  • 설명: Spiffe(Secure Production Identity Framework for Everyone)은 애플리케이션 서비스 간 통신을 보호하고 식별하기 위한 오픈소스 표준 세트입니다. Spiffe를 채택한 시스템은 실행 중인 모든 곳에서 쉽고 안정적으로 상호 인증할 수 있습니다.
  • 문제 해결: 기존의 인증 방식(예: 비밀번호, API 키, 토큰)은 마이크로서비스나 클라우드 네이티브 환경에서 관리가 어렵고 보안에 취약할 수 있습니다. Spiffe는 동적 환경에서의 인증 문제, 인증서 자동화, 신뢰 도메인 간의 안전한 통신, 비밀 관리 등에 도움을 줍니다.
  • 특징
    • 표준화된 서비스 ID 시스템 : 서비스는 SPIFFE를 통해 독립적인 ID를 부여받고, 이를 기반으로 상호 인증을 진행
    • 클라우드 네이티브 지원 : 동적이고 변화하는 클라우드 환경에서 서비스 간의 안전한 인증을 보장
    • X.509 및 JWT 지원 : 서비스 간 인증에 사용할 수 있는 두 가지 주요 방식인 X.509 인증서와 JWT를 모두 지원
    • 확장성 : 클라우드, 컨테이너, VM, 온프레미스 등 다양한 환경에서 사용 가능하며, 특히 분산 환경에서의 사용에 최적화
  • 사용 사례: 암호화 ID 문서를 관리하고 발급하는 오버헤드 관련 비용을 크게 줄이고 개발 및 배포를 가속화할 수 있습니다. 주요 사용 사례로는 서비스 매쉬 환경에서의 인증, 제로 트러스트 아키텍처 구현이 있습니다.
  • Spiffe 문서

2. Spire (CNCF Graduated)

  • 설명: SPIRE는 SPIFFE API를 프로덕션에 바로 적용할 수 있도록 구현한 것으로, 노드 및 워크로드 증명을 수행하여 워크로드에 SVID를 안전하게 발급하고, 사전 정의된 조건 집합에 따라 다른 워크로드의 SVID를 검증합니다.
  • 문제 해결: 동적 인프라에서 실제로 SPIFFE 표준에 따라 SPIFFE ID를 발급하고 관리하며, 정책 기반으로 어떤 서비스가 어떤 신원을 받아야 하는지 관리하고, 이를 통해 자동화된 인증서 발급 및 갱신을 처리합니다.
  • 특징
    • 분산 아키텍처 : SPIRE는 중앙화된 SPIRE 서버와 각 노드에 위치한 SPIRE 에이전트로 구성되어 있으며, 이를 통해 확장 가능한 ID 및 인증 관리 시스템을 제공
    • 다양한 플랫폼 통합 : Kubernetes, AWS, GCP, VM 등 다양한 인프라와 통합할 수 있으며, 각각의 환경에서 서비스의 ID 발급과 관리가 가능
    • 서비스 메쉬 지원 : Istio, Linkerd와 같은 서비스 메쉬 솔루션과 통합하여 서비스 간의 안전한 인증 및 통신을 제공합니다.
    • 플러그인 아키텍처 : SPIRE는 플러그인 시스템을 통해 다양한 인증 및 스토리지 백엔드와 쉽게 통합할 수 있도록 유연성을 제공합니다.
  • 사용 사례: Spire는 mTLS를 사용하여 신뢰할 수 없는 네트워크에서 workload 인증, JWT 기반 인증을 사용하여 두 workload 인증에 사용됩니다.
  • Spire 문서

 

 

18. Observability & Analysis

  • Fluentd (CNCF Graduated)
  • Prometheus (CNCF Graduated)
  • Thanos (CNCF Incubating)
  • Cortex (CNCF Incubating)
  • OpenTelemetry (CNCF Incubating)

1. Fluentd (CNCF Graduated)

  • 설명: Fluentd는 오픈 소스 데이터 수집기로, 데이터 collection과 consumption를 통합하여 데이터를 보다 잘 활용할 수 있게 해줍니다. 보통 로그 수집기로 쓰이며, 로그 데이터를 통합하고, 변환하고, 전송하는 작업을 쉽게 처리할 수 있습니다.
  • 문제 해결: 다양한 소스의 데이터 통합, 데이터 형식 문제 해결, 실시간 데이터 파이프라인에 사용됩니다.
  • 특징
    • Json을 사용한 통합 로깅 : 가능한 한 Json으로 데이터 구조화하여 로그 데이터 처리의 모든 측면을 통합
    • pluggable Architecture : 기능을 확장할 수 있는 유연한 플러그인 시스템을 갖춤
    • 필요 리소스 최소화 : C 언어 + Duby를 조합하여 작성되었으며, 시스템 리소스가 거의 필요하지 않음.
    • 내장된 신뢰성 : 노드 간 데이터 손실을 방지하기 위해 메모리 및 파일 기반 버퍼링 지원, 강력한 장애 조치, 고가용성 설정 가능
  • 사용 사례: Fluentd는 대규모 로그 관리 및 분석 환경에서 특히 유용하며, 클라우드 및 멀티 클라우드 데이터 통합, 데이터 파이프라인으로 널리 사용됩니다.
  • fluentd 문서

2. Jaeger (CNCF Graduated)

  • 설명: Jaeger는 오픈소스 분산 추적 플랫폼으로 마이크로서비스 기반 애플리케이션의 성능 및 트랜잭션 분석을 위해 설계되었습니다. 특히, 트랜잭션의 흐름을 시각적으로 추적하고, 병목 현상과 같은 성능 문제를 해결하는 데 유용합니다.
  • 문제 해결: Jaeger는 분산 워크플로 모니터링, 성능 병목 현상 식별, 근본 원인 추적, 서비스 종속성 분석에 사용됩니다.
  • 특징
    • 분산 트랜잭션 추적 : Jaeger는 분산 시스템의 트랜잭션을 추적하여, 서비스 간 요청 흐름을 시각적으로 파악
    • 성능 최적화 : 서비스 호출 간의 지연 시간, 병목 구간 등을 시각화하여 성능 문제를 진단하고 최적화
    • 애플리케이션 의존성 분석 : 마이크로서비스 간의 의존 관계를 분석하고, 트랜잭션이 실패하거나 성능이 저하되는 구간을 쉽게 확인
    • 실시간 모니터링 : Jaeger는 애플리케이션의 실시간 트레이스를 제공하여, 요청이 어느 서비스에서 처리되는지 바로 확인
  • 사용 사례: Jaeger는 마이크로서비스 기반 애플리케이션의 성능 분석, 애플리케이션 의존성 시각화, 분산 시스템의 오류 추적 등에 사용되며 CI/CD에 통합하여 배포 후 성능 모니터링 및 실시간 트레이브 분석을 지원할 수 있습니다.
  • Jaeger 문서

3. Prometheus (CNCF Graduated)

  • 설명: Prometheus는 오픈소스 모니터링 및 경고 Toolkit으로 , 주로 시계열 데이터 수집과 알림을 위한 목적으로 사용됩니다. 클라우드 네이티브 환경에서의 시스템 및 애플리케이션 성능 모니터링에 최적화되어 있습니다.
  • 문제 해결: 서버, 애플리케이션, 컨테이너 등 실시간 리소스 모니터링, 자동화된 경고 발생, 서비스 가용성 확인에 도움을 줍니다.
  • 특징
    • 시계열 데이터베이스: Prometheus는 시계열 데이터(time-series data)를 수집 및 저장하며, 각 데이터 포인트는 타임스탬프가 기록
    • 강력한 쿼리 언어: PromQL(Prometheus Query Language)을 사용하여 수집된 데이터를 효율적으로 분석하고 시각화
    • 다양한 메트릭 수집: 애플리케이션, 서버, 컨테이너 등 다양한 소스에서 메트릭(metric)을 수집
    • 푸시 대신 풀 방식: Prometheus는 푸시 방식이 아닌 풀(Pull) 방식으로 타겟에서 메트릭을 주기적으로 스크래핑하여 데이터를 수집
    • 알림 관리: Alertmanager와 통합하여 임계값에 도달했을 때 경고 메시지를 발송 가능
    • 수평 확장 및 고가용성: Prometheus는 수평 확장 및 고가용성을 지원하는 분산 시스템 모니터링이 목표
  • 사용 사례: Prometheus는 Kubernetes와 같은 클라우드 네이티브 환경에서 리소스 사용량을 모니터링하거나 메트릭 수집에 사용되며, alertmanager를 통해 임계값 기반 경고를 설정하고 Slack과 같은 채널로 경고를 전송할 수 있습니다.
  • Prometheus 문서

4. Cortex (CNCF Incubating)

  • 설명: Cortex는 Prometheus를 위한 수평 확장성, 고가용성, 다중 테넌트, 장기 스토리지 입니다.
  • 문제 해결: Prometheus의 여러 문제를 해결하기 위해 설계되어, Prometheus의 확장성, 단기 데이터 문제 해결에 도움을 줍니다.
  • 특징
    • 수평적 확장성 : Cortex는 클러스터의 여러 머신에서 실행될 수 있어 단일 머신의 처리량과 저장 용량을 능가
    • 높은 가용성 : 클러스터에서 실행하는 경우 Cortex는 머신 간에 데이터를 복제 가능
    • 멀티 테넌트 : Cortex는 단일 클러스터에서 여러 개의 서로 다른 독립적인 Prometheus 소스의 데이터와 쿼리를 분리 가능
    • 장기 저장 : Cortex는 메트릭 데이터의 장기 저장을 위해 S3, GCS, Swift 및 Microsoft Azure를 지원
  • 사용 사례: Cortex는 수백 개 이상의 prometheus 서버가 필요한 대규모 모니터링 시스템이나 멀티 테넌트 환경 모니터링, 장기적인 모니터링 시 데이터 저장에 사용되며 kubernetes 환경에 최적화되어 있습니다.
  • Cortex 문서

5. OpenTelemetry (CNCF Incubating)

  • 설명: OTel이라고도 불리는 OpenTelemetry는 trace , 메트릭 , 로그와 같은 원격 측정 데이터를 계측, 생성, 수집 및 내보내기 위한 벤더 독립적인 오픈 소스 Observability 프레임워크입니다 . 오픈소스와 상용 제품을 포함한 광범위한 Observability 백엔드와 함께 사용할 수 있습니다.
  • 문제 해결: OpenTelemetry는 기존에 트레이스, 메트릭, 로그를 각각 다른 도구로 관리하던 문제를 해결하고, 이를 단일 프레임워크로 통합하여 관리할 수 있도록 합니다.
  • 특징
    • 다중 signal 지원 : 트레이스(Trace), 메트릭(Metric), 로그(Log)를 수집하며, 이를 통해 분산 시스템의 성능과 상태를 종합적으로 모니터링
    • 광범위한 언어 지원 : 다양한 프로그래밍 언어(Java, Python, Go, C#, JavaScript 등)를 지원하여, 여러 언어로 작성된 애플리케이션에서도 동일한 방법으로 관찰 가능성을 구현 가능
    • 플러그인 기반 아키텍처 : 플러그인 시스템을 통해 다양한 백엔드 서비스(예: Jaeger, Prometheus, Datadog 등)와 쉽게 통합 가능
    • 통합된 API 및 SDK : 모든 sigmal(Trace, Metric, Log)를 위한 일관된 API와 SDK를 제공하여, 사용자는 간단히 OpenTelemetry 라이브러리를 사용해 데이터 수집 가능
    • 자동 계측(Instrumentation) : 애플리케이션의 코드 변경 없이 자동으로 계측하여, 성능 데이터를 수집할 수 있도록 지원
  • 사용 사례: OpenTelemetry는 표준화된 모니터링 데이터 수집을 제공하여 클라우드 네이티브 및 분산 시스템에서 성능 분석 및 모니터링을 위한 효율적인 관찰 가능성 솔루션으로 사용됩니다.
  • OpenTelemetry 문서

6. Thanos (CNCF Incubating)

  • 설명: 오픈 소스 분산 모니터링 시스템을 위해 고가용성 및 확장성을 제공하는 오픈소스 도구로, Prometheus와 통합되어 사용됩니다.
  • 문제 해결: Thanos는 prometheus의 고가용성 문제를 해결하거나, Thanos의 캐시 기능을 활용하여 쿼리 성능 개선에 도움을 줍니다.
  • 특징
    • 장기 저장소 : 단기 저장소로 설계된 Prometheus에 대해 Thanos는 객체 저장소(예: S3, GCS)와 통합하여 데이터를 장기간 저장할 수 있도록 지원
    • 통합된 데이터 제공 : Thanos Querier라는 컴포넌트를 제공하여 여러 Prometheus 인스턴스와 Thanos Store에 저장된 데이터를 단일 쿼리 인터페이스로 조회하여 통합된 데이터를 제공
    • 고가용성 : 여러 Prometheus 인스턴스를 통합하여 고가용성을 제공하며, 쿼리와 저장을 위한 분산 아키텍처를 지원
  • 사용 사례: Thanos는 대규모 클라우드 네이티브 애플리케이션 모니터링 시 Prometheus와 통합하여 사용되거나 장기 데이터를 저장하기 위해 사용됩니다.
  • Thanos 문서

 

19. Chaos Engineering

  • Chaos Mesh (CNCF Incubating)
  • Litmus (CNCF Incubating)


1. Chaos Mesh (CNCF Incubating)

  • 설명: Chaos Mesh는 오픈소스 Cloud Native Chaos Enginerring 플랫폼입니다. 다양한 유형의 결함(fault) 시뮬레이션을 제공하며 결함 시나리오를 조율하는 기능을 갖고 있습니다.
  • 문제 해결: 예상치 못한 장애 대응 능력 향상, 서비스 복원력 검증에 사용되며, Kubernetes 기반 환경에서 테스트하는 것에 최적화되어 있습니다.
  • 특징
    • 카오스 실험 시나리오 정의: 다양한 실험을 정의하고, 네트워크 지연, 리소스 부족, 파드 또는 노드 장애 등 여러 카오스 상태를 쉽게 시뮬레이션 가능
    • Kubernetes 네이티브: Kubernetes 환경에서 네이티브하게 동작하며, 클러스터 자원을 대상으로 실험을 자동화 가능
    • 사용자 친화적 인터페이스: 웹 UI에서 Chaos 시나리오를 쉽게 설계하고 Chaos 실험의 상태를 모니터링 가능
    • 관찰가능성 통합 : Prometheus, Grafana 등과 같은 모니터링 툴과 통합되어 실험 결과를 실시간으로 시각화하고 분석 가능
  • 사용 사례: Chaos Mesh는 프로덕션 환경의 안정성 테스트, 애플리케이션 성능 검증에 사용되며 특히 Kubernetes 클러스터에서 실행 중인 컨테이너화된 애플리케이션 테스트에 사용할 수 있습니다.
  • Chaos Mesh 문서

2. litmus (CNCF Incubating)

  • 설명: Litmus는 조직이 통제된 방식으로 Chaos Test를 실시하여 인프라의 취약점과 잠재적인 중단(outage)을 파악할 수 있게 해주는 오픈 소스 chaos Engineering 플랫폼입니다.
  • 문제 해결: 프로덕션 환경의 안정성 확보, 애플리케이션 복원력 개선에 사용되며, Kubernetes 환경에서 안정성 검증 및 최적화에 도움을 줍니다.
  • 특징
    • 플러그 앤 플레이: 카탈로그 형식으로 다양한 카오스 실험을 제공하며, 사용자는 원하는 실험을 쉽게 선택하여 수행 가능
    • Kubernetes 네이티브: Kubernetes 워크로드와 인프라에 대한 카오스 테스트를 지원하며, 실험을 실행하기 위해 별도의 환경을 만들 필요 없이 쿠버네티스 클러스터에서 직접 실행 가능
    • 플렉시블 실험 정의: YAML 파일로 실험을 정의할 수 있고, 커스터마이징을 통해 원하는 장애 시나리오를 정밀하게 설정 가능
    • 관찰가능성 통합 : Prometheus, Grafana 등과 같은 모니터링 툴과 통합되어 실험 결과를 실시간으로 시각화하고 분석 가능
  • 사용 사례: Litmus는 운영 중인 시스템의 장애 대응 테스트, kubernetes 클러스터의 안정성 테스트 등에 사용되며 Devops 파이프라인에 통합하여 배포 중 장애 대응 능력을 검증할 수 있습니다.
  • Litmus 문서

 

 

20. Feature Flagging

  • OpenFeature (CNCF Incubating)

1. OpenFeature (CNCF Incubating)

  • 설명: 서드 파티 Flagging 공급자에 플러그인할 수 있는 표준화된 Feature Flagging 클라이언트인 SDK를 제공합니다. 오픈소스/상용, 자체호스팅/클라우드 상관없이 OpenFeature는 개발자가 애플리케이션에서 Feature Flagging을 사용할 수 있도록 일관되고 통합된 API를 제공합니다.
  • 문제 해결: 다양한 Feature Flagging 공급자의 호환성을 제공하여 벤더 종속성을 줄이고, 새로운 기능을 점진적으로 배포/특정 사용자에게만 배포하여 배포 속도와 안정성을 개선합니다.
  • 특징
    • 표준 API: 모든 기능 플래그 시스템을 위한 공통 API를 제공해, 다양한 벤더 솔루션과의 상호운용성을 높임
    • SDK 지원: 여러 언어 및 환경을 위한 SDK를 제공하여 다양한 애플리케이션에서 기능 플래그를 쉽게 적용 가능
    • 확장성: 플러그인 시스템을 통해 다양한 기능 플래그 제공업체와 통합할 수 있으며, 이를 통해 벤더 종속성을 줄이고 유연성을 제공
    • 관찰 가능성: OpenFeature는 기능 플래그의 상태와 결과를 모니터링할 수 있는 관찰 가능성 기능을 내장하여, 플래그의 성능과 영향도를 추적 가능
  • 사용 사례: OpenFeature는 점진적 기능 릴리스, A/B 테스트 등에 사용되며 멀티 클라우드 환경에서도 Feature flag를 일관되게 관리할 수 있습니다.
  • OpenFeature 문서