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 AWS KMS que o GKE na AWS usa para criptografar segredos 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 |