AWSCluster

이 주제에서는 AWSCluster 커스텀 리소스 정의의 구성 옵션을 설명합니다.

AWSCluster 정의

AWSCluster는 GKE on AWS에서 정의한 Kubernetes 커스텀 리소스입니다. 이 리소스는 GKE on AWS 제어 영역을 나타냅니다.

이 템플릿에서 클러스터를 만들려면 다음 YAML을 복사하고 spec.networkingspec.controlPlane 필드에 정의에 정의된 강조표시된 값을 완료합니다. 그런 다음 관리 서비스에 리소스 매니페스트를 적용합니다.

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSCluster
metadata:
  name: CLUSTER_NAME
spec:
  region: AWS_REGION
  networking:
    vpcID: VPC_ID
    podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS
    serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS
    serviceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS
  controlPlane:
    version: GKE_VERSION # Latest version is 1.25.5-gke.2100
    instanceType: AWS_INSTANCE_TYPE
    keyName: SSH_KEY_NAME
    subnetIDs:
    - CONTROL_PLANE_SUBNET_IDS
    securityGroupIDs:
    - CONTROL_PLANE_SECURITY_GROUPS
    iamInstanceProfile: CONTROL_PLANE_IAM_ROLE
    databaseEncryption:
      kmsKeyARN: ARN_OF_KMS_KEY
    hub:
      membershipName: ANTHOS_CONNECT_NAME
    cloudOperations: # Optional
      projectID: YOUR_PROJECT
      location: GCP_LOCATION
      enableLogging: ENABLE_LOGGING
      enableMonitoring: ENABLE_MONITORING
    tags:
      TAG_KEY: TAG_VALUE
    proxySecretName: PROXY_SECRET_NAME
    workloadIdentity:
      oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
    rootVolume:  # Optional
      sizeGiB: ROOT_VOLUME_SIZE
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
    etcd:  # Optional
      mainVolume:
        sizeGiB: ETCD_VOLUME_SIZE
        volumeType: ETCD_VOLUME_TYPE
        iops: ETCD_VOLUME_IOPS
        kmsKeyARN: ETCD_VOLUME_KEY
  authentication:
    awsIAM:
      adminIdentityARNs: ADMIN_IAM_ARN
    oidc: # Optional
    - certificateAuthorityData: CERTIFICATE_STRING
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      extraParams:  EXTRA_PARAMS
      groupsClaim:  GROUPS_CLAIM
      groupPrefix:  GROUP_PREFIX
      issuerURI:  ISSUER_URL
      kubectlRedirectURI:  KUBECTL_REDIRECT_URL
      scopes:  SCOPES
      userClaim:  USER_CLAIM
      userPrefix:  USER_PREFIX

spec의 하위 필드는 다음 섹션에서 설명합니다.

spec.networking

이 객체는 클러스터 전체 네트워킹 구성을 정의합니다.

이름 설명 유형 예시 필수
vpcID 클러스터가 실행되는 VPC의 ID입니다. 사용자 클러스터의 제어 영역과 노드 풀은 단일 VPC에서 실행됩니다. string vpc-0814934042d983118
podAddressCIDRBlocks 클러스터의 pod에서 사용되는 IPv4 주소 범위입니다. 현재 단일 범위만 지원됩니다. 범위는 네트워크에서 연결할 수 있는 서브넷과 겹치지 않아야 합니다. 여러 다른 AWSCluster 객체에 같은 범위를 사용하는 것이 안전합니다. list(string) [10.1.0.0/16]
serviceAddressCIDRBlocks 클러스터 서비스에서 사용되는 IPv4 주소 범위입니다. 현재 단일 범위만 지원됩니다. 범위는 네트워크에서 연결할 수 있는 서브넷과 겹치지 않아야 합니다. 여러 다른 AWSCluster 객체에 같은 범위를 사용하는 것이 안전합니다. list(string) [10.2.0.0/16]
serviceLoadBalancerSubnetIDs GKE on AWS가 공개 또는 비공개 부하 분산기를 만들 수 있는 서브넷 ID입니다. GKE on AWS는 부하 분산을 지원하기 위해 이러한 각 서브넷에 태그를 적용합니다. ALB 지원에는 지정된 서브넷이 2개 이상 필요합니다. list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

