

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Atualizar o complemento autogerenciado CoreDNS do Amazon EKS
<a name="coredns-add-on-self-managed-update"></a>

**Importante**  
Recomendamos adicionar o tipo Amazon EKS do complemento ao seu cluster em vez de usar o tipo autogerenciado do complemento. Se você não estiver familiarizado com a diferença entre os tipos, consulte [Complementos do Amazon EKS](eks-add-ons.md). Para obter mais informações sobre como adicionar um complemento do Amazon EKS ao cluster, consulte [Criar um complemento do Amazon EKS](creating-an-add-on.md). Se você não conseguir usar o complemento do Amazon EKS, recomendamos que você envie um problema sobre o motivo pelo qual não pode usar o [repositório GitHub para roteiro de contêineres](https://github.com/aws/containers-roadmap/issues).

Antes de começar, reveja as considerações sobre o upgrade. Para ter mais informações, consulte [Considerações importantes sobre a atualização do CoreDNS](managing-coredns.md#coredns-upgrade).

1. Confirme que tem o tipo autogerenciado de complemento instalado em seu cluster. Substitua *my-cluster* pelo nome do cluster.

   ```
   aws eks describe-addon --cluster-name my-cluster --addon-name coredns --query addon.addonVersion --output text
   ```

   Se receber uma mensagem de erro, você tem o tipo autogerenciado do complemento instalado no cluster. Conclua as etapas restantes neste procedimento. Se receber um número de versão, você tem o tipo de complemento do Amazon EKS instalado no cluster. Para atualizar o tipo de Amazon EKS do complemento, use o procedimento em [Atualizar o complemento CoreDNS do Amazon EKS](coredns-add-on-update.md) em vez de usar este procedimento. Se não estiver familiarizado com a diferença entre os tipos de complemento, consulte [Complementos do Amazon EKS](eks-add-ons.md).

1. Veja qual versão da imagem do contêiner está atualmente instalada em seu cluster.

   ```
   kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
   ```

   Veja um exemplo de saída abaixo.

   ```
   v1.8.7-eksbuild.2
   ```

1. Se a versão atual do CoreDNS for `v1.5.0` ou posterior, mas anterior à versão listada na tabela de [versões do CoreDNS](managing-coredns.md#coredns-versions), pule esta etapa. Se a sua versão atual for anterior à `1.5.0`, você precisa modificar o `ConfigMap` para que o CoreDNS use o complemento de encaminhamento, em vez do complemento de proxy.

   1. Abra o `ConfigMap` com o comando a seguir.

      ```
      kubectl edit configmap coredns -n kube-system
      ```

   1. Substitua `proxy` na linha a seguir pelo `forward`. Salve o arquivo e saia do editor.

      ```
      proxy . /etc/resolv.conf
      ```

1. Se você implantou originalmente seu cluster no Kubernetes `1.17` ou anterior, talvez seja necessário remover uma linha descontinuada do manifesto do CoreDNS.
**Importante**  
Você deve concluir essa etapa antes de atualizar para a versão `1.7.0` do CoreDNS, mas é recomendável concluir essa etapa mesmo se estiver atualizando para uma versão anterior.

   1. Verifique se o manifesto do CoreDNS tem a linha.

      ```
      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream
      ```

      Se nenhum resultado for retornado, o manifesto não terá a linha e você poderá prosseguir para a próxima etapa para atualizar o CoreDNS. Se um resultado for retornado, você precisará remover a linha.

   1. Edite o `ConfigMap` com o comando a seguir, removendo a linha no arquivo que inclui a palavra `upstream` em seu nome. Não altere mais nada no arquivo. Depois que a linha for removida, salve as alterações.

      ```
      kubectl edit configmap coredns -n kube-system -o yaml
      ```

1. Recupere a versão da imagem atual do CoreDNS:

   ```
   kubectl describe deployment coredns -n kube-system | grep Image
   ```

   Veja um exemplo de saída abaixo.

   ```
   602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
   ```

1. Se você estiver atualizando para o CoreDNS `1.8.3` ou uma versão mais recente, será necessário adicionar a permissão `endpointslices` para o `clusterrole` `system:coredns` do Kubernetes.

   ```
   kubectl edit clusterrole system:coredns -n kube-system
   ```

   Adicione as linhas a seguir abaixo das linhas de permissões existentes na seção `rules` do arquivo.

   ```
   [...]
   - apiGroups:
     - discovery.k8s.io
     resources:
     - endpointslices
     verbs:
     - list
     - watch
   [...]
   ```

1. Atualize o complemento CoreDNS substituindo *602401143452* e *region-code* pelos valores da saída retornada em uma etapa anterior. Substitua *v1.11.3-eksbuild.1* pela versão do CoreDNS listada na [tabela de versões mais recentes](managing-coredns.md#coredns-versions) para sua versão do Kubernetes.

   ```
   kubectl set image deployment.apps/coredns -n kube-system  coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.11.3-eksbuild.1
   ```

   Veja um exemplo de saída abaixo.

   ```
   deployment.apps/coredns image updated
   ```

1. Verifique a versão da imagem do contêiner novamente para confirmar que ela foi atualizada para a versão que você especificou na etapa anterior.

   ```
   kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
   ```

   Veja um exemplo de saída abaixo.

   ```
   v1.11.3-eksbuild.1
   ```