

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á.

# Complementos
<a name="addons"></a>

Este tópico descreve como gerenciar complementos do Amazon EKS para seus clusters do Amazon EKS usando eksctl. O EKS Add-Ons é um recurso que permite habilitar e gerenciar o software operacional Kubernetes por meio da API EKS, simplificando o processo de instalação, configuração e atualização de complementos de cluster.

**Atenção**  
O eksctl agora instala complementos padrão (vpc-cni, coredns, kube-proxy) como complementos do EKS em vez de complementos autogerenciados. Isso significa que você deve usar comandos `eksctl update addon` em vez de `eksctl utils update-*` comandos para clusters criados com eksctl v0.184.0 e superior.

Você pode criar clusters sem nenhum complemento de rede padrão quando quiser usar plug-ins CNI alternativos, como Cilium e Calico.

Os complementos do EKS agora oferecem suporte ao recebimento de permissões do IAM por meio do EKS Pod Identity Associations, permitindo que eles se conectem aos serviços da AWS fora do cluster

## Criação de complementos
<a name="addons-create"></a>

O Eksctl fornece mais flexibilidade para gerenciar complementos de cluster:

Em seu arquivo de configuração, você pode especificar os complementos que deseja e (se necessário) a função ou as políticas a serem anexadas a eles:

```
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: '*'
```

Você pode especificar no máximo um dos`attachPolicy`, `attachPolicyARNs` `serviceAccountRoleARN` e.

Se nenhuma delas for especificada, o complemento será criado com uma função que tenha todas as políticas recomendadas anexadas.

**nota**  
Para anexar políticas aos complementos, seu cluster deve estar `OIDC` habilitado. Se não estiver ativado, ignoramos todas as políticas anexadas.

Em seguida, você pode criar esses complementos durante o processo de criação do cluster:

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

Ou crie os complementos explicitamente após a criação do cluster usando o arquivo de configuração ou os sinalizadores da 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'
```

**dica**  
Use a `--namespace-config` sinalização para implantar complementos em um namespace personalizado em vez do namespace padrão.

Durante a criação do complemento, se uma versão autogerenciada do complemento já existir no cluster, você pode escolher como os possíveis `configMap` conflitos devem ser resolvidos definindo a `resolveConflicts` opção por meio do arquivo de configuração, por exemplo

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

Para criação de complementos, o `resolveConflicts` campo suporta três valores distintos:
+  `none`- O EKS não altera o valor. A criação pode falhar.
+  `overwrite`- O EKS substitui todas as alterações de configuração para os valores padrão do EKS.
+  `preserve`- O EKS não altera o valor. A criação pode falhar. (Da mesma forma`none`, mas diferente da [atualização `preserve` de complementos](#update-addons)).

## Listando complementos habilitados
<a name="_listing_enabled_addons"></a>

Você pode ver quais complementos estão habilitados no seu cluster executando:

```
eksctl get addons --cluster <cluster-name>
```

or

```
eksctl get addons -f config.yaml
```

## Configurando a versão do complemento
<a name="_setting_the_addons_version"></a>

Definir a versão do complemento é opcional. Se o `version` campo for deixado vazio, a versão padrão do complemento `eksctl` será resolvida. Mais informações sobre qual versão é a versão padrão para complementos específicos podem ser encontradas na documentação da AWS sobre o EKS. Observe que a versão padrão pode não ser necessariamente a versão mais recente disponível.

A versão do complemento pode ser definida como. `latest` Como alternativa, a versão pode ser definida com a tag de construção EKS especificada, como `v1.7.5-eksbuild.1` ou`v1.7.5-eksbuild.2`. Também pode ser configurado para a versão de lançamento do complemento, como `v1.7.5` ou`1.7.5`, e a tag de `eksbuild` sufixo será descoberta e definida para você.

Veja a seção abaixo sobre como descobrir os complementos disponíveis e suas versões.

## Descobrindo complementos
<a name="_discovering_addons"></a>

Você pode descobrir quais complementos estão disponíveis para instalação em seu cluster executando:

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

Isso descobrirá a versão do kubernetes do seu cluster e a filtrará. Como alternativa, se você quiser ver quais complementos estão disponíveis para uma versão específica do kubernetes, execute:

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

Você também pode descobrir complementos filtrando por seus,. `type` `owner` and/or `publisher` Por exemplo, para ver complementos de um determinado proprietário e tipo, você pode executar:

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

Os `types` `publishers` sinalizadores `owners` e são opcionais e podem ser especificados juntos ou individualmente para filtrar os resultados.

## Descobrindo o esquema de configuração para complementos
<a name="_discovering_the_configuration_schema_for_addons"></a>

Depois de descobrir o complemento e a versão, você pode ver as opções de personalização buscando seu esquema de configuração JSON.

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

Isso retorna um esquema JSON das várias opções disponíveis para esse complemento.

## Trabalhando com valores de configuração
<a name="_working_with_configuration_values"></a>

 `ConfigurationValues`podem ser fornecidos no arquivo de configuração durante a criação ou atualização dos complementos. Somente os formatos JSON e YAML são compatíveis.

Por exemplo. ,

```
addons:
- name: coredns
  configurationValues: |-
    replicaCount: 2
