AWS Management Console に Kubernetes リソースを表示する - Amazon EKS

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

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

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

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

注記

AWS Management Console の [リソース] タブと [コンピューティング] タブの [ノード] セクションを表示するには、使用している IAM プリンシパルに特定の IAM と Kubernetes 許可が必要です。詳細については「必要なアクセス許可」を参照してください。

  1. Amazon EKS コンソールを開きます。

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

  3. [Resources (リソース)] タブを選択してください。

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

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

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

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

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

必要なアクセス許可

AWS Management Console の [リソース] タブと [コンピューティング] タブの [ノード] セクションを表示するには、使用している IAM プリンシパルに特定の最小限の IAM と Kubernetes 許可が必要です。次のステップを実行して、IAM プリンシパルに必要な許可を割り当てます。

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

    次のポリシーの例には、アカウント内のすべてのクラスター内にある Kubernetes リソースを表示するために必要な、プリンシパルへの許可が含まれています。111122223333 を自分の AWS アカウント 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 ロールがクラスター内のプリンシパルを偽装できる必要があります。これにより、Amazon EKS Connector はプリンシパルを Kubernetes ユーザーにマッピングできます。

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

    すべての名前空間の 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 https://s3.us-west-2.amazonaws.com/amazon-eks/docs/eks-console-full-access.yaml
        curl -O 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. aws-auth ConfigMap のユーザーまたはグループに IAM プリンシパルをマッピングします。eksctl のようなツールにより ConfigMap を更新することができます。あるいは、手動で編集しての更新も可能です。

    重要

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

eksctl で編集する

  1. デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.204.0 以降が必要です。eksctl をインストールまたはアップグレードするにはeksctl ドキュメントの「インストール」を参照してください。

  2. ConfigMap に現在のマッピングを表示します。マイクラスター の部分は自分のクラスター名に置き換えます。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
  3. ロールのマッピングを追加します。この例では、最初のステップで 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
  4. ユーザーのマッピングを追加します。IAM のベストプラクティスでは、ユーザーではなくロールに許可を付与することが推奨されています。この例では、最初のステップで 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
  5. 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

ConfigMap を手動で編集する

aws-auth ConfigMap にユーザまたはロールを追加する方法の詳細については、「Amazon EKS クラスターに IAM プリンシパルを追加する」を参照してください。

  1. 編集する aws-auth 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 を自分の AWS アカウント 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. ファイルを保存し、テキストエディタを終了します。