Complementos - Guia do usuário do Eksctl

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

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

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 dosattachPolicy, 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 habilitado, 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>

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 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 formanone, mas diferente da atualização preserve de complementos).

Listando complementos habilitados

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

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 ouv1.7.5-eksbuild.2. Também pode ser configurado para a versão de lançamento do complemento, como v1.7.5 ou1.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

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

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

ConfigurationValuespodem 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

Atualizando complementos

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>

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

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

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, definaaddonsConfig.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.