AWSCluster

Este tópico descreve as opções de configuração da definição de recurso personalizado AWSCluster.

Definir um AWSCluster

AWSCluster é um recurso personalizado do Kubernetes definido pelo GKE no AWS. Este recurso representa um plano de controlo do GKE on AWS.

Para criar um cluster a partir deste modelo, copie o YAML seguinte e preencha os valores realçados definidos nas definições dos campos spec.networking e spec.controlPlane. Em seguida, aplique o manifesto de recursos ao seu serviço de gestão.

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 secções seguintes.

spec.networking

Este objeto define a configuração de rede ao nível do cluster.

Nome Descrição Tipo Exemplo Obrigatória
vpcID O ID da VPC onde o cluster é executado. O painel de controlo e os conjuntos de nós de um cluster de utilizadores são executados numa única VPC. string vpc-0814934042d983118 sim
podAddressCIDRBlocks Intervalo de endereços IPv4 usados pelos pods do cluster. Atualmente, só é suportado um único intervalo. O intervalo não pode sobrepor-se a nenhuma sub-rede acessível a partir da sua rede. É seguro usar o mesmo intervalo em vários objetos AWSCluster diferentes. list(string) [10.1.0.0/16] sim
serviceAddressCIDRBlocks Intervalo de endereços IPv4 usados pelos serviços do cluster. Atualmente, só é suportado um único intervalo. O intervalo não pode sobrepor-se a nenhuma sub-rede acessível a partir da sua rede. É seguro usar o mesmo intervalo em vários objetos AWSCluster diferentes. list(string) [10.2.0.0/16] sim
serviceLoadBalancerSubnetIDs IDs de sub-redes onde o GKE on AWS pode criar balanceadores de carga públicos ou privados. O GKE na AWS aplica etiquetas a cada uma destas sub-redes para suportar o equilíbrio de carga. O suporte de ALB requer mais do que uma sub-rede especificada. list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

Este objeto inclui parâmetros comuns para o plano de controlo do cluster.

Nome Descrição Tipo Exemplo Obrigatória
versão A versão do GKE do plano de controlo. Consulte os artigos Controlo de versões e atualizações e Atualizar um cluster de utilizadores para mais informações. string 1.25.5-gke.2100 sim
instanceType Um tipo de instância do AWS EC2 para cada réplica do plano de controlo. Consulte os tipos de instâncias suportados. string m5.large sim
keyName O par de chaves do AWS EC2 atribuído a cada réplica do plano de controlo. string my-key-pair sim
subnetIDs Uma lista de sub-redes da VPC para réplicas do plano de controlo. list(string) [subnet-06a004869a1eae947] sim
securityGroupIDs O GKE na AWS cria automaticamente grupos de segurança com as regras mínimas necessárias para um cluster funcional. Se quiser adicionar grupos de segurança adicionais com acesso a réplicas do plano de controlo, adicione os respetivos IDs a securityGroupIDs. list(string) [sg-0ec06559d997a796f] não
iamInstanceProfile O nome do perfil de instância do EC2 da AWS atribuído a réplicas do plano de controlo. string my-control-plane-profile sim
databaseEncryption.kmsKeyARN O nome do recurso da Amazon (ARN) da chave do AWS KMS que o GKE na AWS usa para encriptar segredos da camada de aplicação em clusters. de string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
hub.membershipName O nome de subscrição do Connect usado para registar o seu cluster. de string projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
cloudOperations A configuração do Cloud Logging e Cloud Monitoring para nós do plano de controlo. object {projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} não
etiquetas Metadados de chave/valor atribuídos a cada recurso da AWS que suporta o AWSCluster. Para mais informações, consulte o artigo Práticas recomendadas de etiquetagem map(string) {Environment: Production, Team: Analytics} não
proxySecretName Nome escolhido pelo utilizador de um segredo usado para definir proxies de rede específicos do cluster de string proxy-secret-0 não
workloadIdentity Contentor do Cloud Storage para a configuração da identidade da carga de trabalho. Contém um único campo: oidcDiscoveryGCSBucket. object {oidcDiscoveryGCSBucket: my-bucket} não
rootVolume Parâmetros para volumes raiz de réplicas do plano de controlo. Contém um objeto definido na secção seguinte. object {sizeGiB: 10} sim
etcd Parâmetros para volumes etcd. Contém um objeto definido na secção seguinte. object {sizeGiB: 10} sim

