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

Kubernetes リソースを表示する

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

前提条件

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

Kubernetes リソースを AWS Management Console で表示する
  1. Amazon EKS コンソールを https://console.aws.amazon.com/eks/home#/clusters で開きます。

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

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

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

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

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

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

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

必要なアクセス許可

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

  1. eks:AccessKubernetesApi、および Kubernetes リソースを表示するために必要なその他の 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 アクセス許可を持つ 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 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 の Kubernetes ユーザーまたはグループに IAM プリンシパルをマッピングします。eksctl のようなツールにより ConfigMap を更新することができます。あるいは、手動で編集しての更新も可能です。

    重要

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

    eksctl
    前提条件

    デバイスまたは AWS CloudShell にインストールされている eksctl コマンドラインツールのバージョン 0.172.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. ユーザーのマッピングを追加します。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
    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 にユーザまたはロールを追加する方法の詳細については、「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. ファイルを保存し、テキストエディタを終了します。