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

이 문서에서는 VMware용 Google Distributed Cloud 소프트웨어로 만든 클러스터를 Google Cloud 콘솔에서 관리하는 방법을 설명합니다. 여기에는 클러스터에 로그인하여 해당 워크로드를 볼 수 있는 것과 같은 기본 관리뿐만 아니라 클러스터를 업그레이드, 업데이트 및 삭제할 수 있도록 클러스터 수명 주기 관리를 사용 설정하는 방법이 포함됩니다.

Fleet 구성원 및 콘솔

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

Google Distributed Cloud에서 관리자 클러스터는 클러스터 구성 파일의 gkeConnect 섹션에 Fleet 호스트 프로젝트를 지정하여 생성 시 Fleet에 등록됩니다. Google Distributed Cloud는 해당 정보를 사용하여 클러스터를 지정된 Fleet 프로젝트에 등록합니다. 등록에 실패하면 gkectl update credentials register를 실행하여 등록을 다시 시도할 수 있습니다.

등록을 다시 시도할 때 connect-register 서비스 계정 키를 업데이트할 필요가 없습니다. 즉, 원래 connect-register 서비스 계정을 계속 사용할 수 있습니다. 명령어에 대한 자세한 내용은 서비스 계정 키 순환을 참조하세요.

Google Distributed Cloud에서 사용자 클러스터는 생성 시 Fleet에 등록됩니다.

  • gkectl을 사용하여 사용자 클러스터를 만들 때 클러스터 구성 파일의 gkeConnect 섹션에서 Fleet 호스트 프로젝트를 지정합니다. Google Distributed Cloud는 해당 정보를 사용하여 클러스터를 지정된 Fleet 프로젝트에 등록합니다.

  • 표준 도구(콘솔, Google Cloud CLI 또는 Terraform)를 사용하여 사용자 클러스터를 만들면 클러스터는 자동으로 지정한 프로젝트의 Fleet 구성원이 됩니다.

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

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

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

등록된 클러스터 보기

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

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

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

    GKE 클러스터로 이동

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

    • 유형 열에 vm Google Distributed Cloud가 표시되는 경우 클러스터는 GKE On-Prem API에서 관리됩니다.

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

클러스터에 대한 세부정보를 보려면 사용자가 클러스터에 로그인하고 인증해야 합니다. 이렇게 하려면 다음이 필요합니다.

인증 설정

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

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

    Google ID로 로그인은 특히 최소 설치로 Google Distributed Cloud를 시도하는 경우 콘솔에서 인증을 위한 가장 간단한 접근 방식이므로 아래의 Google ID 인증 설정에서 이를 설정하는 방법을 자세히 설명합니다.

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

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

필요한 역할 부여

콘솔에 대한 액세스는 Identity and Access Management(IAM)로 제어됩니다. 이러한 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 FLEET_HOST_PROJECT_ID \
    --member=MEMBER \
    --role=roles/container.viewer

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

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

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

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

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

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

표준 도구(콘솔, gcloud CLI 또는 Terraform)를 사용하여 생성된 사용자 클러스터는 GKE On-Prem API에 자동으로 등록되며 이를 통해 콘솔에서 클러스터 수명 주기 관리 태스크를 수행할 수 있습니다. gkectl을 사용하여 만든 사용자 클러스터에 이 기능을 사용 설정하려면 GKE On-Prem API에서 관리할 사용자 클러스터 구성의 단계를 따릅니다. 클러스터 수명 주기 관리가 사용 설정되면 콘솔에서 다음 작업을 수행할 수 있습니다.

Google ID 인증 설정

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

RBAC 승인 구성

각 클러스터의 Kubernetes API 서버는 콘솔에서 들어오는 요청을 승인할 수 있어야 합니다. 승인을 구성하려면 각 클러스터에서 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 구성해야 합니다.

표준 도구를 사용하여 사용자 클러스터를 만든 경우 클러스터에 대한 전체 관리 액세스 권한을 부여하는 적절한 RBAC 정책이 이미 부여되었을 수 있습니다. GKE On-Prem API는 다음과 같은 경우에 Google 계정을 관리자로 자동 추가합니다.

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

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

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

gkectl을 사용하여 생성된 사용자 클러스터는 콘솔을 사용하여 클러스터를 관리하기 위한 RBAC 정책을 부여하지 않습니다. 클러스터가 생성된 후 자신을 직접 추가해야 합니다. 클러스터를 만드는 데 사용한 도구와 관계 없이 클러스터가 생성된 후에 다른 사용자를 관리자로 추가할 수 있습니다.

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

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

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

generate-gateway-rbac

  1. 관리자 워크스테이션에 연결합니다.

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

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

    gcloud container fleet memberships generate-gateway-rbac  \
        --membership=MEMBERSHIP_NAME \
        --role=ROLE \
        --users=USERS \
        --project=FLEET_HOST_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=foo@example.com,test-acct@test-project.iam.gserviceaccount.com입니다.
    • FLEET_HOST_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.
    

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

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

update

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

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

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --admin-users YOUR_GOOGLE_ACCOUNT \
      --admin-users ADMIN_GOOGLE_ACCOUNT_1 \
    

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

콘솔

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

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

    GKE 클러스터로 이동

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

  3. 클러스터 목록에서 클러스터 이름을 클릭하여 세부정보를 표시합니다.

  4. 승인 섹션에서 관리자 수정 버튼을 클릭합니다.

  5. 승인 수정 패널에서 클러스터 관리자로 추가할 사용자의 이메일 주소를 입력합니다. 관리자를 더 추가하려면 관리자 추가를 클릭합니다.

  6. 관리자 추가를 마쳤으면 변경사항 저장을 클릭합니다.

추가 정보