AmberAx

Crossplane 이란!?

· 5 min read
Crossplane 이란!?

클라우드 인프라 관리 도구는 지속적으로 발전해 왔습니다. Terraform은 IaC의 표준처럼 자리 잡았고, Pulumi는 개발자 친화적인 프로그래밍 언어 지원으로 주목받았습니다.

이들 사이에서 등장한 Crossplane은 Kubernetes 네이티브 환경에서 IaC를 구현함으로써 멀티클라우드와 플랫폼 엔지니어링에 강력한 비전을 제시합니다. 이번 글에서는 Crossplane의 주요 특징을 살펴보고, Terraform 및 Pulumi와 간단한 코드 예제를 통해 비교하며, Crossplane의 비전과 한계, 그리고 Upbound.io와 관련된 생태계 문제를 다룹니다.


Crossplane의 등장과 시장 반응 #

Crossplane은 Kubernetes 리소스 정의 방식인 **Custom Resource Definition (CRD)**를 확장하여 클라우드 리소스를 선언적으로 관리할 수 있도록 설계되었습니다. 이를 통해 Kubernetes의 강력한 오케스트레이션 기능과 IaC 방식의 인프라 관리가 자연스럽게 융합됩니다.

주요 특징

  1. 멀티클라우드 관리 AWS, Azure, Google Cloud 등 여러 클라우드 환경을 하나의 제어판(Control Plane)에서 관리 가능합니다.
  2. Kubernetes 네이티브 Kubernetes Operator 패턴을 활용해 리소스를 관리하며, CI/CD와의 통합이 용이합니다.
  3. 플랫폼 엔지니어링 지원 팀별 요구사항에 맞는 맞춤형 API를 제공하여 복잡성을 줄입니다.

Crossplane이 처음 발표되었을 때, 기존 IaC 도구 사용자들 사이에서 관심이 컸지만, Kubernetes 기반 설계로 인해 학습 곡선이 가파르다는 지적도 많았습니다. 이는 특히 Kubernetes에 익숙하지 않은 사용자들에게 큰 장벽으로 작용했습니다.


Terraform, Pulumi, Crossplane 코드 비교 #

AWS에서 S3 버킷을 생성하는 동일한 작업을 Terraform, Pulumi, Crossplane으로 구현한 예제를 통해 각 도구의 접근 방식을 비교합니다.

Terraform 예제

provider "aws" {
  region = "us-west-2"
}

resource "aws_s3_bucket" "example" {
  bucket = "my-example-bucket"
  acl    = "private"

  tags = {
    Environment = "Dev"
    Team        = "Platform"
  }
}

Pulumi 예제

import * as aws from "@pulumi/aws";

const bucket = new aws.s3.Bucket("example-bucket", {
    acl: "private",
    tags: {
        Environment: "Dev",
        Team: "Platform",
    },
});

export const bucketName = bucket.id;

Crossplane 예제

apiVersion: s3.aws.crossplane.io/v1beta1
kind: Bucket
metadata:
  name: example-bucket
spec:
  forProvider:
    acl: private
    tags:
      - key: Environment
        value: Dev
      - key: Team
        value: Platform
  providerConfigRef:
    name: example-provider

Terraform, Pulumi, Crossplane의 접근 방식 #

특징 Terraform Pulumi Crossplane
언어 HCL (선언적) TypeScript, Python 등 (명령형) YAML (선언적, K8s CRD 기반)
생태계 통합 독립 실행형 도구 개발자 친화적 API 제공 Kubernetes 네이티브
학습 곡선 중간 낮음 높음
멀티클라우드 지원 지원 지원 강력한 멀티클라우드 지원
유연성 제한적 매우 유연 유연

Crossplane의 차별화된 장점 #

Crossplane은 기존 IaC 도구에 비해 다음과 같은 차별화된 장점을 제공합니다.

1. Kubernetes 네이티브 접근

Crossplane은 Kubernetes의 CRD와 Operator 패턴을 확장해 클라우드 리소스를 관리합니다. 이를 통해 Kubernetes 생태계와 완전히 통합된 환경을 제공하며, kubectl과 같은 기존 도구를 그대로 사용할 수 있습니다.

