View a markdown version of this page

Complementos - Guía del usuario de Eksctl

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.

Complementos

En este tema se describe cómo administrar Amazon EKS Add-Ons para los clústeres de Amazon EKS mediante eksctl. EKS Add-Ons es una función que permite habilitar y administrar el software operativo de Kubernetes a través de la API de EKS, lo que simplifica el proceso de instalación, configuración y actualización de los complementos del clúster.

aviso

A partir de eksctl v0.184.0 (y v0.201.0 para metrics-server), eksctl instala los complementos predeterminados (vpc-cni, coredns, kube-proxy, metrics-server) como complementos de EKS en lugar de complementos autogestionados. Esto significa que eksctl utils update-* debe usarlos en lugar de comandos. eksctl update addon

Puedes crear clústeres sin ningún complemento de red predeterminado cuando quieras usar complementos CNI alternativos como Cilium y Calico.

EKS Add-ons ahora admite la recepción de permisos de IAM a través de las asociaciones de identidades de EKS Pod, lo que les permite conectarse con los servicios de AWS fuera del clúster

Creación de complementos

Eksctl proporciona más flexibilidad para administrar los complementos de clústeres:

En su archivo de configuración, puede especificar los complementos que desea y (si es necesario) el rol o las políticas que desea adjuntar a ellos:

apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: example-cluster region: us-west-2 iam: withOIDC: true addons: - name: vpc-cni # all below properties are optional version: 1.7.5 tags: team: eks # you can specify at most one of: attachPolicyARNs: - arn:aws:iam::account:policy/AmazonEKS_CNI_Policy # or serviceAccountRoleARN: arn:aws:iam::account:role/AmazonEKSCNIAccess # or attachPolicy: Statement: - Effect: Allow Action: - ec2:AssignPrivateIpAddresses - ec2:AttachNetworkInterface - ec2:CreateNetworkInterface - ec2:DeleteNetworkInterface - ec2:DescribeInstances - ec2:DescribeTags - ec2:DescribeNetworkInterfaces - ec2:DescribeInstanceTypes - ec2:DetachNetworkInterface - ec2:ModifyNetworkInterfaceAttribute - ec2:UnassignPrivateIpAddresses Resource: '*'

Puedes especificar como máximo uno deattachPolicy, attachPolicyARNs yserviceAccountRoleARN.

Si no se especifica ninguna de estas opciones, el complemento se creará con un rol al que se adjuntarán todas las políticas recomendadas.

nota

Para poder adjuntar políticas a los complementos, tu clúster debe tener OIDC habilitadas. Si no está habilitada, ignoramos las políticas adjuntas.

A continuación, puedes hacer que se creen estos complementos durante el proceso de creación del clúster:

eksctl create cluster -f config.yaml

O crea los complementos de forma explícita después de la creación del clúster mediante el archivo de configuración o los indicadores de la CLI:

eksctl create addon -f config.yaml
eksctl create addon --name vpc-cni --version 1.7.5 --service-account-role-arn <role-arn>
eksctl create addon --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'
sugerencia

Usa la --namespace-config marca para implementar complementos en un espacio de nombres personalizado en lugar del espacio de nombres predeterminado.

Durante la creación del complemento, si ya existe una versión autogestionada del complemento en el clúster, puede elegir cómo se resolverán configMap los posibles conflictos configurando la resolveConflicts opción en el archivo de configuración, p. ej.

addons: - name: vpc-cni attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy resolveConflicts: overwrite

Para la creación de complementos, el resolveConflicts campo admite tres valores distintos:

Listar los complementos habilitados

Para ver qué complementos están habilitados en tu clúster, ejecuta:

eksctl get addons --cluster <cluster-name>

o

eksctl get addons -f config.yaml

Configurar la versión del complemento

La configuración de la versión del complemento es opcional. Si el version campo se deja vacío, eksctl se resolverá la versión predeterminada del complemento. Puede encontrar más información sobre qué versión es la predeterminada para complementos específicos en la documentación de AWS sobre EKS. Tenga en cuenta que la versión predeterminada puede no ser necesariamente la última versión disponible.

La versión del complemento se puede configurar en. latest Como alternativa, la versión se puede configurar con la etiqueta de compilación de EKS especificada, como v1.7.5-eksbuild.1 ov1.7.5-eksbuild.2. También se puede configurar en la versión de lanzamiento del complemento, como v1.7.5 o1.7.5, y la etiqueta del eksbuild sufijo la descubriremos y configuraremos automáticamente.

Consulta la siguiente sección sobre cómo descubrir los complementos disponibles y sus versiones.

Descubriendo los complementos

Para descubrir qué complementos están disponibles para su instalación en su clúster, ejecute:

eksctl utils describe-addon-versions --cluster <cluster-name>

Esto descubrirá la versión de Kubernetes de tu clúster y la filtrará en función de ella. Como alternativa, si quieres ver qué complementos están disponibles para una versión de Kubernetes en particular, puedes ejecutar:

eksctl utils describe-addon-versions --kubernetes-version <version>

También puedes descubrir complementos filtrando por sus,. type owner and/or publisher Por ejemplo, para ver los complementos de un propietario y un tipo en particular, puedes ejecutar:

eksctl utils describe-addon-versions --kubernetes-version 1.22 --types "infra-management, policy-management" --owners "aws-marketplace"

Los types publishers marcadores owners y son opcionales y se pueden especificar juntos o individualmente para filtrar los resultados.

Descubrir el esquema de configuración de los complementos

