EKSコンソールからnodeやworkload情報を見れるようにする

AWSコンソールのEKS画面で

Your current user or role does not have access to Kubernetes objects on this EKS cluster
This may be due to the current user or role not having Kubernetes RBAC permissions to describe cluster resources or not having an entry in the cluster’s auth config map

と表示される場合は、権限設定が必要です。

例えばAWSコンソールにログインしているIAM Userが my-user なら以下のように aws-auth ConfigMapの mapUsers に追加します。

apiVersion: v1
kind: ConfigMap
data:
  mapRoles: |
    - rolearn: arn:aws:iam::1234567890:role/my-role
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  mapUsers: |
    - userarn: arn:aws:iam::1234567890:user/my-user
      username: my-user
      groups:
        - system:masters

権限を絞る

system:mastersだと 全てのリソースに対して全ての操作を許可してしまうので、権限を絞りたいというニーズが出てくるかもしれません。 その場合は、 https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html の 5 にある All Regions other than Beijing and Ningxia China のリンクからダウンロードできるyamlを使います。 そのyamlは以下のようになってます(2021/01/08時点)

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: eks-console-dashboard-full-access-clusterrole
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  - namespaces
  - pods
  verbs:
  - get
  - list
- apiGroups:
  - apps
  resources:
  - deployments
  - daemonsets
  - statefulsets
  - replicasets
  verbs:
  - get
  - list
- apiGroups:
  - batch
  resources:
  - jobs
  verbs:
  - get
  - list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: eks-console-dashboard-full-access-binding
subjects:
- kind: Group
  name: eks-console-dashboard-full-access-group
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: eks-console-dashboard-full-access-clusterrole
  apiGroup: rbac.authorization.k8s.io

で、このyamlをapplyし、以下のようにgroupsにeks-console-dashboard-full-access-groupを指定します。

group
  mapUsers: |
    - userarn: arn:aws:iam::1234567890:user/my-user
      username: my-user
      groups:
        - eks-console-dashboard-full-access-group

これでEKSコンソールからnodeやworkload情報を見るための最低限の権限に絞られます。

その他注意点

注意点としては、 usernameに system:node:{{EC2PrivateDNSName}}を指定してしまうと、以下のようなメッセージがでてnodeやworkload情報が見れません。

Your current user or role does not have access to Kubernetes objects on this EKS cluster
This may be due to the current user or role not having Kubernetes RBAC permissions to describe cluster resources or not having an entry in the cluster’s auth config map

また、以下のように

      groups:
        - system:bootstrappers
        - system:nodes

groupsにsystem:bootstrapperssystem:nodesを指定してしまうと、以下のようなメッセージがでてnodeやworkload情報が見れません。

namespaces is forbidden: User "my-user" cannot list resource "namespaces" in API group "" at the cluster scope