spec.controlPlane.rootVolume e spec.etcd.rootVolume

Estes campos aplicam-se a spec.controlPlane.rootVolume e spec.etcd.mainVolume.

Nome Descrição Tipo Exemplo Obrigatória
sizeGiB Tamanho do volume de raiz em gigabytes. integer 10 sim
volumeType O tipo de volume do EBS da AWS do nó do plano de controlo. Pode ser gp2 (predefinição) ou gp3. string gp2 não
iops A quantidade de operações de E/S aprovisionadas por segundo (IOPS) para volumes. Só é válido quando volumeType é GP3. Para mais informações, consulte o artigo Volumes SSD de uso geral (gp3). integer 5000 não
kmsKeyARN O ARN da chave do AWS KMS usada para encriptar o volume do EBS. Para mais informações, consulte o artigo Usar uma CMK gerida pelo cliente para encriptar volumes. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee não

spec.authentication.awsIAM

Este objeto especifica as funções que têm acesso de administrador do cluster com o AWS IAM.

Nome Descrição Tipo Exemplo Obrigatória
adminIdentityARNs ARN de utilizadores ou funções do AWS IAM aos quais foi concedido acesso de administrador do cluster. de string arn:aws:iam::123456789012:user/admin Só é obrigatório se usar a autenticação do AWS IAM.

spec.authentication.oidc

Pode especificar mais do que um objeto oidc. O objeto oidc está definido abaixo. Para mais informações, consulte o artigo Autenticação com OIDC.

Campo Obrigatória Descrição Formato
certificateAuthorityData Não Um certificado codificado em PEM codificado em base64 para o fornecedor OIDC. Para criar a string, codifique o certificado, incluindo os cabeçalhos, em base64. Inclua a string resultante em certificateAuthorityData como uma única linha. Exemplo: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== String
clientID Sim ID da aplicação cliente que faz pedidos de autenticação ao fornecedor OpenID. String
clientSecret Não Segredo partilhado entre a aplicação cliente OIDC e o fornecedor OIDC. String
extraParams Não Parâmetros de chave-valor adicionais a enviar para o fornecedor do OpenID. Se estiver a autorizar um grupo, transmita resource=token-groups-claim.

Se o seu servidor de autorização pedir 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 Afirmação JWT que o fornecedor usa para devolver os seus grupos de segurança. String
groupPrefix Não Prefixo adicionado às reivindicações de grupos para evitar conflitos com nomes existentes. Por exemplo, dado um grupo foobar e um prefixo gid-, gid-foobar. String
issuerURI Sim URL para onde são enviados pedidos de autorização para o seu OpenID, como https://example.com/adfs. O servidor da API Kubernetes usa este URL para descobrir chaves públicas para validar tokens. O URI tem de usar HTTPS. String de URL
kubectlRedirectURI Sim O URL de redirecionamento que o `kubectl` usa para autorização. String de URL
âmbitos Sim Âmbitos adicionais a enviar para o fornecedor OpenID. O Microsoft Azure e o Okta requerem o âmbito offline_access. Lista delimitada por vírgulas
userClaim Não Reivindicação JWT a usar como nome de utilizador. O valor predefinido é `sub`, que se espera que seja um identificador único do utilizador final. Pode escolher outras reivindicações, como o email ou o nome, consoante o fornecedor OpenID. No entanto, as reivindicações que não sejam o email têm o prefixo do URL do emissor para evitar conflitos de nomes. String
userPrefix Não Prefixo adicionado às reivindicações de nomes de utilizador para evitar conflitos com nomes existentes. Se não fornecer este campo e o nome de utilizador for um valor que não seja um endereço de email, o prefixo é predefinido como issuerurl#. Quando define userPrefix como -, a adição de prefixos é desativada. String