이 주제에서는 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 |
예 |
볼륨 유형 | 제어 영역 노드의 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 문자열 |
scopes | 예 | OpenID 제공업체에 전송할 추가적인 범위입니다. Microsoft Azure 및 Okta에는 offline_access 범위가 필요합니다. |
쉼표로 구분된 목록 |
userClaim | 아니요 | 사용자 이름으로 사용할 JWT 클레임입니다. 기본값은 `sub`입니다. 이 값은 최종 사용자의 고유 식별자로 사용됩니다. OpenID 제공업체에 따라 이메일 또는 이름과 같은 다른 클레임을 선택할 수 있습니다. 하지만 이메일 이외의 클레임은 이름 충돌을 방지하기 위해 발급기관 URL이 프리픽스로 추가됩니다. | 문자열 |
userPrefix | 아니요 | 기존 이름과 충돌하지 않도록 사용자 이름 클레임에 추가되는 프리픽스입니다.
이 필드를 제공하지 않고 사용자 이름이 이메일 주소 이외의 값이면 기본적으로 issuerurl# 프리픽스가 추가됩니다. userPrefix 를 - 로 설정하면 프리픽스가 사용 중지됩니다.
| 문자열 |