Kubernetes リソースを表示する - Amazon EKS

Kubernetes リソースを表示する

クラスターにデプロイされた Kubernetes リソースを AWS Management Console で表示できます。Kubernetes リソースは、AWS CLI または eksctl で表示することはできません。コマンドラインツールを使用して Kubernetes リソースを表示するには、kubectl を使用します。

前提条件

AWS Management Console で、[Resources] (リソース) タブ、および [Compute] (コンピューティング) タブ内の [Nodes] (ノード) セクションを表示するには、AWS Management Console にサインインしているユーザー、またはサインイン後に切り替えるロールが、特定の IAM または Kubernetes のアクセス許可を持つ必要があります。詳細については、「必要なアクセス許可」を参照してください。

Kubernetes リソースを AWS Management Console で表示する

  1. Amazon EKS コンソールを https://console.aws.amazon.com/eks/home#/clusters で開きます。

  2. [Clusters] (クラスター) のリストで、表示したい Kubernetes リソースを含んでいるクラスターを選択します。

  3. [Resources] (リソース) タブを選択します。

  4. リソースを表示したい [Resource type] (リソースタイプ) グループを選択します。例えば、[Workloads] (ワークロード) などです。そのグループ内のリソースタイプのリストが表示されます。

  5. リソースタイプを選択します。つまり、[Workloads] (ワークロード) グループ内の [Deployments] (デプロイ) などです。リソースタイプの説明、リソースタイプの詳細な説明の Kubernetes ドキュメントへのリンク、およびクラスターにデプロイされていてそのタイプのリソースのリストが表示されます。リストが空の場合、そのタイプのリソースはクラスターにデプロイされていません。

  6. 詳細情報を表示するには、そのリソースを選択します。次の例を試してください。

    • [Workloads] (ワークロード) グループを選択し、[Deployments] (デプロイメント) のリソースタイプを選択し、次に [coredns] (CoreDNS) リソースを選択します。リソースを選択すると、デフォルトで [Structured view] (構造化ビュー) が表示されます。リソースタイプによっては、[Structured view] (構造化ビュー) に [Pods] (ポッド) セクションが表示されます。このセクションでは、ワークロードによって管理される pods が一覧表示されます。一覧表示されている任意の pod を選択し、pod の情報を表示できます。すべてのリソースタイプについて、[Structured View] (構造化ビュー) で情報が表示されるわけではありません。リソース表示画面で右上隅にある [Raw view] (raw ビュー) を選択すると、そのリソースについて Kubernetes API からの完全な JSON レスポンスが表示されます。

    • [Cluster] (クラスター) グループを選択してから、[Nodes] (ノード) リソースタイプを選択します。クラスター内のすべてのノードのリストが表示されます。ノードは、任意の Amazon EKS ノードタイプとなります。これはクラスターの [Compute] (コンピューティング) タブを選択したときに [Nodes] (ノード) セクションに表示されるのと同じリストです。リストからノードリソースを選択します。[Structured View] (構造化ビュー) では、[Pods] (ポッド) セクションも表示されます。このセクションでは、ノード上で実行中のすべての pods が表示されます。

必要なアクセス許可

