이 주제에서는 AWSCluster 커스텀 리소스 정의의 구성 옵션을 설명합니다.
AWSCluster 정의
AWSCluster는 GKE on AWS에서 정의한 Kubernetes 커스텀 리소스입니다. 이 리소스는 GKE on AWS 컨트롤 플레인을 나타냅니다.
이 템플릿에서 클러스터를 만들려면 다음 YAML을 복사하고 spec.networking 및 spec.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.rootVolume 및 spec.etcd.mainVolume에 모두 적용됩니다.
| 이름 | 설명 | 유형 | 예시 | 필수 | 
|---|---|---|---|---|
| sizeGiB | 루트 볼륨의 크기(GB)입니다. | integer | 
10 | 
예 | 
| volumeType | 컨트롤 플레인 노드의 AWS EBS 볼륨 유형입니다. gp2(기본값) 또는 gp3일 수 있습니다. | 
string | 
gp2 | 
아니요 | 
| iops | 볼륨에 대해 초당 프로비저닝된 IO 작업량 (IOPS) 입니다. volumeType가 GP3일 때만 유효합니다. 자세한 내용은 범용 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의 인증 동의를 요청하면   | 
쉼표로 구분된 목록 | 
| groupsClaim | 아니요 | 제공업체가 보안 그룹을 반환하기 위해 사용할 JWT 클레임입니다. | 문자열 | 
| groupPrefix | 아니요 | 기존 이름과 충돌을 방지하기 위해 그룹 클레임에 추가된 프리픽스입니다. 예를 들어 그룹이 'foobar'이고 프리픽스가 'gid-'이면 'gid-foobar'가 됩니다. | 문자열 | 
| issuerURI | 예 | 승인 요청이 OpenID로 전송되는 URL입니다(예: https://example.com/adfs). Kubernetes API 서버는 이 URL을 사용하여 토큰을 확인할 수 있도록 공개 키를 검색합니다. URI는 HTTPS를 사용해야 합니다. | 
URL 문자열 | 
| kubectlRedirectURI | 예 | 승인을 위해 리디렉션 url `kubectl`에서 사용됩니다. | URL 문자열 | 
| 범위 | 예 | OpenID 제공업체에 전송할 추가적인 범위입니다. Microsoft Azure 및 Okta에는 offline_access 범위가 필요합니다. | 
쉼표로 구분된 목록 | 
| userClaim | 아니요 | 사용자 이름으로 사용할 JWT 클레임입니다. 기본값은 `sub`입니다. 이 값은 최종 사용자의 고유 식별자로 사용됩니다. OpenID 제공업체에 따라 이메일 또는 이름과 같은 다른 클레임을 선택할 수 있습니다. 하지만 이메일 이외의 클레임은 이름 충돌을 방지하기 위해 발급기관 URL이 프리픽스로 추가됩니다. | 문자열 | 
| userPrefix | 아니요 | 기존 이름과 충돌하지 않도록 사용자 이름 클레임에 추가되는 프리픽스입니다.
  이 필드를 제공하지 않고 사용자 이름이 이메일 주소 이외의 값이면 기본적으로 issuerurl# 프리픽스가 추가됩니다. userPrefix를 -로 설정하면 프리픽스가 사용 중지됩니다.
 | 문자열 |