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 pelo
GKE na AWS. Esse recurso representa um
plano de controle do GKE na 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.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
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 o GKE na AWS pode criar balanceadores de carga públicos ou privados. O GKE na AWS aplica tags a cada uma dessas sub-redes para oferecer suporte ao 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.25.5-gke.2100 | 
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 | 
m5.large | 
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 | O GKE na AWS cria 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) da chave do KMS da AWS que o GKE na AWS usa 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   | 
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 | 
| escopos | 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 |