

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# O que é Eksctl?
<a name="what-is-eksctl"></a>

eksctl é uma ferramenta utilitária de linha de comando que automatiza e simplifica o processo de criação, gerenciamento e operação de clusters do Amazon Elastic Kubernetes Service (Amazon EKS). Escrito em Go, o eksctl fornece uma sintaxe declarativa por meio de configurações YAML e comandos CLI para lidar com operações complexas de cluster EKS que, de outra forma, exigiriam várias etapas manuais em diferentes serviços da AWS.

O eksctl é particularmente valioso para DevOps engenheiros, equipes de plataforma e administradores do Kubernetes que precisam implantar e gerenciar consistentemente clusters EKS em grande escala. É especialmente útil para organizações que estão fazendo a transição do Kubernetes autogerenciado para o EKS ou para aquelas que implementam práticas de infraestrutura como código (IaC), pois pode ser integrado aos pipelines e fluxos de trabalho de automação existentes. CI/CD A ferramenta abstrai muitas das interações complexas entre os serviços da AWS necessárias para a configuração do cluster EKS, como configuração de VPC, criação de funções do IAM e gerenciamento de grupos de segurança.

Os principais recursos do eksctl incluem a capacidade de criar clusters EKS totalmente funcionais com um único comando, suporte para configurações de rede personalizadas, gerenciamento automatizado de grupos de nós e GitOps integração de fluxo de trabalho. A ferramenta gerencia atualizações de clusters, escala grupos de nós e gerencia o gerenciamento de complementos por meio de uma abordagem declarativa. O eksctl também fornece recursos avançados, como configuração de perfil do Fargate, personalização gerenciada de grupos de nós e integração de instâncias spot, mantendo a compatibilidade com outras ferramentas e serviços da AWS por meio da integração nativa do SDK da AWS.

## Recursos
<a name="_features"></a>

Os recursos atualmente implementados são:
+ Crie, obtenha, liste e exclua clusters
+ Crie, drene e exclua grupos de nós
+ Dimensionar um grupo de nós
+ Atualizar um cluster
+ Use personalizado AMIs
+ Configurar redes VPC
+ Configurar o acesso aos endpoints da API
+ Support para grupos de nós de GPU
+ Instâncias spot e instâncias mistas
+ Políticas complementares e de gerenciamento do IAM
+ Listar pilhas do cluster Cloudformation
+ Instale coredns
+ Grave o arquivo kubeconfig para um cluster

# Perguntas frequentes sobre o Eksctl
<a name="faq"></a>

## Geral
<a name="_general"></a>

 **Posso usar `eksctl` para gerenciar clusters que não foram criados pelo`eksctl`?** 

Sim\$1 A partir da versão, `0.40.0` você `eksctl` pode executar em qualquer cluster, tenha ele sido criado `eksctl` ou não. Para obter mais informações, consulte [Clusters não criados pelo eksctl](unowned-clusters.md).

## Grupos de nós
<a name="nodegroup-faq"></a>

 **Como posso alterar o tipo de instância do meu nodegroup?** 

Do ponto de vista de`eksctl`, os grupos de nós são imutáveis. Isso significa que, uma vez criado, a única coisa que `eksctl` você pode fazer é aumentar ou diminuir o grupo de nós.

Para alterar o tipo de instância, crie um novo grupo de nós com o tipo de instância desejado e, em seguida, drene-o para que as cargas de trabalho sejam transferidas para o novo. Depois que essa etapa for concluída, você poderá excluir o antigo grupo de nós.

 **Como posso ver os dados de usuário gerados para um grupo de nós?** 

Primeiro, você precisará do nome da pilha do Cloudformation que gerencia o grupo de nós:

```
eksctl utils describe-stacks --region=us-west-2 --cluster NAME
```

Você verá um nome semelhante `eksctl-CLUSTER_NAME-nodegroup-NODEGROUP_NAME` a.

Você pode executar o seguinte para obter os dados do usuário. Observe a linha final que decodifica a partir da base64 e descompacta os dados compactados em gzip.

```
NG_STACK=eksctl-scrumptious-monster-1595247364-nodegroup-ng-29b8862f # your stack here
LAUNCH_TEMPLATE_ID=$(aws cloudformation describe-stack-resources --stack-name $NG_STACK \
| jq -r '.StackResources | map(select(.LogicalResourceId == "NodeGroupLaunchTemplate") \
| .PhysicalResourceId)[0]')
aws ec2 describe-launch-template-versions --launch-template-id $LAUNCH_TEMPLATE_ID \
| jq -r '.LaunchTemplateVersions[0].LaunchTemplateData.UserData' \
| base64 -d | gunzip
```

