IRSA를 사용하는 Amazon EKS의 크로스플레인

이 게시물에서는 IRSA를 사용하여 AWS EKS 클러스터에 Crossplane을 설정하고 AWS 클라우드 서비스를 프로비저닝합니다.

IRSA는 AWS 클라우드 서비스를 시작하는 데 활용됩니다.

아마존 EKS



Amazon EKS는 AWS 클라우드에서 Kubernetes를 실행하는 관리형 Kubernetes 서비스입니다.

크로스플레인



Crossplane은 코드를 작성할 필요 없이 클라우드 네이티브 컨트롤 플레인을 구축하기 위한 프레임워크입니다.

https://github.com/crossplane/crossplane

## 크로스플레인용 IRSA로 EKS 클러스터 시작
yaml이 기존 VPC를 활용하여 클러스터를 시작하는 경우 EKSCTL을 활용하여 아래 구성을 사용하여 EKS 클러스터를 시작합니다. 클러스터를 생성하기 전에 서브넷 ID를 대체하십시오.

apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
  name: crossplane-demo
  region: us-east-1
  version: '1.21'
vpc:
  subnets:
    private:
      us-east-1a: { id: subnet-1234}
      us-east-1b: { id: subnet-1234}
  clusterEndpoints:
    publicAccess:  true
iam:
  withOIDC: true
  serviceAccounts:
  - metadata:
      name: provider-aws-f78664a342f1
      namespace: crossplane-system
    attachPolicyARNs:
    - "arn:aws:iam::aws:policy/AdministratorAccess"
managedNodeGroups:
  - name: crossplane-nodegroup
    labels: { role: workers }
    instanceType: t3a.medium
    desiredCapacity: 1
    volumeSize: 30
    privateNetworking: true


위 내용을 cluster.yaml에 저장하고 아래 명령어를 사용하여 클러스터를 생성합니다.

eksctl create cluster -f cluster.yaml


크로스플레인 설치



아래 명령을 사용하여 helm 차트를 사용하여 Crossplane을 설치하십시오.

kubectl create namespace crossplane-system

helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update

helm install crossplane --namespace crossplane-system crossplane-stable/crossplane


Crossplane AWS 공급자 설치



공급자에는 AWS 클라우드 서비스를 시작하기 위한 CRD가 포함되어 있습니다. 아래 구성 yaml을 적용하여 공급자를 설치합니다. AWS_PROVIDER_ARN을 클러스터 생성 중에 생성된 역할의 ARN으로 바꿉니다.

apiVersion: pkg.crossplane.io/v1alpha1
kind: ControllerConfig
metadata:
  name: aws-config
  annotations:
    eks.amazonaws.com/role-arn: <AWS_PROVIDER_ARN>
spec:
  podSecurityContext:
    fsGroup: 2000
---
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-aws
spec:s
  package: crossplane/provider-aws:v0.24.1
  controllerConfigRef:
    name: aws-config


Crossplane이 AWS 클라우드 서비스를 시작하기 위해 IRSA 역할을 사용할 수 있도록 허용하는 아래 구성을 적용합니다.

apiVersion: aws.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
  name: aws-provider
spec:
  credentials:
    source: InjectedIdentity


Crossplane을 사용하여 S3 버킷 생성

아래 yaml을 적용하여 IRSA로 Crossplane 설정을 테스트합니다. 이 yaml이 적용되면 S3 버킷이 s3-demo라는 이름으로 생성됩니다.

apiVersion: s3.aws.crossplane.io/v1beta1
kind: Bucket
metadata:
  name: s3-demo
spec:
  deletionPolicy: Delete
  forProvider:
    acl: private
    locationConstraint: us-east-1
    serverSideEncryptionConfiguration:
      rules:
        - applyServerSideEncryptionByDefault:
            sseAlgorithm: AES256
    versioningConfiguration:
      status: Enabled
  providerConfigRef:
    name: aws-provider


메모:



EKS 클러스터 생성에서 관리 정책은 서비스 계정에 사용됩니다. 이 정책은 Crossplane을 통해 생성된 서비스를 기반으로 S3, SQS와 같은 특정 서비스로 제한될 수 있습니다.

좋은 웹페이지 즐겨찾기