Kubernetes 리소스 보기 - Amazon EKS

Kubernetes 리소스 보기

AWS Management Console을 사용하면 클러스터에 배포된 Kubernetes 리소스를 볼 수 있습니다. AWS CLI 또는 eksctl로는 Kubernetes 리소스를 볼 수 없습니다. 명령줄 도구를 사용하여 Kubernetes 리소스를 보려면 kubectl을 사용합니다.

사전 조건

AWS Management Console의 컴퓨팅(Compute) 탭에서 리소스(Resources) 탭 및 노드(Nodes) 섹션을 보려면 AWS Management Console에 로그인되어 있는 사용자 또는 로그인 후 전환하는 역할에는 특정 IAM 및 Kubernetes 권한이 있어야 합니다. 자세한 정보는 필수 권한을 참조하십시오.

AWS Management Console로 Kubernetes 리소스를 보려면 다음을 수행합니다.

  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

  2. 클러스터(Clusters) 목록에서 보려는 Kubernetes 리소스를 포함하는 클러스터를 선택합니다.

  3. 리소스(Resources) 탭을 선택합니다.

  4. 보려는 리소스에 대한 리소스 유형(Resource type) 그룹을 선택합니다(예: 워크로드(Workloads). 해당 그룹의 리소스 유형 목록이 표시됩니다.

  5. 워크로드(Workloads) 그룹에서 리소스 유형을 선택합니다(예: 배포(Deployments)). 리소스 유형 설명, 리소스 유형의 자세한 내용이 있는 Kubernetes 설명서에 대한 링크, 클러스터에 배포된 해당 유형의 리소스 목록이 표시됩니다. 목록이 비어 있는 경우 클러스터에 배포된 해당 유형의 리소스가 없습니다.

  6. 이에 대한 자세한 내용을 확인하려면 리소스를 선택합니다. 다음 예를 시도해 보세요.

    • 워크로드(Workloads) 그룹을 선택하고, 배포(Deployments) 리소스 유형을 선택한 다음 coredns 리소스를 선택합니다. 리소스를 선택하면 기본적으로 구조적 뷰(Structured view)에 있습니다. 일부 리소스 유형의 경우 구조적 뷰(Structured view)포드(Pod) 섹션이 표시됩니다. 이 섹션에서는 워크로드에 의해 관리되는 pods가 나열됩니다. pod에 대한 정보를 보려면 나열된 모든 pod를 선택할 수 있습니다. 일부 리소스 유형의 정보가 구조적 뷰(Structured View)에 표시됩니다. 리소스 페이지의 오른쪽 상단 모서리에서 원시 보기(Raw view)를 선택하는 경우 리소스에 대한 Kubernetes API의 전체 JSON 응답이 표시됩니다.

    • 클러스터(Cluster) 그룹을 선택한 다음 노드(Nodes) 리소스 유형을 선택합니다. 클러스터에 모든 노드 목록이 표시됩니다. 노드는 모든 Amazon EKS 노드 유형일 수 있습니다. 이 목록은 클러스터의 컴퓨팅(Compute) 탭을 선택하는 경우 노드(Nodes) 섹션에 표시되는 것과 동일한 목록입니다. 목록에서 노드 리소스를 선택합니다. 구조적 뷰(Structured view)포드(Pod) 섹션도 표시됩니다. 이 섹션에서는 노드에서 실행되는 모든 pods를 보여줍니다.

필수 권한

AWS Management Console의 컴퓨팅(Compute) 탭에서 리소스(Resources) 탭 및 노드(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 Connector IAM 역할은 클러스터에서 IAM 사용자 또는 역할을 가장할 수 있어야 합니다. 이를 통해 Amazon EKS Connector가 IAM 사용자 또는 역할을 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 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 사용자 또는 역할을 aws-auth ConfigMap의 Kubernetes 사용자 또는 그룹에 매핑합니다. eksctl과 같은 도구를 사용하여 ConfigMap을 업데이트하거나 편집하여 수동으로 업데이트할 수 있습니다.

    중요

    eksctl 또는 다른 도구를 사용하여 ConfigMap을 편집하는 것이 좋습니다. 사용할 수 있는 다른 도구에 대한 자세한 내용을 알아보려면 Amazon EKS 모범 사례 가이드의 도구를 사용하여 aws-authConfigMap을 변경을 참조하세요. 부적절하게 형식이 지정된 aws-auth ConfigMap으로 인해 클러스터에 대한 액세스 권한을 상실할 수 있습니다.

    eksctl

    사전 조건

    디바이스 또는 0.110.0에 설치된 버전 AWS CloudShell 이상의 eksctl 명령줄 도구. 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. 역할에 대한 매핑을 추가합니다. 이 예에서는 첫 번째 단계의 IAM 권한을 my-console-viewer-role라는 역할에 연결했다고 가정합니다. 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라는 사용자에 연결했다고 가정합니다. 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에 매핑을 추가하지만 모든 기존 매핑을 대체하지는 마세요. 다음 예에서는 첫 번째 단계에서 추가된 권한과 이전 단계에서 생성된 Kubernetes 그룹을 사용하여 IAM 사용자 및 역할 간에 매핑을 추가합니다.

      • my-console-viewer-role 역할 및 eks-console-dashboard-full-access-group.

      • my-user 사용자 및 eks-console-dashboard-restricted-access-group.

      이 예에서는 첫 번째 단계의 IAM 권한을 my-console-viewer-role이라는 역할 및 my-user라는 사용자에 연결했다고 가정합니다. 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. 파일을 저장하고 편집기를 종료합니다.