Google Cloud 콘솔에서 클러스터 관리

이 문서에서는 베어메탈용 Google Distributed Cloud 소프트웨어로 생성된 관리자 및 사용자 클러스터를 Google Cloud 콘솔에서 관리할 수 있도록 만드는 방법을 설명합니다. 클러스터 관리 기능에는 클러스터에 로그인, 워크로드 보기, 클러스터 업그레이드, 업데이트, 삭제 기능이 포함됩니다.

Fleet 구성원 및 콘솔

모든 클러스터는 여러 클러스터와 해당 워크로드를 보고 관리하는 통합 방법인 Fleet의 구성원이어야 합니다. 각 클러스터 fleet은 fleet 호스트 프로젝트와 연결됩니다.

모든 클러스터는 생성 시 Fleet에 등록됩니다.

  • bmctl을 사용하여 클러스터를 만들 때 클러스터 구성 파일의 gkeConnect 섹션에서 fleet 호스트 프로젝트를 지정합니다. 클러스터는 지정된 프로젝트의 Fleet 구성원이 됩니다.

  • 표준 GKE On-Prem API 클라이언트(콘솔, Google Cloud CLI 또는 Terraform)로 관리자 또는 사용자 클러스터를 만들면 클러스터는 지정된 프로젝트의 Fleet 구성원이 됩니다.

Google Distributed Cloud와 같은 Google Cloud 외부의 Fleet 구성원은 Google Cloud 기반 GKE와 같은 다른 Fleet 클러스터와 함께 Fleet 호스트 프로젝트의 콘솔에 표시됩니다. 콘솔에서 베어메탈 클러스터를 관리할 수 있는 범위는 다음에 따라 다릅니다.

  • 인증을 설정했으면 클러스터에 로그인하여 해당 워크로드 및 기타 세부정보를 볼 수 있습니다.

  • 클러스터에 대해 클러스터 수명 주기 관리를 사용 설정했으면 콘솔을 사용하여 관리자 및 사용자 클러스터를 업그레이드할 수 있고 콘솔을 사용하여 사용자 클러스터를 업데이트 및 삭제할 수 있습니다. 이 기능을 사용 설정하지 않으면 관리자 워크스테이션에서 bmctl을 사용하여 클러스터 수명 주기만 관리할 수 있습니다.

등록된 클러스터 보기

모든 클러스터가 콘솔의 GKE 클러스터 페이지에 표시됩니다. 두 가지 모두 전체 Fleet에 대한 개요를 제공하며, Google Distributed Cloud의 경우 GKE On-Prem API에서 관리되는 클러스터를 확인할 수 있습니다.

Fleet 클러스터를 보려면 다음을 수행하세요.

  1. 콘솔에서 Google Kubernetes Engine 클러스터 개요 페이지로 이동합니다.

    GKE 클러스터로 이동

  2. Google Cloud 프로젝트를 선택합니다.

    • 베어메탈유형 열에 표시되면 클러스터가 GKE On-Prem API에서 관리됩니다. 참고로 GKE On-Prem API는 관리자 및 사용자 클러스터만 관리할 수 있습니다.

    • 유형 열에 외부가 표시되는 경우 클러스터는 GKE On-Prem API에서 관리되지 않습니다.

클러스터에 대한 세부정보를 보려면 클러스터에 로그인하고 인증해야 합니다. 이렇게 하려면 다음 단계를 수행해야 합니다.

인증 설정

이전에 설명한 대로 모든 클러스터는 콘솔의 GKE 클러스터 페이지에 표시됩니다. 하지만 노드 및 워크로드와 같은 세부정보를 추가로 확인하고 (이 기능이 사용 설정된 경우 클러스터 수명 주기 관리 작업을 수행하려면) 클러스터에 로그인하고 인증해야 합니다. 이렇게 하려면 다음 인증 방법 중 하나로 클러스터를 설정해야 합니다.

  • Google ID: 이 옵션을 사용하면 Google Cloud 계정과 연결된 이메일 주소인 Google Cloud ID를 사용하여 로그인할 수 있습니다. 사용자가 이미 Google ID를 사용하여 Google Cloud에 액세스할 수 있으면 이 옵션을 사용합니다. 콘솔에서 클러스터를 만든 경우 Google ID를 사용하여 클러스터에 로그인할 수 있지만 다른 사용자에 대한 인증을 구성해야 합니다.

    Google ID로 로그인은 콘솔에서 인증을 위한 가장 간단한 접근 방식이므로 Google ID 인증 설정에서 이를 설정하는 방법을 자세히 설명합니다.

  • OpenID Connect(OIDC): 이 옵션을 사용하면 Okta 또는 Microsoft AD FS와 같은 제3자 OIDC ID 공급업체의 ID를 사용하여 콘솔에서 클러스터에 로그인할 수 있습니다. 사용자에게 해당 공급자로부터 받은 기존 사용자 이름, 비밀번호, 보안 그룹 멤버십이 있으면 이 옵션을 사용해야 할 수 있습니다. 다음 가이드에서 클러스터에 대해 제3자 OIDC 인증을 설정하는 방법을 알아볼 수 있습니다.

  • Bearer 토큰: 앞선 Google 제공 솔루션이 조직에 적합하지 않으면 Kubernetes 서비스 계정을 사용하여 인증을 설정하고 Bearer 토큰을 사용하여 로그인할 수 있습니다. 자세한 내용은 Bearer 토큰을 사용하여 설정을 참조하세요.