Tras descubrir el complemento y la versión, puedes ver las opciones de personalización buscando su esquema de configuración JSON.

eksctl utils describe-addon-configuration --name vpc-cni --version v1.12.0-eksbuild.1

Esto devuelve un esquema JSON de las distintas opciones disponibles para este complemento.

Trabajando con valores de configuración

ConfigurationValuesse puede incluir en el archivo de configuración durante la creación o actualización de los complementos. Solo se admiten los formatos JSON y YAML.

Por ejemplo. ,

addons: - name: coredns configurationValues: |- replicaCount: 2
addons: - name: coredns version: latest configurationValues: "{\"replicaCount\":3}" resolveConflicts: overwrite
nota

Tenga en cuenta que cuando se modifican los valores de configuración de los complementos, surgirán conflictos de configuración.

Thus, we need to specify how to deal with those by setting the `resolveConflicts` field accordingly. As in this scenario we want to modify these values, we'd set `resolveConflicts: overwrite`.

Además, el comando get ahora también ConfigurationValues recuperará el complemento. p. ej.

eksctl get addon --cluster my-cluster --output yaml
- ConfigurationValues: '{"replicaCount":3}' IAMRole: "" Issues: null Name: coredns NewerVersion: "" Status: ACTIVE Version: v1.8.7-eksbuild.3

Uso de un espacio de nombres personalizado

Se puede proporcionar un espacio de nombres personalizado en el archivo de configuración durante la creación de los complementos. Un espacio de nombres no se puede actualizar una vez creado un complemento.

Uso del archivo de configuración

addons: - name: aws-ebs-csi-driver version: latest namespaceConfig: namespace: custom-namespace

Uso del indicador CLI

Como alternativa, puede especificar un espacio de nombres personalizado mediante la --namespace-config marca:

eksctl create addon --cluster my-cluster --name aws-ebs-csi-driver --namespace-config 'namespace=custom-namespace'

El comando get también recuperará el valor del espacio de nombres del complemento

- ConfigurationValues: "" IAMRole: "" Issues: null Name: aws-ebs-csi-driver NamespaceConfig: namespace: custom-namespace NewerVersion: "" PodIdentityAssociations: null Status: ACTIVE Version: v1.47.0-eksbuild.1

Actualización de complementos

Para actualizar tus complementos a versiones más recientes y cambiar las políticas adjuntas, ejecuta lo siguiente:

eksctl update addon -f config.yaml
eksctl update addon --name vpc-cni --version 1.8.0 --service-account-role-arn <new-role>
nota

La configuración del espacio de nombres no se puede actualizar una vez que se crea un complemento. La --namespace-config marca solo está disponible durante la creación del complemento.

Al igual que ocurre con la creación de complementos, al actualizar un complemento, tienes el control total sobre los cambios de configuración que puedas haber aplicado anteriormente a ese complemento. configMap En concreto, puedes conservarlos o sobrescribirlos. Esta funcionalidad opcional está disponible en el mismo campo del archivo de configuraciónresolveConflicts. p. ej.,

addons: - name: vpc-cni attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy resolveConflicts: preserve

Para la actualización del complemento, el resolveConflicts campo acepta tres valores distintos:

  • none- EKS no cambia el valor. La actualización puede fallar.

  • overwrite- EKS sobrescribe cualquier cambio de configuración para devolverlo a los valores predeterminados de EKS.

  • preserve- EKS conserva el valor. Si eliges esta opción, te recomendamos que pruebes cualquier cambio de campo y valor en un clúster que no sea de producción antes de actualizar el complemento en tu clúster de producción.

Eliminar complementos

Para eliminar un complemento, ejecuta:

eksctl delete addon --cluster <cluster-name> --name <addon-name>

De este modo, se eliminarán el complemento y cualquier función de IAM asociada a él.

Al eliminar el clúster, también se eliminan todas las funciones de IAM asociadas a los complementos.

Flexibilidad de creación de clústeres para los complementos de red predeterminados

Cuando se crea un clúster, EKS instala automáticamente la VPC CNI, CoreDNS y kube-proxy como complementos autogestionados. Para deshabilitar este comportamiento y poder usar otros complementos de CNI, como Cilium y Calico, eksctl ahora admite la creación de un clúster sin ningún complemento de red predeterminado. Para crear un clúster de este tipo, definaaddonsConfig.disableDefaultAddons, como en:

addonsConfig: disableDefaultAddons: true
eksctl create cluster -f cluster.yaml

Para crear un clúster con solo CoreDNS y kube-proxy, y no con el CNI de VPC, especifica los complementos de forma explícita, como en: addons addonsConfig.disableDefaultAddons

addonsConfig: disableDefaultAddons: true addons: - name: kube-proxy - name: coredns
eksctl create cluster -f cluster.yaml

Como parte de este cambio, eksctl ahora instala los complementos predeterminados como complementos de EKS en lugar de como complementos autogestionados durante la creación del clúster si no se establece explícitamente en true. addonsConfig.disableDefaultAddons Por lo tanto, eksctl utils update-* los comandos ya no se pueden usar para actualizar los complementos de los clústeres creados con la versión 0.184.0 y versiones posteriores de eksctl:

  • eksctl utils update-aws-node

  • eksctl utils update-coredns

  • eksctl utils update-kube-proxy

En su lugar, debería usarse ahora. eksctl update addon

Para obtener más información, consulte Amazon EKS presenta la flexibilidad de creación de clústeres para los complementos de red.