Este tópico descreve como personalizar a configuração de um cluster de usuários do GKE na AWS.
Talvez você queira criar um cluster de usuário personalizado pelos seguintes motivos:
- Criando outro cluster para um ambiente de preparação ou teste.
- Adicionando pools de nós com diferentes tipos de máquinas.
- Criação de um cluster em zonas de disponibilidade (AZ) específicas da AWS.
Antes de começar
Antes de começar a usar o GKE na AWS, certifique-se de ter executado as seguintes tarefas:
- Conclua os pré-requisitos .
Instalar um serviço de gerenciamento .
Se você quiser criar um cluster sem usar
terraform output example_cluster
, tenha sub-redes privadas da AWS para o seu plano de controle. Cada sub-rede deve pertencer a uma AZ diferente na mesma região da AWS. As tabelas de rotas devem ser configuradas para permitir tráfego entre sub-redes privadas, e cada sub-rede deve ter acesso a um gateway NAT.Tenha em mãos seu ID de Nuvem Privada Virtual (VPC) da AWS. Um ID de VPC se parece com
vpc-012345678abcde
. Você pode encontrá-lo no Console da AWS .
Para se conectar aos seus recursos do GKE na AWS, siga as seguintes etapas. Selecione se você já possui uma VPC da AWS (ou conexão direta com sua VPC) ou se criou uma VPC dedicada ao criar seu serviço de gerenciamento.
VPC existente
Se você tiver uma conexão direta ou VPN com uma VPC existente, omita a linha env HTTP_PROXY=http://localhost:8118
dos comandos neste tópico.
VPC dedicada
Ao criar um serviço de gerenciamento em uma VPC dedicada, o GKE na AWS inclui um bastião host em uma sub-rede pública.
Para se conectar ao seu serviço de gerenciamento, execute as seguintes etapas:
Acesse o diretório com a configuração do GKE na AWS. Você criou este diretório ao instalar o serviço de gerenciamento .
cd anthos-aws
Para abrir o túnel, execute o script
bastion-tunnel.sh
. O túnel encaminha paralocalhost:8118
.Para abrir um túnel para o host bastião, execute o seguinte comando:
./bastion-tunnel.sh -N
As mensagens do túnel SSH aparecem nesta janela. Quando estiver pronto para encerrar a conexão, interrompa o processo usando Control+C ou fechando a janela.
Abra um novo terminal e entre no diretório
anthos-aws
.cd anthos-aws
Verifique se você consegue se conectar ao cluster com
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
A saída inclui a URL para o servidor da API do serviço de gerenciamento.
Selecionando um tamanho de instância do plano de controle
O GKE na AWS não oferece suporte ao redimensionamento de instâncias do plano de controle. Antes de criar seu cluster de usuário, selecione o tamanho da instância dos seus planos de controle. Os tamanhos dos planos de controle dependem do número de nós no cluster. A tabela a seguir contém os tamanhos de instância do plano de controle recomendados para vários tamanhos de cluster.
Tamanho do cluster (nós) | Tipo de instância do plano de controle |
---|---|
1 – 10 | m5.grande |
11 – 100 | m5.xlarge |
101 – 200 | m5.2xgrande |
Criando um novo cluster com uma configuração personalizada
Você pode usar terraform output example_cluster
para criar a configuração para um cluster de usuário por cluster de gerenciamento. Se quiser criar clusters adicionais, será necessário aplicar uma configuração personalizada.
Neste exemplo, você cria um cluster manualmente a partir dos CRDs AWSCluster
e AWSNodePool
.
Acesse o diretório com a configuração do GKE na AWS. Você criou este diretório ao instalar o serviço de gerenciamento .
cd anthos-aws
No seu diretório
anthos-aws
, useanthos-gke
para alternar o contexto para seu serviço de gerenciamento.cd anthos-aws anthos-gke aws management get-credentials
Abra um editor de texto e copie a seguinte definição
AWSCluster
em um arquivo chamadocustom-cluster.yaml
.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: CLUSTER_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 rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE # Optional iops: ROOT_VOLUME_IOPS # Optional kmsKeyARN: ROOT_VOLUME_KEY # Optional etcd: mainVolume: sizeGiB: ETCD_VOLUME_SIZE volumeType: ETCD_VOLUME_TYPE # Optional iops: ETCD_VOLUME_IOPS # Optional kmsKeyARN: ETCD_VOLUME_KEY # Optional databaseEncryption: kmsKeyARN: ARN_OF_KMS_KEY hub: # Optional membershipName: ANTHOS_CONNECT_NAME cloudOperations: # Optional projectID: YOUR_PROJECT location: GCP_REGION enableLogging: ENABLE_LOGGING enableMonitoring: ENABLE_MONITORING workloadIdentity: # Optional oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
Substitua o seguinte:
- CLUSTER_NAME : o nome do seu cluster.
AWS_REGION : a região da AWS onde seu cluster é executado.
VPC_ID : o ID da VPC onde seu cluster é executado.
POD_ADDRESS_CIDR_BLOCKS : o intervalo de endereços IPv4 usado pelos pods do cluster. Atualmente, apenas um único intervalo é suportado. O intervalo não deve se sobrepor a nenhuma sub-rede acessível a partir da sua rede. É seguro usar o mesmo intervalo em vários objetos AWSCluster diferentes. Por exemplo,
10.2.0.0/16
.SERVICE_ADDRESS_CIDR_BLOCKS : o intervalo de endereços IPv4 usado pelos serviços do cluster. Atualmente, apenas um único intervalo é suportado. O intervalo não deve se sobrepor a nenhuma sub-rede acessível a partir da sua rede. É seguro usar o mesmo intervalo em vários objetos AWSCluster diferentes. Por exemplo,
10.1.0.0/16
.SERVICE_LOAD_BALANCER_SUBNETS : os IDs de sub-rede onde o GKE na AWS pode criar balanceadores de carga públicos ou privados.
CLUSTER_VERSION : uma versão do Kubernetes compatível com o GKE na AWS. A versão mais recente é 1.25.5-gke.2100.
AWS_INSTANCE_TYPE : um tipo de instância EC2 compatível .
SSH_KEY_NAME : um par de chaves AWS EC2 .
CONTROL_PLANE_SUBNET_IDS : os IDs de sub-rede nas AZs onde suas instâncias do plano de controle são executadas.
CONTROL_PLANE_SECURITY_GROUPS : um securityGroupID criado durante a instalação do serviço de gerenciamento. Você pode personalizá-lo adicionando quaisquer securityGroupIDs necessários para se conectar ao plano de controle.
CONTROL_PLANE_IAM_PROFILE : nome do perfil de instância do AWS EC2 atribuído às réplicas do plano de controle.
ROOT_VOLUME_SIZE : o tamanho, em gibibytes (GiB), dos volumes raiz do seu plano de controle.
ROOT_VOLUME_TYPE com o tipo de volume do EBS . Por exemplo,
gp3
.ROOT_VOLUME_IOPS com a quantidade de operações de E/S provisionadas por segundo (IOPS) para o volume. Válido somente quando
volumeType
forGP3
. Para obter mais informações, consulte Volumes SSD de uso geral (gp3) .ROOT_VOLUME_KEY com o nome do recurso da Amazon da chave do AWS KMS que criptografa os volumes raiz da instância do plano de controle.
ETCD_VOLUME_SIZE : o tamanho dos volumes usados pelo etcd.
ETCD_VOLUME_TYPE com o tipo de volume do EBS . Por exemplo,
gp3
.ETCD_VOLUME_IOPS com a quantidade de operações de E/S provisionadas por segundo (IOPS) para o volume. Válido somente quando
volumeType
forgp3
. Para obter mais informações, consulte Volumes SSD de uso geral (gp3) .ETCD_VOLUME_KEY com o nome do recurso da Amazon da chave do AWS KMS que criptografa os volumes de dados etcd do seu plano de controle.
ARN_OF_KMS_KEY : a chave AWS KMS usada para criptografar segredos do cluster.
ANTHOS_CONNECT_NAME : o nome da associação Connect usado para registrar seu cluster. O nome da associação deve ser exclusivo. Por exemplo,
projects/ YOUR_PROJECT /locations/global/memberships/ CLUSTER_NAME
, ondeYOUR_PROJECT
é seu Google Cloud project eCLUSTER_NAME
é um nome exclusivo no seu projeto. Este campo é opcional.YOUR_PROJECT : seu ID de projeto.
GCP_REGION : a Google Cloud região onde você deseja armazenar logs. Escolha uma região próxima à região da AWS. Para obter mais informações, consulte Locais Globais - Regiões e Zonas — por exemplo,
us-central1
.ENABLE_LOGGING :
true
oufalse
, se o Cloud Logging estiver habilitado nos nós do plano de controle.ENABLE_MONITORING :
true
oufalse
, se o Cloud Monitoring estiver habilitado nos nós do plano de controle.WORKLOAD_IDENTITY_BUCKET : o nome do bucket do Cloud Storage que contém as informações de descoberta de identidade da sua carga de trabalho . Este campo é opcional.
Crie um ou mais AWSNodePools para o seu cluster. Abra um editor de texto e copie a seguinte definição do AWSCluster para um arquivo chamado
custom-nodepools.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: NODE_POOL_NAME spec: clusterName: AWSCLUSTER_NAME version: CLUSTER_VERSION # latest version is 1.25.5-gke.2100 region: AWS_REGION subnetID: AWS_SUBNET_ID minNodeCount: MINIMUM_NODE_COUNT maxNodeCount: MAXIMUM_NODE_COUNT maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT instanceType: AWS_NODE_TYPE keyName: KMS_KEY_PAIR_NAME iamInstanceProfile: NODE_IAM_PROFILE proxySecretName: PROXY_SECRET_NAME rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: VOLUME_TYPE # Optional iops: IOPS # Optional kmsKeyARN: NODE_VOLUME_KEY # Optional
Substitua o seguinte:
- NODE_POOL_NAME : um nome exclusivo para seu AWSNodePool.
- AWSCLUSTER_NAME : o nome do seu AWSCluster. Por exemplo,
staging-cluster
. - CLUSTER_VERSION : uma versão do GKE com suporte no AWS Kubernetes.
- AWS_REGION : a mesma região da AWS que seu AWSCluster.
- AWS_SUBNET_ID : uma sub-rede da AWS na mesma região que seu AWSCluster.
- MINIMUM_NODE_COUNT : o número mínimo de nós no pool de nós. Consulte Dimensionamento de clusters de usuários para obter mais informações.
- MAXIMUM_NODE_COUNT : o número máximo de nós no pool de nós.
- MAXIMUM_PODS_PER_NODE_COUNT : o número máximo de pods que o GKE na AWS pode alocar para um nó.
- AWS_NODE_TYPE : um tipo de instância do AWS EC2 .
- KMS_KEY_PAIR_NAME : o par de chaves do AWS KMS atribuído a cada trabalhador do pool de nós.
- NODE_IAM_PROFILE : o nome do perfil da instância do AWS EC2 atribuído aos nós no pool.
- ROOT_VOLUME_SIZE : o tamanho, em gibibytes (GiB), dos volumes raiz do seu plano de controle.
- VOLUME_TYPE : o tipo de volume do AWS EBS do nó. Por exemplo,
gp3
. - IOPS : a quantidade de operações de E/S provisionadas por segundo (IOPS) para volumes. Válido somente quando
volumeType
forgp3
. - NODE_VOLUME_KEY : o ARN da chave KMS da AWS usada para criptografar o volume. Para obter mais informações, consulte Usando uma CMK gerenciada pelo cliente para criptografar volumes .
Aplique os manifestos ao seu serviço de gerenciamento.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-cluster.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-nodepools.yaml
Crie um kubeconfig
Enquanto seu cluster de usuários é inicializado, você pode criar um contexto kubeconfig
para o novo cluster. Use o contexto para autenticar em um cluster de usuários ou de gerenciamento.
Use
anthos-gke aws clusters get-credentials
para gerar umkubeconfig
para seu cluster de usuário em~/.kube/config
.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Substitua CLUSTER_NAME pelo nome do seu cluster. Por exemplo,
cluster-0
.Use
kubectl
para autenticar seu novo cluster de usuários.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Se o seu cluster estiver pronto, a saída incluirá as URLs dos componentes do Kubernetes dentro do seu cluster.
Visualizando o status do seu cluster
O serviço de gerenciamento provisiona recursos da AWS quando você aplica um AWSCluster
ou AWSNodePool
.
No seu diretório
anthos-aws
, useanthos-gke
para alternar o contexto para seu serviço de gerenciamento.cd anthos-aws anthos-gke aws management get-credentials
Para listar seus clusters, use
kubectl get AWSClusters
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClusters
A saída inclui o nome, estado, idade, versão e ponto de extremidade de cada cluster.
Por exemplo, a saída a seguir inclui apenas um
AWSCluster
chamadocluster-0
:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
Visualize os eventos do seu cluster
Para ver eventos recentes do Kubernetes do seu cluster de usuários, use kubectl get events
.
No seu diretório
anthos-aws
, useanthos-gke
para alternar o contexto para seu serviço de gerenciamento.cd anthos-aws anthos-gke aws management get-credentials
Execute
kubectl get events
.env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
A saída inclui informações, avisos e erros relacionados ao seu serviço de gerenciamento.
Excluindo um cluster de usuários
Para excluir um cluster de usuários, execute as seguintes etapas:
No seu diretório
anthos-aws
, useanthos-gke
para alternar o contexto para seu serviço de gerenciamento.cd anthos-aws anthos-gke aws management get-credentials
Use
kubectl delete
para excluir o manifesto que contém seus clusters de usuários.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILE
Substitua CLUSTER_FILE pelo nome do manifesto que contém seus objetos AWScluster e AWSNodePool. Por exemplo,
cluster-0.yaml
.
Excluindo todos os clusters de usuários
Para excluir todos os seus clusters de usuários, execute as seguintes etapas:
No seu diretório
anthos-aws
, useanthos-gke
para alternar o contexto para seu serviço de gerenciamento.cd anthos-aws anthos-gke aws management get-credentials
Use
kubectl delete
para excluir seus AWSNodePools e AWSClusters do seu serviço de gerenciamento.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
Para obter mais informações, consulte Desinstalando o GKE na AWS .
O que vem a seguir
Configure seu provedor de identidade com o GKE Identity Service .
Inicie sua primeira carga de trabalho no GKE na AWS.
Crie uma implantação externa usando um balanceador de carga ou Ingress .
Leia as especificações para as definições de recursos personalizados do AWSCluster e do AWSNodePool .