필요한 역할 부여

콘솔에 대한 액세스는 Identity and Access Management(IAM)로 제어됩니다. 콘솔에서 클러스터 수명 주기를 관리하려면 프로젝트 소유자 외의 사용자에게 일부 IAM 역할을 부여해야 합니다.

  • 사용자가 콘솔에 액세스할 수 있으려면 최소한 다음 역할을 부여해야 합니다.

    • roles/container.viewer: 이 역할을 통해 사용자는 콘솔에서 GKE 클러스터 페이지와 기타 컨테이너 리소스를 볼 수 있습니다. 이 역할에 포함된 권한에 대한 자세한 내용이나 읽기 및 쓰기 권한이 있는 역할을 부여하려면 IAM 문서의 Kubernetes Engine 역할을 참조하세요.

    • roles/gkehub.viewer: 이 역할을 통해 사용자는 콘솔에서 Google Cloud 외부에 있는 클러스터를 볼 수 있습니다. 이 역할에 포함된 권한에 대한 자세한 내용이나 읽기 및 쓰기 권한이 있는 역할을 부여하려면 IAM 문서의 GKE 허브 역할을 참조하세요.

  • 사용자가 콘솔에서 클러스터 수명 주기를 관리할 수 있도록 허용하려면 roles/gkeonprem.admin IAM 역할을 부여합니다. roles/gkeonprem.admin 역할은 사용자에게 콘솔에서 클러스터 수명 주기를 관리하는 데 사용하는 GKE On-Prem API에 대한 관리 액세스 권한을 제공합니다. 이 역할에 포함된 권한에 대한 자세한 내용은 IAM 문서의 GKE On-Prem 역할 을 참조하세요.

다음 명령어는 콘솔에서 클러스터 수명 주기를 관리하기 위해 필요한 최소 역할을 부여하는 방법을 보여줍니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=MEMBER \
    --role=roles/container.viewer

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkehub.viewer

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=MEMBER \
    --role=roles/gkeonprem.admin

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 Fleet 호스트 프로젝트입니다. bmctl을 사용하여 생성된 클러스터의 경우 사용자 클러스터 구성 파일의 gkeConnect 섹션에서 구성한 프로젝트입니다. 콘솔에서 생성된 클러스터의 경우 클러스터가 생성될 때 선택된 프로젝트입니다.

  • MEMBERuser:emailID 형식의 사용자 이메일 주소입니다(예: user:alice@example.com).

콘솔에서 클러스터 수명 주기 관리 사용 설정

표준 도구(콘솔, gcloud CLI 또는 Terraform)를 사용하여 생성된 관리자 및 사용자 클러스터는 GKE On-Prem API에 자동으로 등록되며 이를 통해 콘솔에서 클러스터 수명 주기 관리 작업을 수행할 수 있습니다. Google Distributed Cloud 1.16 이상에서 bmctl을 사용하여 사용자 및 관리자 클러스터를 만들면 기본적으로 GKE On-Prem API에 등록됩니다. GKE On-Prem API에 클러스터를 등록해야 하는 경우 GKE On-Prem API에서 관리할 클러스터 구성의 단계를 따릅니다.

Google ID 인증 설정

