Uma nova versão dos clusters do Anthos na AWS (GKE na AWS) foi lançada em 1º de setembro. Consulte as Notas de lançamento para mais informações.

AWSCluster

Neste tópico, descrevemos as opções de configuração da definição de recurso personalizada do AWSCluster.

Como definir um AWSCluster

AWSCluster é um recurso personalizado do Kubernetes definido pelos clusters do Anthos na AWS; Esse recurso representa um cluster do Anthos no plano de controle da AWS.

Para criar um cluster com base nesse modelo, copie o YAML a seguir e preencha os valores destacados definidos nos campos spec.networking e spec.controlPlane. Em seguida, aplique o manifesto do recurso ao serviço de gerenciamento.

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.20.10-gke.600
    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

Os subcampos em spec são descritos nas seções a seguir.

spec.networking

Esse objeto define a configuração de rede em todo o cluster.

Nome Descrição Tipo Exemplo Obrigatório
vpcID O ID da VPC em que o cluster é executado. O plano de controle e os pools de nós de um cluster de usuário são executados em uma única VPC. string vpc-0814934042d983118 sim
podAddressCIDRBlocks Intervalo de endereços IPv4 usados pelos pods do cluster. Atualmente, apenas um intervalo é aceito. O intervalo não pode se sobrepor a nenhuma sub-rede acessível pela rede. É seguro usar o mesmo intervalo em vários objetos diferentes do AWSCluster. list(string) [10.1.0.0/16] yes
serviceAddressCIDRBlocks Intervalo de endereços IPv4 usados pelos serviços do cluster. Atualmente, apenas um intervalo é aceito. O intervalo não pode se sobrepor a nenhuma sub-rede acessível pela rede. É seguro usar o mesmo intervalo em vários objetos diferentes do AWSCluster. list(string) [10.2.0.0/16] yes
serviceLoadBalancerSubnetIDs Códigos de sub-rede em que os clusters do Anthos na AWS podem criar balanceadores de carga públicos ou privados. Os clusters do Anthos no AWS aplicam tags a cada uma dessas sub-redes para serem compatíveis com o balanceamento de carga. O suporte do ALB requer mais de uma sub-rede especificada. list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

Esse objeto inclui parâmetros comuns para o plano de controle do cluster.

Nome Descrição Tipo Exemplo Obrigatório
version A versão do GKE do plano de controle. Consulte Controle de versão e upgrades e como fazer upgrade de um cluster de usuário para mais informações. string 1.20.10-gke.600 sim
instanceType Um tipo de instância EC2 da AWS para cada réplica do plano de controle. Consulte Tipos de instâncias compatíveis. string t3.medium sim
keyName Par de chaves EC2 da AWS atribuído a cada réplica do plano de controle. string my-key-pair sim
subnetIDs Uma lista de sub-redes VPC para réplicas do plano de controle. list(string) [subnet-06a004869a1eae947] sim
securityGroupIDs Os clusters do Anthos na AWS criam automaticamente grupos de segurança com regras mínimas necessárias para um cluster em funcionamento. Se você quiser adicionar outros grupos de segurança com acesso a réplicas de plano de controle, adicione seus IDs a securityGroupIDs. list(string) [sg-0ec06559d997a796f] não
iamInstanceProfile O nome do perfil da instância EC2 da AWS atribuído às réplicas do plano de controle. string my-control-plane-profile yes
databaseEncryption.kmsKeyARN O nome do recurso da Amazon (ARN, na sigla em inglês) da chave do KMS da AWS que os clusters do Anthos na AWS usam para criptografar secrets da camada de aplicativo nos clusters. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
hub.membershipName O nome da assinatura do Connect usado para registrar seu cluster. string projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
cloudOperations A configuração do Cloud Logging e do Cloud Monitoring para nós do plano de controle. object {projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} não
tags Metadados de chave/valor atribuídos a cada recurso da AWS compatível com o AWSCluster. Para mais informações, consulte Práticas recomendadas de inclusão de tag map(string) {Ambiente: produção, equipe: Analytics} não
proxySecretName Nome escolhido pelo usuário de um secret usado para definir proxies de rede específicos do cluster string proxy-secret-0 não
Identidade da carga de trabalho Bucket do Cloud Storage para configuração da identidade da carga de trabalho. Contém um único campo: oidcDiscoveryGCSBucket. object {oidcDiscoveryGCSBucket: my-bucket} no
rootVolume Parâmetros para volumes raiz da réplica do plano de controle. Contém um objeto definido na seção a seguir. object {sizeGiB: 10} yes
etcd Parâmetros para volumes de etcd. Contém um objeto definido na seção a seguir. object {sizeGiB: 10} yes

