

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# ¿Qué es Eksctl?
<a name="what-is-eksctl"></a>

eksctl es una herramienta de línea de comandos que automatiza y simplifica el proceso de creación, administración y operación de clústeres de Amazon Elastic Kubernetes Service (Amazon EKS). Escrito en Go, eksctl proporciona una sintaxis declarativa a través de configuraciones de YAML y comandos CLI para gestionar operaciones complejas de clústeres de EKS que, de otro modo, requerirían varios pasos manuales en diferentes servicios de AWS.

eksctl resulta especialmente útil para los DevOps ingenieros, los equipos de plataformas y los administradores de Kubernetes, que necesitan implementar y gestionar los clústeres de EKS de forma coherente y a escala. Resulta especialmente útil para las organizaciones que están pasando de un Kubernetes autogestionado a EKS, o para las que están implementando prácticas de infraestructura como código (IaC), ya que se puede integrar en los flujos de trabajo de automatización y los procesos de automatización existentes. CI/CD La herramienta elimina muchas de las interacciones complejas entre los servicios de AWS necesarios para la configuración del clúster de EKS, como la configuración de VPC, la creación de roles de IAM y la administración de grupos de seguridad.

Las características clave de eksctl incluyen la capacidad de crear clústeres EKS completamente funcionales con un solo comando, la compatibilidad con configuraciones de red personalizadas, la administración automatizada de grupos de nodos y la integración del flujo de trabajo. GitOps La herramienta gestiona las actualizaciones de clústeres, escala los grupos de nodos y gestiona la administración de complementos mediante un enfoque declarativo. eksctl también proporciona capacidades avanzadas como la configuración de perfiles de Fargate, la personalización de grupos de nodos gestionados y la integración de instancias puntuales, al tiempo que mantiene la compatibilidad con otras herramientas y servicios de AWS mediante la integración nativa del SDK de AWS.

## Características
<a name="_features"></a>

Las funciones que se implementan actualmente son:
+ Crear, obtener, enumerar y eliminar clústeres
+ Crea, vacía y elimina grupos de nodos
+ Escala un grupo de nodos
+ Actualice un clúster de 
+ Utilice la opción personalizada AMIs
+ Configurar redes de VPC
+ Configure el acceso a los puntos finales de la API
+ Support para grupos de nodos de GPU
+ Instancias puntuales e instancias mixtas
+ Políticas de administración y complementos de IAM
+ Enumere las pilas de Cloudformation de clústeres
+ Instale coredns
+ Escribe el archivo kubeconfig para un clúster

# Preguntas frecuentes de Eksctl
<a name="faq"></a>

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

 **¿Puedo utilizarlos `eksctl` para gestionar clústeres que no fueron creados por él? `eksctl`** 

Sí A partir de la versión, se `0.40.0` `eksctl` puede ejecutar en cualquier clúster, ya sea que lo haya creado `eksctl` o no. Para obtener más información, consulte [Clústeres no creados por eksctl](unowned-clusters.md).

## Grupos de nodos
<a name="nodegroup-faq"></a>

 **¿Cómo puedo cambiar el tipo de instancia de mi grupo de nodos?** 

Desde el punto de vista de, los grupos de nodos `eksctl` son inmutables. Esto significa que, una vez creado, lo único que se `eksctl` puede hacer es escalar el grupo de nodos hacia arriba o hacia abajo.

Para cambiar el tipo de instancia, crea un nuevo grupo de nodos con el tipo de instancia deseado y, a continuación, vacíalo para que las cargas de trabajo pasen al nuevo. Una vez completado ese paso, puedes eliminar el grupo de nodos anterior.

 **¿Cómo puedo ver los datos de usuario generados para un grupo de nodos?** 

Primero necesitarás el nombre de la pila de Cloudformation que administra el grupo de nodos:

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

Verás un nombre similar a. `eksctl-CLUSTER_NAME-nodegroup-NODEGROUP_NAME`

Puede ejecutar lo siguiente para obtener los datos de usuario. Observe la última línea que decodifica desde base64 y descomprime los datos comprimidos con 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
```

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

 **¿Cómo configuro el ingreso con? `eksctl`** 

Recomendamos utilizar el controlador [Load Balancer de AWS](https://github.com/kubernetes-sigs/aws-load-balancer-controller). [Puede encontrar la documentación sobre cómo implementar el controlador en su clúster, así como sobre cómo migrar desde el antiguo controlador de ingreso ALB, aquí.](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)

Para el controlador de entrada de Nginx, la configuración sería la misma que la de [cualquier otro](https://kubernetes.github.io/ingress-nginx/deploy/#aws) clúster de Kubernetes.

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

 **Utilizo un proxy HTTPS y no se puede validar el certificado del clúster. ¿Cómo puedo usar el sistema? CAs** 

Configure la variable de entorno `KUBECONFIG_USE_SYSTEM_CA` para `kubeconfig` respetar las autoridades de certificación del sistema.

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

La función de ejecución en seco te permite inspeccionar y cambiar las instancias que coinciden con el selector de instancias antes de proceder a crear un grupo de nodos.

Cuando `eksctl create cluster` se llama con las opciones del selector de instancias y`--dry-run`, eksctl generará un ClusterConfig archivo que contiene un grupo de nodos que representa las opciones de CLI y los tipos de instancia configurados para las instancias que coinciden con los criterios de recursos del selector de instancias.

```
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
```

Luego, lo generado se ClusterConfig puede pasar a: `eksctl create cluster`

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

Cuando se pasa un ClusterConfig archivo`--dry-run`, eksctl generará un ClusterConfig archivo que contiene los valores establecidos en el archivo.

## Opciones únicas en eksctl
<a name="_one_off_options_in_eksctl"></a>

Hay ciertas opciones únicas que no se pueden representar en el `ClusterConfig` archivo, por ejemplo, `--install-vpc-controllers`

Se espera que:

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

seguido de:

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

equivaldría a ejecutar el primer comando sin él`--dry-run`.

Por lo tanto, eksctl no permite pasar opciones que no se puedan representar en el archivo de configuración cuando se `--dry-run` pasa.

**importante**  
Si necesita pasar un perfil de AWS, defina la variable de `AWS_PROFILE` entorno en lugar de pasar la opción `--profile` CLI.