사용자가 Google ID를 사용하여 클러스터에 로그인할 수 있게 하려면 다음을 구성해야 합니다.

  • 콘솔에서 GKE 클러스터 페이지의 클러스터를 보고 상호작용할 수 있으려면 사용자에게 특정 Identity and Access Management(IAM) 역할이 필요합니다.

  • Connect GatewayConnect Agent를 사용하여 클러스터의 Kubernetes API 서버에 액세스하는 데 필요한 Kubernetes 역할 기반 액세스 제어(RBAC) 정책에 사용자를 추가해야 합니다.

RBAC 승인 구성

각 클러스터의 Kubernetes API 서버는 콘솔에서 들어오는 요청을 승인할 수 있어야 합니다. 승인을 구성하려면 각 클러스터에서 사용자에 대해 Kubernetes 역할 기반 액세스 제어 (RBAC) 정책을 구성해야 합니다. 다음과 같은 경우 Google 계정이 사용자 클러스터에 대한 전체 액세스 권한이 있는 관리자로 추가됩니다.

  • 콘솔에서 사용자 클러스터를 만들었습니다.

  • gcloud CLI를 사용하여 사용자 클러스터를 만들었으며, Google 계정이 클러스터 만들기 명령어의 --admin-users 플래그로 지정되었습니다.

  • Terraform을 사용하여 사용자 클러스터를 만들었으며 Google 계정이 authorization.admin_users.username 필드에 지정되었습니다.

  • bmctl을 사용하여 사용자 클러스터를 만들고 clusterSecurity.authorization.clusterAdmin.gcpAccounts에서 Google 계정을 구성했습니다.

클러스터가 생성된 후 다른 사용자를 관리자로 추가할 수 있습니다. 다음 방법 중 하나를 사용하여 클러스터에 대한 관리 액세스 권한을 부여할 수 있습니다. 두 가지 서로 다른 gcloud 명령어가 제공됩니다.

  • gcloud ... generate-gateway-rbac 명령어를 실행하려면 클러스터의 kubeconfig 및 컨텍스트(일반적으로 관리자 워크스테이션에만 있음)에 대한 액세스가 필요하므로 관리자 워크스테이션에서 실행해야 합니다. generate-gateway-rbac 명령어를 사용하여 RBAC 정책을 맞춤설정할 수 있지만 콘솔의 클러스터 세부정보 섹션에서 사용자 이메일 주소가 관리자로 표시되지 않습니다.

  • gcloud ... update 명령어는 관리자 워크스테이션 또는 GKE On-Prem API에 액세스할 수 있는 모든 컴퓨터에서 실행할 수 있습니다.

Google Cloud 콘솔에서 관리자 클러스터를 만든 경우 클러스터에 대한 읽기 전용 액세스 권한이 부여됩니다. clusterrole/cluster-admin 역할을 부여받으려면 해당 역할이 있는 다른 사용자가 gcloud ... generate-gateway-rbac 명령어를 사용하여 추가해야 합니다.

generate-gateway-rbac

사용자에게 RBAC 정책을 적용하려면 관리 워크스테이션에서 다음 단계를 수행합니다.

  1. 다음 명령어를 실행하여 구성요소를 업데이트합니다(필요한 경우).

    gcloud components update
    
  2. 사용자 및 서비스 계정에 대해 RBAC 정책을 생성하고 클러스터에 적용합니다.

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=MEMBERSHIP_NAME \
        --role=ROLE \
        --users=USERS \
        --project=PROJECT_ID \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT \
        --apply
    

    다음을 바꿉니다.

    • MEMBERSHIP_NAME: 이 Fleet에서 클러스터를 고유하게 나타내기 위해 사용되는 이름입니다. Google Distributed Cloud에서 멤버십 이름과 클러스터 이름은 동일합니다.
    • ROLE: 클러스터에서 사용자에게 부여하려는 Kubernetes 역할입니다. 사용자에게 클러스터와 모든 네임스페이스의 모든 리소스에 대한 전체 액세스 권한을 부여하려면 clusterrole/cluster-admin을 지정합니다. 읽기 전용 액세스 권한을 제공하려면 clusterrole/view를 지정합니다. 액세스를 제한하려면 커스텀 역할(예: role/mynamespace/namespace-reader)을 만듭니다. 명령어를 실행하기 전에 이미 커스텀 역할이 있어야 합니다.
    • USERS: 권한을 부여할 사용자(사용자 계정 또는 서비스 계정)의 이메일 주소이며 쉼표로 구분된 목록으로 표시됩니다. 예를 들면 --users=222larabrown@gmail.com,test-acct@test-project.iam.gserviceaccount.com입니다.
    • PROJECT_ID: Fleet 호스트 프로젝트의 프로젝트 ID입니다.
    • KUBECONFIG_PATH: 클러스터 항목이 포함된 kubeconfig 파일의 로컬 경로입니다.
    • KUBECONFIG_CONTEXT: kubeconfig 파일에 표시되는 클러스터의 클러스터 컨텍스트입니다. kubectl config current-context를 실행하여 명령줄에서 현재 컨텍스트를 가져올 수 있습니다. 현재 컨텍스트 사용 여부와 관계없이 다음과 같은 명령어를 실행하여 클러스터에 액세스할 수 있는지 확인합니다.

      kubectl get namespaces \
        --kubeconfig=KUBECONFIG_PATH \
        --context=KUBECONFIG_CONTEXT
      

    gcloud container fleet memberships generate-gateway-rbac를 실행한 후에는 출력의 끝에 다음과 같은 내용이 표시되며 가독성을 위해 잘립니다.

    Validating input arguments.
    Specified Cluster Role is: clusterrole/cluster-admin
    Generated RBAC policy is:
    --------------------------------------------
    ...
    Applying the generate RBAC policy to cluster with kubeconfig: /usr/local/google/home/foo/.kube/config, context: kind-kind
    Writing RBAC policy for user: foo@example.com to cluster.
    Successfully applied the RBAC policy to cluster.
    

    커넥트 게이트웨이를 통해 클러스터에 액세스하는 데 사용되는 컨텍스트입니다.

    generate-gateway-rbac 명령어에 대한 자세한 내용은 gcloud CLI 참조 가이드를 참조하세요.