이 객체에는 클러스터의 제어 영역에 공통된 매개변수가 포함됩니다.

이름 설명 유형 예시 필수
버전 제어 영역의 GKE 버전입니다. 자세한 내용은 버전 관리 및 업그레이드사용자 클러스터 업그레이드를 참조하세요. string 1.25.5-gke.2100
instanceType 각 제어 영역 복제본의 AWS EC2 인스턴스 유형입니다. 지원되는 인스턴스 유형을 참조하세요. string m5.large
keyName 각 제어 영역 복제본에 할당된 AWS EC2 키 쌍입니다. string my-key-pair
subnetIDs 제어 영역 복제본의 VPC 서브넷 목록입니다. list(string) [subnet-06a004869a1eae947]
securityGroupIDs GKE on AWS가 작동하는 클러스터에 필요한 최소 규칙의 보안 그룹을 자동으로 만듭니다. 제어 영역 복제본에 액세스할 수 있는 보안 그룹을 추가하려면 ID를 securityGroupIDs에 추가하세요. list(string) [sg-0ec06559d997a796f] 아니요
iamInstanceProfile 제어 영역 복제본에 할당된 AWS EC2 인스턴스 프로필의 이름입니다. string my-control-plane-profile
databaseEncryption.kmsKeyARN GKE on AWS가 클러스터의 애플리케이션 레이어 보안 비밀을 암호화하는 데 사용하는 AWS KMS 키의 Amazon 리소스 이름(ARN)입니다. 문자열 arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
hub.membershipName 클러스터를 등록하는 데 사용된 Connect 멤버십 이름입니다. 문자열 projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
cloudOperations 제어 영역 노드에 대한 Cloud Logging 및 Cloud Monitoring 구성입니다. object {projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} 아니요
tags AWSCluster를 지원하는 각 AWS 리소스에 할당되는 키/값 메타데이터입니다. 자세한 내용은 태그 지정 권장사항을 참조하세요. map(string) {환경: 프로덕션, 팀: 애널리틱스} 아니요
proxySecretName 클러스터별 네트워크 프록시를 정의하기 위해 사용되는 사용자가 선택한 보안 비밀의 이름입니다. 문자열 proxy-secret-0 아니요
workloadIdentity 워크로드 아이덴티티 구성을 위한 Cloud Storage 버킷입니다. 단일 필드 oidcDiscoveryGCSBucket을 포함합니다. object {oidcDiscoveryGCSBucket: my-bucket} 아니요
rootVolume 제어 영역 복제본 루트 볼륨의 매개변수입니다. 다음 섹션에서 정의된 객체를 포함합니다. object {sizeGiB: 10}
etcd etcd 볼륨의 매개변수입니다. 다음 섹션에서 정의된 객체를 포함합니다. object {sizeGiB: 10}

spec.controlPlane.rootVolume 및 spec.etcd.rootVolume

이러한 필드는 spec.controlPlane.rootVolumespec.etcd.mainVolume에 모두 적용됩니다.

이름 설명 유형 예시 필수
sizeGiB 루트 볼륨의 크기(GB)입니다. integer 10
볼륨 유형 제어 영역 노드의 AWS EBS 볼륨 유형입니다. gp2(기본값) 또는 gp3일 수 있습니다. string gp2 아니요
iops 볼륨에 대해 초당 프로비저닝된 IO 작업량 (IOPS) 입니다. volumeTypeGP3일 때만 유효합니다. 자세한 내용은 범용 SSD 볼륨(gp3)을 참조하세요. integer 5000 아니요
kmsKeyARN EBS 볼륨을 암호화하는 데 사용되는 AWS KMS 키의 ARN입니다. 자세한 내용은 고객 관리 CMK를 사용하여 볼륨 암호화를 참조하세요. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 아니요

