AWSManagementService

AWSManagementService 리소스에는 GKE on AWS 관리 서비스의 구성 정보가 포함되어 있습니다.

관리 서비스를 만들기 전에 anthos-gke.yaml이라는 YAML 파일을 구성합니다. anthos-gke 도구는 관리 서비스를 만들 때 이 구성을 사용합니다.

anthos-gke.yaml 파일의 콘텐츠는 anthos-gke을 사용하여 전용 AWS Virtual Private Cloud(VPC)를 만들지 아니면 기존 AWS VPC를 사용할지에 따라 달라집니다.

전용 VPC

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  dedicatedVPC:
    vpcCIDRBlock: VPC_CIDR_BLOCK
    availabilityZones:
    - ZONE_1
    - ZONE_2
    - ZONE_3
    privateSubnetCIDRBlocks:
    - PRIVATE_CIDR_BLOCK_1
    - PRIVATE_CIDR_BLOCK_2
    - PRIVATE_CIDR_BLOCK_3
    publicSubnetCIDRBlocks:
    - PUBLIC_CIDR_BLOCK_1
    - PUBLIC_CIDR_BLOCK_2
    - PUBLIC_CIDR_BLOCK_3
  # Optional section
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  tags:
    tag-name: tag-value
  bastionHost:
    allowedSSHCIDRBlocks:
    - SSH_CIDR_BLOCK
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

기존 VPC

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  securityGroupIDs:
    - SECURITY_GROUP_IDS
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  existingVPC:
    subnetID: [MANAGEMENT_SUBNET_ID]
    allowedSSHSecurityGroupIDs: [SSH_SECURITY_GROUPS]
  # Optional fields
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  ubuntuRepositoryMirror: 'packages.cloud.google.com'
  bastionHost:
    subnetID: [BASTION_HOST_SUBNET_ID]
    allowedSSHCIDRBlocks:
    - [SSH_CIDR_BLOCK]
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  tags:
    tag-name: tag-value
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

다음 섹션에서는 이러한 필드를 설명합니다.

spec.version

spec.version 값은 anthos- gke에서 만드는 관리 서비스의 버전입니다. 버전이 anthos-gke version의 결과와 일치합니다. 예를 들면 aws-1.14.1-gke.0입니다.

spec.region

spec.region 값은 관리 서비스를 배포하려는 AWS 리전입니다. 예를 들면 us-east-1입니다.

spec.authentication.awsIAM

spec.authentication.awsIAM.adminIdentityARNs 값은 GKE on AWS 관리 서비스를 만들 권한이 있는 AWS IAM 사용자의 Amazon 리소스 이름(ARN)이 포함된 문자열입니다. 예를 들면 arn:aws:iam::123456789:user/someuser입니다.

spec.kmsKeyARN

spec.kmsKeyARN 값은 기본 요건에서 만든 AWS KMS 키의 Amazon 리소스 이름(ARN)이 포함된 문자열입니다. GKE on AWS는 봉투 암호화에 키를 사용합니다. 예를 들면 arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee입니다.

spec.databaseEncryption

spec.databaseEncryption.kmsKeyARN 값은 GKE on AWS가 클러스터에서 애플리케이션 레이어 보안 비밀을 암호화하는 데 사용하는 AWS KMS 키의 Amazon 리소스 이름(ARN) 또는 키 별칭입니다. 예를 들면 arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee입니다.

spec.securityGroupIDs

