Amazon EKS の API サーバーへのパブリックアクセスとプライベートアクセスを設定する方法を教えてください。

最終更新日: 2020 年 6 月 12 日

Amazon Elastic Kubernetes Service (Amazon EKS) クラスターの Kubernetes API サーバーエンドポイントにパブリックアクセスとプライベートアクセスを設定したいと考えています。

簡単な説明

Kubernetes API サーバーエンドポイントのパブリックアクセスおよびプライベートアクセスを設定するには、以下を行う必要があります。

  • Kubernetes API サーバーのデフォルト動作を理解する
  • Amazon EKS API エンドポイントへのプライベートアクセスの仕組みを理解する
  • エンドポイントアクセスを変更
  • Amazon EKS API エンドポイントの DNS 解決の仕組みを理解する

Kubernetes API サーバーエンドポイントに問題がある場合は、Amazon EKS クラスターの API サーバーエンドポイントに関する問題をトラブルシューティングする方法を教えてくださいを参照してください。

解決方法

Kubernetes API サーバーのデフォルト動作を理解する

新しいクラスターを作成すると、以下に該当します。

  • Amazon EKS は、クラスターとの通信に使用するマネージド型 Kubernetes API サーバーのエンドポイントを作成します。
  • API サーバーエンドポイントはインターネットに公開されています。
  • API サーバーへのアクセスは、AWS Identity and Access Management (IAM) とネイティブの Kubernetes ロールベースのアクセスコントロール (RBAC) で保護されます。

Amazon EKS API エンドポイントへのプライベートアクセスの仕組みを理解する

Amazon Virtual Private Cloud (Amazon VPC) 内でワーカーノードと API サーバー間の通信を維持するには、Amazon EKS API エンドポイントへのプライベートアクセスを有効にします

クラスターの API エンドポイントへのプライベートアクセスを有効にすると、以下に該当します。

  • Amazon EKS はユーザーに代わって Amazon Route 53 プライベートホストゾーンを作成し、そのプライベートホストゾーンをクラスターの VPC にのみ関連付けます。
  • プライベートホストゾーンは Amazon EKS によって管理され、このゾーンはアカウントの Route 53 リソースには表示されません。

プライベートアクセスのみを許可するように設定されたクラスターには、次からのみアクセスできます。

  • ワーカーノードが存在する VPC
  • Amazon EKS クラスターの VPC とピア接続されるネットワーク
  • AWS Direct Connect または仮想プライベートネットワーク (VPN) を介して Amazon EKS クラスターの VPC に接続されているネットワーク

Amazon EKS API エンドポイントの DNS 解決の仕組みを理解する

パブリック = trueプライベート = false の場合、Amazon EKS API エンドポイントはインターネットからどこにでも到達できます。これは、Amazon EKS クラスターのデフォルト動作です。また、AWS コマンドラインインターフェイス (AWS CLI) を使用してアクセスを制限することもできます。

パブリック = trueプライベート = true の場合、Amazon EKS API エンドポイントはインターネット経由で、そして VPC の接続されたネットワーク内から、アクセスおよび解決できます。接続されたネットワークには、DX、VPN、または VPC ピア接続が含まれます。 同じ VPC 内からエンドポイントにアクセスする場合、エンドポイントは内部 IP に解決されます。ただし、DX、VPN、または VPC ピア接続などの接続されたネットワークを介してエンドポイントにアクセスする場合、API エンドポイントはパブリック IP に解決されます。

パブリック = falseプライベート = true の場合、Amazon EKS クラスターの API サーバーへのすべてのトラフィックは、VPC 内または接続されたネットワーク内から発信される必要があります。API サーバーエンドポイントはインターネット経由でアクセスできません。クラスターの API サーバーエンドポイントは、パブリック DNS サーバーによって VPC のプライベート IP アドレスに解決されます。

エンドポイントアクセスを変更

プライベート API エンドポイントアクセスが無効になっている (true に設定されている) クラスターのプライベートアクセスを更新するには、次の AWS CLI コマンドを実行します。

aws eks update-cluster-config \
    --region region \
    --name dev \
    --resources-vpc-config endpointPublicAccess=true,endpointPrivateAccess=true

エンドポイントへのパブリック API アクセスを無効にするには、endpointPublicAccessfalse に設定します。