spec.controlPlane.rootVolume e spec.etcd.rootVolume

Esses campos se aplicam a spec.controlPlane.rootVolume e spec.etcd.mainVolume.

Nome Descrição Tipo Exemplo Obrigatório
sizeGiB Tamanho do volume raiz em gigabytes. integer 10 yes
volumeType O tipo de volume EBS da AWS do nó do plano de controle. 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 no

spec.authentication.awsIAM

Esse objeto especifica papéis com acesso de administrador de cluster com IAM da AWS.

Nome Descrição Tipo Exemplo Obrigatório
adminIdentityARNs ARN de usuários ou papéis do IAM da AWS com acesso de administrador de cluster. string arn:aws:iam::123456789012:user/admin Necessário apenas se você estiver usando a autenticação de IAM da AWS.

spec.authentication.oidc

É possível especificar mais de um objeto oidc. O objeto oidc é definido abaixo. Para mais informações, consulte Como autenticar com o OIDC.

Campo Obrigatório Descrição Formato
certificateAuthorityData Não Um certificado codificado em PEM codificado em base64 para o provedor OIDC. Para criar a string, codifique o certificado, incluindo cabeçalhos, em base64. Inclua a string resultante em certificateAuthorityData como uma única linha. Exemplo: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== String
clientID Sim ID do aplicativo cliente que faz solicitações de autenticação para o provedor OpenID. String
clientSecret Não Senha secreta compartilhada entre o aplicativo cliente do OIDC e o provedor OIDC. String
parâmetros extras Não Parâmetros de chave-valor extras a serem enviados ao provedor OpenID. Se você estiver autorizando um grupo, transmita resource=token-groups-claim.

Se o servidor de autorização solicitar consentimento, para autenticação com o Microsoft Azure e o Okta, defina extraParams como prompt=consent. Para o Google Cloud Identity, defina extraParams como prompt=consent,access_type=offline.

Lista delimitada por vírgulas
groupsClaim Não Declaração do JWT que o provedor usa para retornar grupos de segurança. String
groupPrefix Não Prefixo anexado a declarações de grupo para evitar conflitos com nomes existentes. Por exemplo, considerando um grupo foobar e um prefixo gid-: gid-foobar. String
issuerURI Sim URL ao qual são enviadas solicitações de autorização para seu OpenID, como https://example.com/adfs. O servidor da API Kubernetes usa esse URL a fim de descobrir chaves públicas para verificação de tokens. O URI precisa usar HTTPS. String do URL
kubectlRedirectURI Sim O URL de redirecionamento "kubectl" usa para autorização. String do URL
scopes Sim Outros escopos a serem enviados ao provedor OpenID. O Microsoft Azure e o Okta exigem o escopo offline_access. Lista delimitada por vírgulas
userClaim Não Declaração do JWT a ser usada como nome de usuário. O padrão é "sub", que precisa ser um identificador exclusivo do usuário final. É possível escolher outras declarações, como e-mail ou nome, dependendo do provedor OpenID. No entanto, as declarações diferentes de e-mail são prefixadas com o URL do emissor para evitar conflitos de nomenclatura. String
userPrefix Não Prefixo anexado a declarações de nome de usuário para evitar conflitos com nomes que já existem. Se você não fornecer esse campo e o nome de usuário for um valor diferente de um endereço de e-mail, o prefixo será issuerurl# por padrão. Quando você define userPrefix como -, o prefixo é desativado. String