본문 바로가기
WIKI 기술 지식 베이스

관리 리소스로 시작하기

원문 보기 위키 갱신

관리 리소스로 시작하기 (Managed Resources)

이 가이드는 Bucket이라는 새 종류의 커스텀 리소스를 설치하고 사용하는 방법을 보여줍니다. 사용자가 커스텀 리소스 API를 호출해 Bucket을 만들면, Crossplane이 AWS S3에 버킷을 만듭니다.

출처: 문서

본문

Crossplane은 이것을 관리 리소스(managed resource)라고 부릅니다. 관리 리소스는 컨트롤 플레인 밖에서 무언가를 관리하는 바로 사용할 수 있는 커스텀 리소스입니다.

Bucket 관리 리소스는 이렇게 생겼습니다.

apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
  namespace: default
  name: crossplane-bucket-example
spec:
  forProvider:
    region: us-east-2

📝 참고: Kubernetes는 타사 API 리소스를 커스텀 리소스라고 부릅니다. Crossplane은 컨트롤 플레인 밖에서 무언가를 관리하는 커스텀 리소스를 관리 리소스라고 부릅니다.

사전 요구 사항 (Prerequisites)

이 가이드에는 다음이 필요합니다.

  • 최소 2 GB RAM 이상의 Kubernetes 클러스터
  • Kubernetes 클러스터에 설치된 Crossplane v2
  • S3 스토리지 버킷을 만들 권한이 있는 AWS 계정
  • AWS 액세스 키

관리 리소스 지원 설치하기 (Install support for the managed resource)

Bucket 관리 리소스 지원을 설치하는 단계는 다음과 같습니다.

  • Provider 설치
  • Provider의 자격 증명을 secret으로 저장
  • secret을 사용하도록 Provider 구성

이 단계를 완료하면 Bucket 관리 리소스를 사용할 수 있습니다.

Provider 설치하기 (Install the provider)

Crossplane provider는 관련 관리 리소스 집합에 대한 지원을 설치합니다. AWS S3 provider는 모든 AWS S3 관리 리소스에 대한 지원을 설치합니다. AWS S3 provider를 설치하려면 이 provider를 만드세요.

apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: crossplane-contrib-provider-aws-s3
spec:
  package: xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0
$ kubectl apply -f https://docs.crossplane.io/latest/manifests/get-started/managed-resources/provider.yaml

Crossplane이 provider를 설치했는지 확인하세요.

$ kubectl get providers
NAME                                     INSTALLED   HEALTHY   PACKAGE                                                                                     AGE
crossplane-contrib-provider-family-aws   True        True      xpkg.crossplane.io/crossplane-contrib/provider-family-aws:v2.0.0   27s
crossplane-contrib-provider-aws-s3       True        True      xpkg.crossplane.io/crossplane-contrib/provider-aws-s3:v2.0.0       31s

📝 참고: S3 provider는 두 번째 provider인 crossplane-contrib-provider-family-aws도 설치합니다. family provider는 모든 AWS family provider에 걸쳐 AWS에 대한 인증을 관리해요.

Crossplane이 AWS S3 provider를 설치했습니다. provider는 AWS에 연결하려면 자격 증명이 필요합니다. 관리 리소스를 사용하기 전에 provider의 자격 증명을 저장하고, provider가 그것을 사용하도록 구성해야 합니다.

Provider의 자격 증명 저장하기 (Save the provider's credentials)

provider는 AWS 리소스를 만들고 관리하려면 자격 증명이 필요합니다. Provider는 Kubernetes secret을 사용해 자격 증명을 provider에 연결합니다. AWS 키 쌍에서 secret을 생성하세요.

💡 Tip: AWS 문서는 AWS Access keys를 생성하는 방법에 대한 정보를 제공해요.

AWS 계정 aws_access_key_id와 aws_secret_access_key를 포함하는 파일을 만드세요.

[default]
aws_access_key_id = <your-aws-access-key-id>
aws_secret_access_key = <your-aws-secret-access-key>

텍스트 파일을 aws-credentials.ini로 저장하세요.

📝 참고: AWS Provider 문서의 Authentication 섹션은 다른 인증 방법을 설명합니다.

텍스트 파일에서 secret을 만드세요.

$ kubectl create secret generic aws-secret \
  --namespace=crossplane-system \
  --from-file=creds=./aws-credentials.ini

⚠️ 중요: Crossplane provider는 자격 증명을 secret에 저장할 필요가 없습니다. 여러 소스에서 자격 증명을 로드할 수 있어요.

그 다음 provider가 자격 증명을 사용하도록 구성합니다.

Provider 구성하기 (Configure the provider)

provider configuration은 AWS Provider의 설정을 커스터마이즈합니다. 모든 provider는 어디에서 자격 증명을 로드할지 알려주는 구성이 필요합니다. 이 클러스터 전체 provider 구성을 만드세요.

apiVersion: aws.m.upbound.io/v1beta1
kind: ClusterProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: aws-secret
      key: creds
$ kubectl apply -f https://docs.crossplane.io/latest/manifests/get-started/managed-resources/providerconfig.yaml

이것은 provider가 secret에서 자격 증명을 로드하도록 지시합니다.

📝 참고: 이 예제는 모든 네임스페이스의 관리 리소스에 적용되는 ClusterProviderConfig를 사용합니다. 특정 네임스페이스의 관리 리소스에만 적용되는 namespaced ProviderConfig도 사용할 수 있어요. 자세한 내용은 관리 리소스 문서의 providerConfigRef 섹션을 참고하세요.

관리 리소스 사용하기 (Use the managed resource)

📝 참고: AWS S3 버킷 이름은 전역적으로 고유해야 합니다. 이 예제는 임의의 이름을 생성하는 generateName을 사용합니다. 어떤 고유한 이름이든 괜찮아요.

apiVersion: s3.aws.m.upbound.io/v1beta1
kind: Bucket
metadata:
  namespace: default
  generateName: crossplane-bucket-
spec:
  forProvider:
    region: us-east-2
$ kubectl create -f https://docs.crossplane.io/latest/manifests/get-started/managed-resources/bucket.yaml

Crossplane이 버킷을 만들었는지 확인하세요.

$ kubectl get buckets.s3.aws.m.upbound.io
NAME                      SYNCED   READY   EXTERNAL-NAME             AGE
crossplane-bucket-7tfcj   True     True    crossplane-bucket-7tfcj   3m4s

💡 Tip: READY와 SYNCED 값이 True일 때 Crossplane이 버킷을 만들었음을 알 수 있어요.

버킷을 삭제하세요.

$ kubectl delete buckets.s3.aws.m.upbound.io crossplane-bucket-7tfcj
bucket.s3.aws.m.upbound.io "crossplane-bucket-7tfcj" deleted

버킷 관리 리소스를 삭제하면 Crossplane이 AWS에서 S3 버킷을 삭제합니다.

⚠️ 중요: provider를 제거하거나 컨트롤 플레인을 종료하기 전에 S3 버킷을 삭제해야 합니다. 그들이 더 이상 실행되지 않으면 관리 리소스를 정리할 수 없으므로 수동으로 해야 해요.

다음 단계 (Next steps)

Crossplane을 사용하면 관리 리소스를 포함한 어떤 종류의 리소스든 사용자를 위한 커스텀 API로 구성할 수 있습니다. 애플리케이션이 고유한 환경, 시나리오, 요구 사항에 필요한 다양한 리소스 집합을 구성할 수 있는 Crossplane의 자유를 누려보세요. Composition으로 시작하기를 따라 composition이 어떻게 동작하는지 배워보세요.

더 알아보기 (Learn more)