```

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

**nota**  
Lembre-se de que, quando os valores de configuração do complemento forem modificados, surgirão conflitos de configuração.

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

Além disso, o comando get agora também será recuperado `ConfigurationValues` para o complemento. por exemplo

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

## Usando namespace personalizado
<a name="_using_custom_namespace"></a>

Um namespace personalizado pode ser fornecido no arquivo de configuração durante a criação dos complementos. Um namespace não pode ser atualizado depois que um complemento é criado.

### Usando o arquivo de configuração
<a name="_using_config_file"></a>

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

### Usando o sinalizador CLI
<a name="_using_cli_flag"></a>

Como alternativa, você pode especificar um namespace personalizado usando a `--namespace-config` sinalização:

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

O comando get também recuperará o valor do namespace para o 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
```

## Atualizando complementos
<a name="update-addons"></a>

Você pode atualizar seus complementos para versões mais recentes e alterar quais políticas estão anexadas executando:

```
eksctl update addon -f config.yaml
```

```
eksctl update addon --name vpc-cni --version 1.8.0 --service-account-role-arn <new-role>
```

**nota**  
A configuração do namespace não pode ser atualizada após a criação de um complemento. A `--namespace-config` bandeira só está disponível durante a criação do complemento.

Da mesma forma que na criação de um complemento, ao atualizar um complemento, você tem controle total sobre as alterações de configuração que você pode ter aplicado anteriormente nesse complemento. `configMap` Especificamente, você pode preservá-los ou sobrescrevê-los. Essa funcionalidade opcional está disponível por meio do mesmo campo do arquivo de `resolveConflicts` configuração. por exemplo,

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

Para atualização do complemento, o `resolveConflicts` campo aceita três valores distintos:
+  `none`- O EKS não altera o valor. A atualização pode falhar.
+  `overwrite`- O EKS substitui todas as alterações de configuração para os valores padrão do EKS.
+  `preserve`- O EKS preserva o valor. Se você escolher essa opção, recomendamos testar todas as alterações de campo e valor em um cluster que não seja de produção antes de atualizar o complemento em seu cluster de produção.

## Excluindo complementos
<a name="_deleting_addons"></a>

Você pode excluir um complemento executando:

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

Isso excluirá o complemento e todas as funções do IAM associadas a ele.

Quando você exclui seu cluster, todas as funções do IAM associadas aos complementos também são excluídas.

## Flexibilidade de criação de clusters para complementos de rede padrão
<a name="barecluster"></a>

Quando um cluster é criado, o EKS instala automaticamente o VPC CNI, o CoreDNS e o kube-proxy como complementos autogerenciados. Para desativar esse comportamento para usar outros plug-ins CNI, como Cilium e Calico, o eksctl agora suporta a criação de um cluster sem nenhum complemento de rede padrão. Para criar esse cluster, defina`addonsConfig.disableDefaultAddons`, como em:

```
addonsConfig:
  disableDefaultAddons: true
```

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

Para criar um cluster somente com CoreDNS e kube-proxy e não com VPC CNI, especifique os complementos explicitamente em e defina, como em: `addons` `addonsConfig.disableDefaultAddons`

```
addonsConfig:
  disableDefaultAddons: true
addons:
  - name: kube-proxy
  - name: coredns
```

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

Como parte dessa mudança, o eksctl agora instala complementos padrão como complementos do EKS em vez de complementos autogerenciados durante a criação do cluster, se `addonsConfig.disableDefaultAddons` não estiver explicitamente definido como verdadeiro. Dessa forma, `eksctl utils update-*` os comandos não podem mais ser usados para atualizar complementos para clusters criados com eksctl v0.184.0 e superior:
+  `eksctl utils update-aws-node` 
+  `eksctl utils update-coredns` 
+  `eksctl utils update-kube-proxy` 

Em vez disso, `eksctl update addon` deve ser usado agora.

Para saber mais, consulte O [Amazon EKS introduz a flexibilidade de criação de clusters para complementos de rede](https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-eks-cluster-creation-flexibility-networking-add-ons/).