spec.authentication.awsIAM

이 객체는 AWS IAM에서 클러스터 관리자 액세스 권한이 부여된 역할을 지정합니다.

이름 설명 유형 예시 필수
adminIdentityARNs AWS IAM 사용자 또는 클러스터 관리자 액세스 권한이 부여된 역할의 ARN 문자열 arn:aws:iam::123456789012:user/admin AWS IAM 인증을 사용하는 경우에만 필요합니다.

spec.authentication.oidc

oidc 객체를 두 개 이상 지정할 수 있습니다. oidc 객체는 아래에 정의되어 있습니다. 자세한 내용은 OIDC로 인증을 참조하세요.

필드 필수 설명 형식
certificateAuthorityData 아니요 OIDC 제공업체의 base64로 인코딩된 PEM 인코딩 인증서입니다. 문자열을 만들려면 헤더를 포함한 인증서를 base64로 인코딩합니다. certificateAuthorityData에 결과 문자열을 단일 줄로 포함합니다. 예를 들면 certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==입니다. 문자열
clientID OpenID 제공업체에 인증을 요청하는 클라이언트 애플리케이션의 ID입니다. 문자열
clientSecret 아니요 OIDC 클라이언트 애플리케이션과 OIDC 제공업체 간에 공유된 보안 비밀입니다. 문자열
extraParams 아니요 OpenID 제공업체에 전송할 추가적인 키-값 매개변수입니다. 그룹을 승인하는 경우 resource=token-groups-claim를 전달합니다.

승인 서버가 Microsoft Azure 및 Okta의 인증 동의를 요청하면 extraParamsprompt=consent로 설정합니다. Google Cloud ID의 경우 extraParamsprompt=consent,access_type=offline로 설정합니다.

쉼표로 구분된 목록
groupsClaim 아니요 제공업체가 보안 그룹을 반환하기 위해 사용할 JWT 클레임입니다. 문자열
groupPrefix 아니요 기존 이름과 충돌을 방지하기 위해 그룹 클레임에 추가된 프리픽스입니다. 예를 들어 그룹이 'foobar'이고 프리픽스가 'gid-'이면 'gid-foobar'가 됩니다. 문자열
issuerURI 승인 요청이 OpenID로 전송되는 URL입니다(예: https://example.com/adfs). Kubernetes API 서버는 이 URL을 사용하여 토큰을 확인할 수 있도록 공개 키를 검색합니다. URI는 HTTPS를 사용해야 합니다. URL 문자열
kubectlRedirectURI 승인을 위해 리디렉션 url `kubectl`에서 사용됩니다. URL 문자열
scopes OpenID 제공업체에 전송할 추가적인 범위입니다. Microsoft Azure 및 Okta에는 offline_access 범위가 필요합니다. 쉼표로 구분된 목록
userClaim 아니요 사용자 이름으로 사용할 JWT 클레임입니다. 기본값은 `sub`입니다. 이 값은 최종 사용자의 고유 식별자로 사용됩니다. OpenID 제공업체에 따라 이메일 또는 이름과 같은 다른 클레임을 선택할 수 있습니다. 하지만 이메일 이외의 클레임은 이름 충돌을 방지하기 위해 발급기관 URL이 프리픽스로 추가됩니다. 문자열
userPrefix 아니요 기존 이름과 충돌하지 않도록 사용자 이름 클레임에 추가되는 프리픽스입니다. 이 필드를 제공하지 않고 사용자 이름이 이메일 주소 이외의 값이면 기본적으로 issuerurl# 프리픽스가 추가됩니다. userPrefix-로 설정하면 프리픽스가 사용 중지됩니다. 문자열