update

  1. 다음 명령어를 실행하여 구성요소를 업데이트합니다.

    gcloud components update
    
  2. clusterrole/cluster-admin 역할을 부여해야 하는 각 사용자에 대해 --admin-users 플래그를 포함하고 다음 명령어를 실행합니다. 단일 플래그에 여러 사용자를 지정할 수 없습니다. 이 명령어는 명령어에 지정된 사용자로 권한 부여 목록을 덮어쓰므로 명령어에 Google 계정을 포함해야 합니다.

    gcloud container bare-metal clusters update USER_CLUSTER_NAME \
      --admin-users YOUR_GOOGLE_ACCOUNT \
      --admin-users ADMIN_GOOGLE_ACCOUNT_1 \
    

이 명령어는 Kubernetes clusterrole/cluster-admin 역할을 부여하는 것 외에도 사용자가 Connect 게이트웨이를 통해 클러스터에 액세스하는 데 필요한 RBAC 정책을 부여합니다.

bmctl

사용자에게 RBAC 정책을 적용하려면 관리 워크스테이션에서 다음 단계를 수행합니다.

  1. clusterSecurity.authorization 섹션을 클러스터 구성 파일에 추가합니다. 사용자 이메일 주소와 클러스터를 관리해야 하는 다른 사용자의 이메일 주소를 지정합니다. 예를 들면 다음과 같습니다.

    ...
    clusterSecurity:
      authorization:
        clusterAdmin:
          gcpAccounts: [alex@example.com,hao@example.com,sasha@example.com]
    ...
    
  2. 클러스터를 업데이트합니다.

    bmctl update cluster \
        -c CLUSTER_NAME \
        --kubeconfig=KUBECONFIG
    

    다음과 같이 변경하세요.

    • CLUSTER_NAME을 업데이트하려는 클러스터 이름으로 바꿉니다.
    • 클러스터가 자체 관리 클러스터(예: 관리자 또는 독립형 클러스터)인 경우 KUBECONFIG를 클러스터의 kubeconfig 파일 경로로 바꿉니다. 클러스터가 사용자 클러스터인 경우 KUBECONFIG관리자 클러스터의 kubeconfig 파일 경로로 바꿉니다.

콘솔

사용자에게 RBAC 정책을 적용하려면 콘솔에서 다음 단계를 수행합니다.

  1. 콘솔에서 Google Kubernetes Engine 클러스터 개요 페이지로 이동합니다.

    GKE 클러스터로 이동

  2. 사용자 클러스터가 있는 Google Cloud 프로젝트를 선택합니다.

  3. 클러스터 목록에서 클러스터 이름을 클릭한 다음 세부정보 패널에서 세부정보 보기를 클릭합니다.

  4. 승인 섹션에서 관리자 필드를 클릭하고 각 사용자의 이메일 주소를 입력합니다.

  5. 사용자 추가를 마쳤으면 완료를 클릭합니다.

추가 정보