## Ingress
<a name="_ingress"></a>

 **Como faço para configurar o ingresso com`eksctl`?** 

Recomendamos usar o [AWS Load Balancer Controller](https://github.com/kubernetes-sigs/aws-load-balancer-controller). [A documentação sobre como implantar o controlador em seu cluster, bem como sobre como migrar do antigo ALB Ingress Controller, pode ser encontrada aqui.](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)

Para o Nginx Ingress Controller, a configuração seria a mesma de [qualquer outro](https://kubernetes.github.io/ingress-nginx/deploy/#aws) cluster Kubernetes.

## Kubectl
<a name="_kubectl"></a>

 **Estou usando um proxy HTTPS e a validação do certificado de cluster falha. Como posso usar o sistema CAs?** 

Defina a variável de ambiente `KUBECONFIG_USE_SYSTEM_CA` para `kubeconfig` respeitar as autoridades de certificação do sistema.

# Corrida a seco
<a name="dry-run"></a>

O recurso dry-run permite que você inspecione e altere as instâncias correspondentes ao seletor de instâncias antes de continuar com a criação de um grupo de nós.

Quando `eksctl create cluster` é chamado com as opções do seletor de instância e`--dry-run`, eksctl produzirá um ClusterConfig arquivo contendo um grupo de nós representando as opções da CLI e os tipos de instância definidos para as instâncias que correspondem aos critérios de recurso do seletor de instâncias.

```
eksctl create cluster --name development --dry-run


apiVersion: eksctl.io/v1alpha5
cloudWatch:
  clusterLogging: {}
iam:
  vpcResourceControllerPolicy: true
  withOIDC: false
kind: ClusterConfig
managedNodeGroups:
- amiFamily: AmazonLinux2
  desiredCapacity: 2
  disableIMDSv1: true
  disablePodIMDS: false
  iam:
    withAddonPolicies:
      albIngress: false
      appMesh: false
      appMeshPreview: false
      autoScaler: false
      certManager: false
      cloudWatch: false
      ebs: false
      efs: false
      externalDNS: false
      fsx: false
      imageBuilder: false
      xRay: false
  instanceSelector: {}
  instanceType: m5.large
  labels:
    alpha.eksctl.io/cluster-name: development
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
  maxSize: 2
  minSize: 2
  name: ng-4aba8a47
  privateNetworking: false
  securityGroups:
    withLocal: null
    withShared: null
  ssh:
    allow: false
    enableSsm: false
    publicKeyPath: ""
  tags:
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
    alpha.eksctl.io/nodegroup-type: managed
  volumeIOPS: 3000
  volumeSize: 80
  volumeThroughput: 125
  volumeType: gp3
metadata:
  name: development
  region: us-west-2
  version: "1.24"
privateCluster:
  enabled: false
vpc:
  autoAllocateIPv6: false
  cidr: 192.168.0.0/16
  clusterEndpoints:
    privateAccess: false
    publicAccess: true
  manageSharedNodeSecurityGroupRules: true
  nat:
    gateway: Single
```

O gerado ClusterConfig pode então ser passado para`eksctl create cluster`:

```
eksctl create cluster -f generated-cluster.yaml
```

Quando um ClusterConfig arquivo é passado com`--dry-run`, eksctl exibirá um ClusterConfig arquivo contendo os valores definidos no arquivo.

## Opções únicas em eksctl
<a name="_one_off_options_in_eksctl"></a>

Há certas opções únicas que não podem ser representadas no `ClusterConfig` arquivo, por exemplo,`--install-vpc-controllers`.

Espera-se que:

```
eksctl create cluster --<options...> --dry-run > config.yaml
```

seguido por:

```
eksctl create cluster -f config.yaml
```

seria equivalente a executar o primeiro comando sem`--dry-run`.

Portanto, eksctl não permite a passagem de opções que não podem ser representadas no arquivo de configuração quando são passadas. `--dry-run`

**Importante**  
Se você precisar passar um perfil da AWS, defina a variável de `AWS_PROFILE` ambiente, em vez de passar a opção `--profile` CLI.