

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# CoreDNS Amazon EKS セルフマネージドアドオンを更新する
<a name="coredns-add-on-self-managed-update"></a>

**重要**  
セルフマネージド型のアドオンを使用する代わりに、アマゾン EKS タイプのアドオンをクラスターに追加することをお勧めします。タイプの違いがよくわからない場合は「[Amazon EKS アドオン](eks-add-ons.md)」を参照してください。アマゾン EKS アドオンをクラスターに追加する方法については「[Amazon EKS アドオンを作成する](creating-an-add-on.md)」を参照してください。アマゾン EKS アドオンを使用できない場合はその理由に関する問題を[コンテナロードマップ GitHub リポジトリ](https://github.com/aws/containers-roadmap/issues)に送信することをお勧めします。

開始する前に、アップグレードに関する考慮事項を確認してください。詳細については「[CoreDNS アップグレードに関する重要な考慮事項](managing-coredns.md#coredns-upgrade)」を参照してください。

1. クラスターにインストールされているアドオンがセルフマネージド型であることを確認します。*マイクラスター* の部分は自分のクラスター名に置き換えます。

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

   エラーメッセージが返された場合、クラスターにセルフマネージド型のアドオンがインストールされています。インストールするにはこのステップの残りのステップを完了します。バージョン番号が返された場合、クラスターに アマゾン EKS タイプのアドオンがインストールされています。Amazon EKS タイプのアドオンを更新するにはこの手順を使用するのではなく、「[CoreDNS Amazon EKS アドオンを更新する](coredns-add-on-update.md)」の手順を使用してください。アドオンタイプの違いがよくわからない場合は「[Amazon EKS アドオン](eks-add-ons.md)」を参照してください。

1. クラスターに現在インストールされているコンテナイメージのバージョンを確認します。

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

   出力例は次のとおりです。

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

1. 現在の CoreDNS のバージョンが `v1.5.0` 以降で、かつ [CoreDNS バージョン](managing-coredns.md#coredns-versions)表に記載されるバージョンよりも前の場合は、このステップをスキップしてください。現在のバージョンが `1.5.0` より前の場合、プロキシアドオンではなく進んだアドオンを使用するためには、CoreDNS の `ConfigMap` を修正する必要があります。

   1. 次のコマンドを使用して `ConfigMap` を開きます。

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

   1. 次の行の `proxy` を `forward` に置き換えます。ファイルを保存し、エディタを終了します。

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

1. Kubernetes `1.17` 以前にクラスターを最初にデプロイした場合は、CoreDNS マニフェストから廃止された行を削除する必要があります。
**重要**  
CoreDNS バージョン `1.7.0` に更新する前に、この手順を完了する必要があります。以前のバージョンに更新する場合でも、この手順を完了することをお勧めします。

   1. CoreDNS マニフェストにその行があるかどうか確認します。

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

      出力が返されない場合、マニフェストにその行がないため、次のステップに進み、CoreDNS を更新することができます。出力が返された場合はその行を削除します。

   1. 以下のコマンドを使用して `ConfigMap`を編集し、ファイル内の `upstream` という単語がある行を削除します。このファイル内の他の部分は変更しないでください。行を削除したら、変更を保存します。

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

1. 現在の CoreDNS イメージバージョンを取得します。

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

   出力例は次のとおりです。

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

1. CoreDNS `1.8.3` 以降に更新する場合は、`endpointslices` のアクセス許可を `system:coredns` Kubernetes `clusterrole` に追加する必要があります。

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

   ファイルの `rules` セクション内の既存の権限行の下に次の行を追加します。

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

1. *602401143452* および *region-code* を、前のステップで返された出力の値に置き換えて、CoreDNS アドオンを更新します。*v1.11.3-eksbuild.1* を、使用している Kubernetes バージョンについて[最新バージョンの表](managing-coredns.md#coredns-versions)に記載されている CoreDNS バージョンに置き換えます。

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

   出力例は次のとおりです。

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

1. コンテナイメージのバージョンをもう一度チェックして、前のステップで指定したバージョンに更新されたことを確認します。

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

   出力例は次のとおりです。

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