AWS Management Console で、[Resources] (リソース) タブ、および [Compute] (コンピューティング) タブ内の [Nodes] (ノード) セクションを表示するには、AWS Management Console にサインインしているユーザー、またはサインイン後に切り替えるロールが、特定の最小限の IAM または Kubernetes のアクセス許可を持つ必要があります。次のステップを実行して、ユーザーやロールに必要なアクセス許可を割り当てます。

  1. eks:AccessKubernetesApi、および Kubernetes リソースを表示するために必要なその他の IAM アクセス許可が、AWS Management Console にサインインしているユーザー、またはコンソールにサインインした後に切り替えるロールに割り当てられていることを確認してください。ユーザーのアクセス許可を編集する方法の詳細については、「IAM ユーザーガイド」の「ユーザーのアクセス許可の変更 (コンソール)」を参照してください。ロールのアクセス許可を編集する方法の詳細については、IAM ユーザーガイドの「ロールのアクセス許可ポリシーの変更 (コンソール)」を参照してください。

    次のポリシーの例には、アカウント内のすべてのクラスター内にある Kubernetes リソースを表示するために必要な、ユーザーまたはロールへのアクセス許可が含まれています。111122223333 をアカウントの ID に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:ListFargateProfiles", "eks:DescribeNodegroup", "eks:ListNodegroups", "eks:ListUpdates", "eks:AccessKubernetesApi", "eks:ListAddons", "eks:DescribeCluster", "eks:DescribeAddonVersions", "eks:ListClusters", "eks:ListIdentityProviderConfigs", "iam:ListRoles" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:*:111122223333:parameter/*" } ] }

    接続されたクラスター内のノードを表示するには、Amazon EKS コネクタの IAM ロール はクラスター内の IAM ユーザーまたはロールを偽装できる必要があります。これにより、Amazon EKS Connector は IAM ユーザーまたはロールを Kubernetes ユーザーにマッピングできます。

  2. Kubernetes リソースを表示するのに必要なアクセス許可を持つ Kubernetes role または clusterrole にバインドされている Kubernetes rolebinding または clusterrolebinding を作成します。Kubernetes のロールとロールバインドの詳細については、「Kubernetes ドキュメント」の「RBAC 認可を使用する」を参照してください。次のマニフェストのいずれかをクラスターに適用して、必要な Kubernetes アクセス許可を持つ role および rolebinding または clusterrole および clusterrolebinding を作成できます。

    • すべての名前空間内の Kubernetes リソースを表示する - ファイル内のグループ名は eks-console-dashboard-full-access-group です。次のコマンドを使用して、クラスターにマニフェストを適用します。

      kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
    • 特定の名前空間内の Kubernetes リソースを表示する - このファイルの名前空間は default です。ファイル内のグループ名は eks-console-dashboard-restricted-access-group です。次のコマンドを使用して、クラスターにマニフェストを適用します。

      kubectl apply -f https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml

    ファイル内の Kubernetes グループ名、名前空間、アクセス許可、またはその他の設定を変更する必要がある場合は、ファイルをダウンロードして編集してからクラスターに適用します。

    1. 次のいずれかのコマンドを使って、ファイルをダウンロードします。

      curl -o eks-console-full-access.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
      curl -o eks-console-restricted-access.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-restricted-access.yaml
    2. 必要に応じてファイルを編集します。

    3. 次のコマンドのいずれかを使用して、クラスターにマニフェストを適用します。

      kubectl apply -f eks-console-full-access.yaml
      kubectl apply -f eks-console-restricted-access.yaml
  3. IAM ユーザーまたはロールを Kubernetes のユーザーまたは aws-auth ConfigMap グループにマッピングします。eksctl のようなツールにより ConfigMap を更新することができます。あるいは、手動で編集しての更新も可能です。

    重要

    ConfigMap の編集には、eksctl や、その他のツールを使用することをお勧めします。使用できる他のツールについては、Amazon EKS ベストプラクティスガイドの「ツールを使用して aws-authConfigMap を変更する」を参照してください。aws-auth ConfigMap の形式が不適切な場合、クラスターへのアクセスが失われる場合があります。

    eksctl

    前提条件

    デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.110.0 以降。eksctl をインストールまたは更新するには、「eksctl のインストールまたは更新」を参照してください。

    1. ConfigMap に現在のマッピングを表示します。my-cluster を自分のクラスター名に置き換えます。region-code をクラスターのある AWS リージョン に置き換えます。

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      出力例を次に示します。

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes
    2. ロールのマッピングを追加します。この例では、最初のステップで my-console-viewer-role という名前のロールに IAM アクセス許可を添付したと仮定します。111122223333 をアカウントID に置き換えます。

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:role/my-console-viewer-role \ --group eks-console-dashboard-full-access-group \ --no-duplicate-arns
      重要

      ロールの ARN には、role/my-team/developers/my-role などのパスを含めることはできません。ロールの ARN は、arn:aws:iam::111122223333:role/my-role のような形式にする必要があります。この例では、my-team/developers/ の部分を削除する必要があります。

      出力例を次に示します。

      ... 2022-05-09 14:51:20 [ℹ] adding identity "arn:aws:iam::111122223333:role/my-console-viewer-role" to auth ConfigMap
    3. ユーザーのマッピングを追加します。この例では、最初のステップで my-user という名前のユーザーに IAM アクセス許可を添付したと仮定します。111122223333 をアカウントID に置き換えます。

      eksctl create iamidentitymapping \ --cluster my-cluster \ --region=region-code \ --arn arn:aws:iam::111122223333:user/my-user \ --group eks-console-dashboard-restricted-access-group \ --no-duplicate-arns

      出力例を次に示します。

      ... 2022-05-09 14:53:48 [ℹ] adding identity "arn:aws:iam::111122223333:user/my-user" to auth ConfigMap
    4. ConfigMap のマッピングを再度表示します。

      eksctl get iamidentitymapping --cluster my-cluster --region=region-code

      出力例を次に示します。

      ARN USERNAME GROUPS ACCOUNT arn:aws:iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes arn:aws:iam::111122223333:role/my-console-viewer-role eks-console-dashboard-full-access-group arn:aws:iam::111122223333:user/my-user eks-console-dashboard-restricted-access-group
    Edit ConfigMap manually

    aws-auth ConfigMap へのユーザーまたはロール追加の詳細については、「IAM ユーザー、ロール、または AWS アカウントを ConfigMap に追加する」を参照してください。

    1. 編集する ConfigMap を開きます。

      kubectl edit -n kube-system configmap/aws-auth
    2. aws-auth ConfigMap にマッピングを追加しますが、既存のマッピングを置き換えないでください。次の例では、最初のステップで追加したアクセス許可を持つ IAM ユーザーおよびロールと、前のステップで作成した Kubernetes グループの間のマッピングを追加します。

      • my-console-viewer-role ロールと eks-console-dashboard-full-access-group

      • my-user ユーザーと eks-console-dashboard-restricted-access-group

      これらの例では、最初のステップで my-console-viewer-role という名前のロール、および my-user という名前のユーザーに、IAM アクセス許可を添付したと仮定します。111122223333 をアカウント ID に置き換えます。

      apiVersion: v1 data: mapRoles: | - groups: - eks-console-dashboard-full-access-group rolearn: arn:aws:iam::111122223333:role/my-console-viewer-role username: my-console-viewer-role mapUsers: | - groups: - eks-console-dashboard-restricted-access-group userarn: arn:aws:iam::111122223333:user/my-user username: my-user
      重要

      ロールの ARN には、role/my-team/developers/my-console-viewer-role などのパスを含めることはできません。ロールの ARN は、arn:aws:iam::111122223333:role/my-console-viewer-role のような形式にする必要があります。この例では、my-team/developers/ を削除する必要があります。

    3. ファイルを保存し、エディタを終了します。