AWSManagementService

O recurso AWSManagementService contém informações de configuração para seu GKE no serviço de gerenciamento da AWS.

Você configura um arquivo YAML denominado anthos-gke.yaml antes de criar o serviço de gerenciamento. A ferramenta anthos-gke usa a configuração ao criar o serviço de gerenciamento.

O conteúdo do arquivo anthos-gke.yaml depende de você usar anthos-gke para criar uma nuvem privada virtual (VPC) dedicada da AWS ou usa uma VPC da AWS atual.

VPC dedicada

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 atual

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

As seções a seguir descrevem esses campos.

spec.version

O valor de spec.version é a versão do serviço de gerenciamento que anthos- gke cria. A versão corresponde à saída de anthos-gke version. Por exemplo, aws-1.14.1-gke.0.

spec.region

O valor de spec.region é a região da AWS em que você quer implantar o serviço de gerenciamento. Por exemplo, us-east-1.

spec.authentication.awsIAM

O valor de spec.authentication.awsIAM.adminIdentityARNs é uma string com o nome do recurso da Amazon (ARN) de um usuário do AWS IAM com permissões para criar um GKE no serviço de gerenciamento do AWS. Por exemplo, arn:aws:iam::123456789:user/someuser.

spec.kmsKeyARN

O valor de spec.kmsKeyARN é uma string com o nome do recurso da Amazon (ARN, na sigla em inglês) ou o alias da chave do KMS da AWS criada em Pré-requisitos. O GKE no AWS usa a chave para criptografia de envelope. Por exemplo, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.

spec.databaseEncryption

O valor de spec.databaseEncryption.kmsKeyARN é uma string com o nome do recurso da Amazon (ARN) ou o alias de chave da chave do KMS da AWS que o GKE na AWS usa para criptografar secrets da camada de aplicativo nos clusters. Por exemplo, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.

spec.securityGroupIDs

