

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 o Amazon EKS Add-Ons para seus clusters do Amazon EKS usando eksctl. Add-Ons O EKS é um recurso que permite ativar 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**  
Começando com eksctl v0.184.0 (e v0.201.0 para metrics-server), eksctl instala complementos padrão (vpc-cni, coredns, kube-proxy, metrics-server) como complementos EKS em vez de complementos autogerenciados. Isso significa que você deve usar `eksctl update addon` em vez de `eksctl utils update-*` comandos.

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

O EKS Add-ons agora suporta o 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 oferece 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 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 o `--namespace-config` sinalizador 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 `configMap` conflitos em potencial 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 addon create, o `resolveConflicts` campo suporta três valores distintos:
+  `none`- O EKS não altera o valor. A criação pode falhar.
+  `overwrite`- O EKS sobrescreve 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 em 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, `eksctl` resolverá a versão padrão do complemento. 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 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 quiser ver quais complementos estão disponíveis para uma versão específica do kubernetes, você pode executar:

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

Você também pode descobrir complementos filtrando por eles,. `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 `publishers` sinalizadores`types`, `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`pode ser fornecido no arquivo de configuração durante a criação ou atualização de complementos. Somente os formatos JSON e YAML são suportados.

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 de 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 o sinalizador: `--namespace-config`

```
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 depois que um complemento é criado. A `--namespace-config` bandeira só está disponível durante a criação do complemento.

Da mesma forma que a criação de complementos, ao atualizar um complemento, você tem controle total sobre as alterações de configuração que pode ter aplicado anteriormente nesse complemento. `configMap` Especificamente, você pode preservá-los ou substituí-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 adicional, o `resolveConflicts` campo aceita três valores distintos:
+  `none`- O EKS não altera o valor. A atualização pode falhar.
+  `overwrite`- O EKS sobrescreve 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 apenas 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 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 apresenta a flexibilidade de criação de clusters para complementos ](https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-eks-cluster-creation-flexibility-networking-add-ons/) de rede.