2. 강력한 멀티클라우드 지원

Crossplane은 다양한 클라우드 리소스를 단일 API에서 관리할 수 있도록 설계되었습니다. 프로바이더 간의 일관된 인터페이스는 멀티클라우드 환경의 복잡성을 효과적으로 추상화합니다.

3. 플랫폼 엔지니어링 최적화

Crossplane의 **Composite Resources (XR)**와 Compositions는 복잡한 리소스 구성을 간단하게 추상화할 수 있도록 합니다. 이를 통해 팀은 자신만의 맞춤형 API를 생성하여 개발자 경험을 크게 개선할 수 있습니다.


Crossplane의 단점 #

Crossplane의 주요 단점은 다음과 같습니다:

  1. 학습 곡선 Kubernetes CRD와 Operator 패턴에 대한 높은 이해가 필요해 초기 진입 장벽이 높습니다.
  2. 설정의 복잡성 다양한 클라우드 프로바이더를 지원하기 위해 초기 설정이 복잡할 수 있습니다.

Upbound.io와 Crossplane 생태계 #

Upbound.io는 Crossplane의 상업적 생태계를 대표하는 기업으로, 다음과 같은 서비스를 제공합니다:

  1. Upbound Cloud Crossplane 리소스를 관리할 수 있는 웹 기반 UI와 추가적인 관리 도구를 제공합니다. 이를 통해 초기 설정의 복잡성을 완화할 수 있습니다.
  2. 상업적 지원 SLA 기반 엔터프라이즈 지원을 통해 조직이 안정적으로 Crossplane을 운영할 수 있도록 돕습니다.

논란과 우려

  • Upbound.io가 Crossplane의 오픈소스 생태계를 약화시키거나, 상업적 이익을 독점할 가능성에 대한 우려가 일부 커뮤니티에서 제기되었습니다.
  • 하지만 현재 Upbound는 Crossplane의 지속 가능성을 지원하며 커뮤니티와 긴밀히 협력하고 있습니다.

Crossplane의 미래 #

Crossplane은 단순한 IaC 도구를 넘어 플랫폼 엔지니어링의 새로운 표준으로 자리 잡으려 하고 있습니다.

1. DevOps와 플랫폼 엔지니어링 통합

개발자는 간단한 API를 통해 필요한 리소스를 요청하고, DevOps 팀은 중앙에서 이를 관리하며 정책 준수를 보장할 수 있습니다.

2. 더 나은 사용자 경험

  • 프로바이더 설정 간소화 및 문서화 개선.
  • Crossplane 커뮤니티는 신규 사용자가 쉽게 적응할 수 있도록 지속적으로 노력을 기울이고 있습니다.

3. 멀티클라우드 전략의 핵심

Crossplane은 멀티클라우드 환경의 복잡성을 추상화하여 기업이 공급업체 종속을 줄이고 클라우드 비용을 최적화할 수 있도록 돕습니다.

4. 생태계와 커뮤니티의 균형

Upbound.io와 오픈소스 커뮤니티 간의 협력이 Crossplane의 성공 여부를 결정짓는 핵심 요소가 될 것입니다.


결론 #

Crossplane은 클라우드 인프라 관리의 패러다임을 바꾸며, Kubernetes 네이티브 설계를 통해 멀티클라우드 환경에서의 통합성과 유연성을 제공합니다. 기존 도구들이 개별 리소스 관리에 초점을 맞췄다면, Crossplane은 플랫폼 중심의 접근 방식을 통해 더 높은 수준의 추상화와 협업을 가능하게 합니다.

학습 곡선과 설정의 복잡성은 단점으로 지적되지만, 커뮤니티와 Upbound.io의 지속적인 개선 노력으로 이러한 한계는 점차 완화되고 있습니다. Crossplane은 멀티클라우드 시대의 복잡한 요구를 해결하기 위한 강력한 도구로 자리 잡아가고 있습니다.

Did you find this post helpful?
Share it with others!