spec.securityGroupIDs 값은 관리 서비스 VM에 할당된 추가 AWS 보안 그룹 ID의 목록입니다. 예를 들면 [sg-00123456789abcd, sg-00123456789def1]`입니다.

spec.dedicatedVPC

이 필드는 원하는 VPC 설정을 나타냅니다.

이름 설명 유형 예시
vpcCIDRBlock 원하는 AWS VPC의 CIDR 블록입니다. /16에서 /28비트 사이여야 합니다. string 10.0.0.0/16
availabilityZones 제어 영역 복제본을 배포할 가용성 영역입니다. 각 영역에는 자체 서브넷이 있으며 별도의 CIDR 블록이 필요합니다. list(string) [us-east-1a, us-east-1b]
privateSubnetCIDRBlocks 각 가용성 영역의 VPC 내에 있는 비공개 서브넷의 CIDR 블록입니다. vpcCIDRBlock의 하위 집합이어야 합니다. 가용성 영역당 하나의 서브넷이 있어야 합니다. list(string) [10.0.101.0/24, 10.0.102.0/24]
publicSubnetCIDRBlocks 각 가용성 영역의 VPC 내에 있는 공개 서브넷의 CIDR 블록입니다. vpcCIDRBlock의 하위 집합이어야 합니다. 가용성 영역당 하나의 서브넷이 있어야 합니다. list(string) [10.0.1.0/24, 10.0.2.0/24]
bastionAllowedSSHCIDRBlocks 인바운드 SSH 액세스를 허용하는 CIDR 블록. 이 필드는 GKE on AWS 1.5에서 지원 중단되었습니다. 버전 1.5 이상에서 spec.bastionHost를 사용하세요. string [104.132.0.0/14]

spec.existingVPC

spec.existingVPC 아래의 필드는 GKE on AWS가 기존 AWS VPC를 사용하도록 구성합니다.

이름 설명 유형 예시
subnetID 관리 서비스가 실행되는 서브넷 ID입니다. string subnet-00123456789ab
allowedSSHSecurityGroupIDs VPC 내에서 SSH 액세스를 허용하는 보안 그룹 ID의 목록입니다. list(문자열) [sg-00123456789abcd, sg-00123456789def1]

spec.googleCloud

spec.googleCloud 아래의 필드는 Google Cloud 프로젝트와 IAM 서비스 계정 키를 구성합니다.

이름 설명 유형 예시
projectID Google Cloud 프로젝트입니다. string my-gcp-project-id
serviceAccountKeys 서비스 계정 키의 파일 경로입니다. serviceAccountKeys

spec.googleCloud.serviceAccountKeys

spec.googleCloud.serviceAccountKeys 아래의 필드에는 GCP 서비스 계정 키에 대한 로컬 파일 경로가 포함됩니다. 각 키에 대한 자세한 설명은 기본 요건을 참조하세요.

이름 설명 유형 예시
managementService 관리자 클러스터에서 사용하는 서비스 계정 키 문자열 path/to/key/management-sa-key.json
connectAgent GKE Hub Connect Agent에서 사용하는 서비스 계정 키 문자열 path/to/key/hub-sa-key.json
node 노드에서 사용하는 서비스 계정 키 문자열 path/to/key/node-sa-key.json

spec.iam

spec.iam 아래의 필드는 GKE on AWS 환경에서 선택사항인 AWS IAM 매개변수를 구성합니다.

이름 설명 유형 예시
permissionsBoundary IAM 역할의 권한 경계의 ARN string arn:aws:iam::126285863215:policy/testPolicyBoundary
경로 IAM 역할의 경로 string /org_abc/team_abc/member_abc/

spec.bastionHost

spec.bastionHost 섹션은 선택사항이며 배스천 호스트를 설명합니다.

배스천 호스트는 공개 서브넷에 배치된 EC2 인스턴스입니다. 지정된 CIDR 블록에서 인바운드 SSH 액세스를 허용하고 GKE on AWS 관리 서비스 및 사용자 클러스터로 아웃바운드 SSH 액세스 권한을 갖습니다.

배스천 호스트를 dedicatedVPC 또는 existingVPC 설치용으로 만들 수 있습니다. allowedSSHCIDRBlocks 필드는 허용되는 주소의 인바운드 범위를 지정하며 비어 있지 않아야 합니다.

배스천 호스트가 없으면 GKE on AWS는 새 배스천 호스트를 만듭니다.

  • dedicatedVPC 설치 시 GKE on AWS는 서브넷을 만듭니다.
  • existingVPC 설치 시 배스천 호스트의 서브넷을 제공하고 이 서브넷이 VPC에 연결되어 있는지 확인해야 합니다.

배스천 호스트를 수정하려면 spec.bastionHost 필드를 변경하거나 삭제한 다음 anthos-gke aws management init를 실행한 후 anthos-gke aws management apply를 실행합니다.

이름 설명 유형 예시
subnetID 배스천 호스트가 실행되는 서브넷의 ID입니다. existingVPC 설치의 경우 서브넷은 포트 22에서 액세스할 수 있는 인그레스를 허용해야 합니다. 또한 VPC가 이 서브넷에서 인바운드 액세스를 허용하는지 확인합니다. dedicatedVPC 설치의 경우 이 필드를 지정하지 마세요. GKE on AWS는 필요한 액세스 권한으로 서브넷을 프로비저닝합니다. 문자열 subnet-003bdf7b0f5e21e45
allowedSSHCIDRBlocks 인바운드 SSH 액세스를 허용하는 CIDR 블록. list(string) [104.132.0.0/14]
rootVolume 배스천 호스트의 루트 볼륨을 설명하는 객체입니다. object {volumeType: gp2}

spec.rootVolume, spec.dataVolume 및 spec.bastionHost.rootVolume

다음 표에서는 다음 객체의 공통 필드를 설명합니다.

  • spec.rootVolume: 컨트롤 플레인 루트 디스크 볼륨
  • spec.dataVolume: 컨트롤 플레인 데이터 디스크 볼륨
  • spec.bastionHost.rootVolume: 배스천 호스트 루트 디스크 볼륨
이름 설명 유형 예시 필수
볼륨 유형 노드의 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.tags

이름 설명 유형 예시
tags 관리 서비스를 지원하는 각 AWS 리소스에 할당되는 선택사항인 키/값 메타데이터입니다. map(string) {환경: 프로덕션, 팀: 애널리틱스}

spec.proxy

spec.proxy 필드는 선택사항인 HTTP/HTTPS 프록시를 구성합니다.

이름 설명 유형 예시
proxy 프록시 구성 파일의 경로. anthos-gke.yaml의 상대 경로 proxy.json

spec.bootstrapS3Bucket

spec.bootstrapS3Bucket 필드는 GKE on AWS의 S3 버킷 이름을 구성합니다 .

이름 설명 유형 예시
bootstrapS3Bucket GKE on AWS가 구성 정보를 저장하는 AWS S3 버킷 이름의 선택사항인 필드입니다. 동일한 AWS 리전에 GKE on AWS 관리 서비스를 여러 개 만들려면 이 값을 고유한 버킷 이름으로 설정합니다. string example-s3-bucket

spec.terraform

spec.terraform.invokeManually 필드는 관리 서비스를 만들지 않도록 anthos-gke 명령어를 구성합니다.

이름 설명 유형 예시
invokeManually 구성을 빌드하고 검증한 후 관리 서비스를 만들지 않도록 anthos-gke 명령줄 도구를 구성하는 선택적인 필드입니다. invokeManuallyYes로 설정하면 Terraform 구성 파일을 수동으로 수정하고 적용할 수 있습니다. Yes, No Yes
stateGCSBucket Terraform이 구성 데이터를 저장할 기존 Google Cloud Storage 버킷을 지정하는 선택적 필드입니다. string example-GCS-bucket