O valor de spec.securityGroupIDs é uma lista de IDs extras de grupos de segurança da AWS atribuídos à VM de serviço de gerenciamento. Por exemplo, [sg-00123456789abcd, sg-00123456789def1]`.

spec.dedicatedVPC

Este campo representa as configurações de VPC que você quer.

Nome Descrição Tipo Exemplo
vpcCIDRBlock O bloco CIDR da VPC desejada da AWS. Precisa estar entre /16 e /28 bits. string 10.0.0.0/16
availabilityZones Zonas de disponibilidade para implantar réplicas do plano de controle. Cada zona terá a própria sub-rede e precisa de um bloco CIDR separado. list(string) [us-east-1a, us-east-1b]
privateSubnetCIDRBlocks Bloco CIDR para sub-redes particulares na VPC em cada zona de disponibilidade. Precisa ser um subconjunto de vpcCIDRBlock. É necessário ter uma sub-rede por zona de disponibilidade. list(string) [10.0.101.0/24, 10.0.102.0/24]
publicSubnetCIDRBlocks Bloco de CIDR para sub-redes públicas na VPC em cada zona de disponibilidade. Precisa ser um subconjunto de vpcCIDRBlock. É necessário ter uma sub-rede por zona de disponibilidade. list(string) [10.0.1.0/24, 10.0.2.0/24]
bastionAllowedSSHCIDRBlocks Blocos CIDR para permitir o acesso SSH de entrada. O uso deste campo foi suspenso no GKE na AWS 1.5. Use spec.bastionHost na versão 1.5 ou superior. string [104.132.0.0/14]

spec.existingVPC

Os campos em spec.existingVPC configuram o GKE na AWS para usar uma VPC atual da AWS.

Nome Descrição Tipo Exemplo
subnetID ID da sub-rede em que o serviço de gerenciamento é executado. string subnet-00123456789ab
allowedSSHSecurityGroupIDs Lista de IDs de grupo de segurança que permitem acesso SSH na VPC. list(string) [sg-00123456789abcd, sg-00123456789def1]

spec.googleCloud

Os campos em spec.googleCloud configuram as chaves do projeto do Google Cloud e da conta de serviço do IAM.

Nome Descrição Tipo Exemplo
projectID Projeto do Google Cloud. string my-gcp-project-id
serviceAccountKeys Caminhos para os arquivos das chaves da conta de serviço. serviceAccountKeys

spec.googleCloud.serviceAccountKeys

Os campos em spec.googleCloud.serviceAccountKeys incluem caminhos de arquivo local para as chaves da conta de serviço do GCP. Consulte os Pré-requisitos para ver descrições detalhadas de cada chave.

Nome Descrição Tipo Exemplo
managementService Chave da conta de serviço usada pelo cluster de gerenciamento string path/to/key/management-sa-key.json
connectAgent Chave de conta de serviço usada pelo agente do GKE Hub string path/to/key/hub-sa-key.json
node Chave da conta de serviço usada pelos nós string path/to/key/node-sa-key.json

spec.iam

Os campos em spec.iam configuram parâmetros opcionais do AWS IAM para o GKE no ambiente da AWS.

Nome Descrição Tipo Exemplo
1permissionsBoundary ARN do Limites de permissões para papéis do IAM string arn:aws:iam::126285863215:policy/testPolicyBoundary
path Caminho para o papel do IAM string /org_abc/team_abc/member_abc/

spec.bastionHost

A seção spec.bastionHost é opcional e descreve um Bastion Host.

Um Bastion Host é uma instância do EC2 colocada em uma sub-rede pública. Ele permite o acesso SSH de entrada a partir de um bloco CIDR especificado e tem acesso de SSH de saída ao seu GKE na gestão da AWS e nos clusters de usuários.

É possível criar um Bastion Host para instalações dedicatedVPC ou existingVPC. O campo allowedSSHCIDRBlocks especifica o intervalo de entrada dos endereços permitidos e não pode estar vazio.

Se não houver um Bastion Host, o GKE na AWS criará um novo Bastion Host.

  • Para uma instalação dedicatedVPC, o GKE na AWS cria uma sub-rede.
  • Para uma instalação existingVPC, é preciso fornecer uma sub-rede para o Bastion Host e garantir que essa sub-rede tenha conectividade com sua VPC.

É possível modificar o Bastion Host alterando ou excluindo o campo spec.bastionHost e executando anthos-gke aws management init, seguido de anthos-gke aws management apply.

Nome Descrição Tipo Exemplo
subnetID O ID da sub-rede em que o Bastion Host é executado. Para instalações de existingVPC, a sub-rede precisa permitir a entrada de onde você a acessará na porta 22. Além disso, verifique se a VPC permite acesso de entrada desta sub-rede. Para instalações de dedicatedVPC, não especifique este campo. O GKE na AWS provisionará a sub-rede com o acesso necessário. string subnet-003bdf7b0f5e21e45
allowedSSHCIDRBlocks Blocos CIDR para permitir o acesso SSH de entrada. list(string) [104.132.0.0/14]
rootVolume Objeto que descreve o volume raiz do Bastion Host. object {volumeType: gp2}

spec.rootVolume, spec.dataVolume e spec.bastionHost.rootVolume

A tabela a seguir descreve campos comuns para os seguintes objetos:

  • spec.rootVolume, para volumes de disco raiz do plano de controle
  • spec.dataVolume, para volumes de disco de dados do plano de controle
  • spec.bastionHost.rootVolume, para volumes de disco raiz do Bastion Host
Nome Descrição Tipo Exemplo Obrigatório
volumeType O tipo de volume EBS da AWS do nó. Pode ser gp2 (padrão) ou gp3. string gp2 no
iops A quantidade de operações de E/S provisionadas por segundo (IOPS, na sigla em inglês) para volumes. Válido apenas quando volumeType for GP3. Para mais informações, consulte Volumes SSD de uso geral (gp3). integer 5000 no
kmsKeyARN O ARN da chave do KMS da AWS usado para criptografar o volume EBS. Para mais informações, consulte Como usar uma CMK gerenciada pelo cliente para criptografar volumes. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee não

spec.tags

Nome Descrição Tipo Exemplo
tags Metadados de chave-valor opcionais atribuídos a cada recurso da AWS compatível com o serviço de gerenciamento. map(string) {Ambiente: produção, equipe: análise}

spec.proxy

O campo spec.proxy configura um proxy HTTP/HTTPS opcional.

Nome Descrição Tipo Exemplo
proxy Caminho para o arquivo de configuração de proxy. Caminho relativo de anthos-gke.yaml proxy.json

spec.bootstrapS3Bucket

O campo spec.bootstrapS3Bucket configura um nome de bucket S3 para GKE na AWS .

Nome Descrição Tipo Exemplo
bootstrapS3Bucket Campo opcional para o nome do bucket do AWS S3 em que o GKE no AWS armazena informações de configuração. Se você quiser criar vários serviços de gerenciamento do GKE na AWS na mesma região da AWS, defina esse valor como um nome de bucket exclusivo. string example-s3-bucket

spec.terraform

O campo spec.terraform.invokeManually configura o comando anthos-gke para não criar um serviço de gerenciamento.

Nome Descrição Tipo Exemplo
invokeManually Campo opcional que configura a ferramenta de linha de comando anthos-gke para não criar um serviço de gerenciamento depois de criar e validar sua configuração. Se você definir invokeManually como Yes, poderá editar e aplicar manualmente os arquivos de configuração do Terraform. Yes, No Yes
stateGCSBucket Campo opcional que especifica um bucket preexistente do Google Cloud Storage para o Terraform armazenar os dados de configuração. string example-GCS-bucket