이 페이지에서는 GKE 연결 클러스터에서 태그를 만들고 관리하는 방법을 설명합니다.
개요
태그는 Google Cloud내에서 리소스에 연결할 수 있는 키-값 쌍입니다. 태그를 사용하면 리소스에 특정 태그가 있는지 여부에 따라 정책을 조건부로 허용하거나 거부할 수 있습니다.
플랫폼 관리자로서 태그 사용 사례는 클러스터에 특정 태그가 있는지 여부에 따라 Identity and Access Management(IAM) 역할을 조건부로 부여하는 것일 수 있습니다. 예를 들어 계약업체 사용자에게 일반적으로 정규직 직원만 사용할 수 있는 특정 클러스터에 액세스할 수 있도록 Identity and Access Management 역할을 자동으로 부여하도록 GKE를 구성할 수 있습니다.
태그를 만든 후에는 태그 바인딩을 사용하여 Google Cloud 리소스에 태그를 키-값 쌍으로 연결할 수 있습니다. 각 키에 대해 하나의 값을 하나의 리소스에 연결할 수 있습니다. 예를 들어 env:dev를 클러스터에 연결한 경우에는 env:prod 또는 env:test를 연결할 수 없습니다. 리소스마다 태그를 최대 50개까지 연결할 수 있습니다.
GKE 연결 클러스터에는 다음 표의 설명대로 리소스에 주석을 다는 여러 가지 방법이 있습니다.
| 특수효과 유형 | 수준 | 설명 | 예 |
|---|---|---|---|
| 태그 | GKE 클러스터 |
태그를 기준으로 정책을 조건부로 허용하거나 거부합니다. 자세한 내용은 Resource Manager 문서의 태그 개요를 참조하세요. |
계약업체인 사용자에게 일반적으로 정규직 직원만 사용할 수 있는 특정 클러스터에 대한 액세스 권한을 자동으로 부여합니다. |
| GKE 클러스터 라벨 | GKE 클러스터 |
GKE 리소스를 구성하여 사용량과 청구를 추적합니다. 자세한 내용은 클러스터 라벨을 참조하세요. |
조직의 특정 비용 센터 또는 팀이 소유한 클러스터를 구분합니다. |
| Kubernetes 라벨 | GKE 클러스터 |
클러스터 구성요소 및 리소스를 서로 연결하고 리소스 수명 주기를 관리합니다. 자세한 내용은 Kubernetes 라벨 및 선택기를 참조하세요. |
워크로드가 특정 라벨로 노드에 예약되어야 합니다. |
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치했으면
gcloud components update명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
태그를 사용하려면 다음 IAM 역할이 있어야 합니다.
roles/resourcemanager.tagAdminroles/resourcemanager.tagUser
이러한 역할에서 부여한 권한에 대한 자세한 내용은 필수 권한을 참조하세요.
태그 키 및 값 만들기
GKE 리소스에 태그를 연결하려면 먼저 태그를 만들고 값을 구성해야 합니다. 태그 키와 값을 만들려면 Resource Manager 문서의 태그 만들기 및 태그 값 추가를 참조하세요.
클러스터에 태그 연결
올바른 권한이 있으면 Google Cloud CLI, Google Cloud 콘솔 또는 Tags API를 사용하여 태그를 기존 클러스터에 연결할 수 있습니다.
gcloud
태그를 클러스터에 연결하기 위해 태그 바인딩을 만들려면 다음 명령어를 실행합니다.
gcloud resource-manager tags bindings create \
--tag-value=TAG_VALUE_ID \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
다음을 바꿉니다.
TAG_VALUE_ID: 연결할 태그 값의 영구 ID 또는 네임스페이스화된 이름. 예를 들면tagValues/4567890123입니다. 태그 식별자에 대한 자세한 내용은 태그 정의 및 식별자를 참조하세요.RESOURCE_ID: 클러스터의 전체 리소스 이름(예://container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/CLUSTER_NAME)리소스 ID에서 각 항목의 의미는 다음과 같습니다.
PROJECT_ID: Google Cloud 프로젝트 IDCLUSTER_NAME: 클러스터 이름입니다.
CLUSTER_LOCATION: 클러스터를 관리하는 Google Cloud위치의 이름입니다.
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.
메타데이터 섹션에서 태그 옆의 태그 수정을 클릭합니다.
조직이 태그 패널에 표시되지 않으면 범위 선택을 클릭합니다. 조직을 선택하고 열기를 클릭합니다.
태그 패널에서 태그 추가를 선택합니다.
목록에서 연결할 태그의 키를 선택합니다. 키워드를 입력하여 목록을 필터링할 수 있습니다.
목록에서 연결할 태그의 값을 선택합니다. 키워드를 입력하여 목록을 필터링할 수 있습니다.
저장을 클릭합니다.
확인 대화상자에서 확인을 클릭하여 태그를 연결합니다.
태그가 업데이트되었음을 확인하는 알림이 표시됩니다.
API
리소스에 태그를 연결하려면 먼저 태그 값과 리소스의 영구 ID가 포함된 태그 binding의 JSON 표현을 만들어야 합니다. 태그 binding의 형식에 대한 자세한 내용은 TagBinding 참조를 확인하세요.
클러스터가 있는 엔드포인트에서 tagBindings.create 메서드를 사용합니다.
POST https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
LOCATION을 클러스터가 있는 Google Cloud위치로 바꿉니다(예: us-central1).
JSON 요청 본문:
{
"parent": "RESOURCE_ID",
"tagValue": "TAG_VALUE_ID"
}
다음을 바꿉니다.
RESOURCE_ID: 클러스터의 전체 리소스 이름(예://container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/CLUSTER_NAME)리소스 ID에서 각 항목의 의미는 다음과 같습니다.
PROJECT_ID: Google Cloud 프로젝트 IDCLUSTER_NAME: 클러스터 이름
TAG_VALUE_ID: 연결할 태그 값의 영구 ID 또는 네임스페이스화된 이름. 예를 들면tagValues/4567890123입니다. 태그 식별자에 대한 자세한 내용은 태그 정의 및 식별자를 참조하세요.
출력은 다음과 비슷합니다.
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.TagBinding",
"name": "tagBindings///container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/attachedClusters/CLUSTER_NAME/tagValues/TAG_VALUE_ID",
"parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/attachedClusters/CLUSTER_NAME",
"tagValue": "TAG_VALUE_ID"
}
}
클러스터에 연결된 태그 나열
gcloud CLI, Google Cloud 콘솔 또는 Tags API를 사용하여 클러스터에 연결된 태그를 표시할 수 있습니다.
gcloud
클러스터에 연결된 태그 바인딩 목록을 가져오려면 다음 명령어를 실행합니다.
gcloud resource-manager tags bindings list \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
다음을 바꿉니다.
RESOURCE_ID: 클러스터의 전체 리소스 이름(예://container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/CLUSTER_NAME)리소스 ID에서 각 항목의 의미는 다음과 같습니다.
PROJECT_ID: Google Cloud 프로젝트 IDCLUSTER_NAME: 클러스터 이름입니다.
CLUSTER_LOCATION: 클러스터가 있는 Google Cloud위치로 바꿉니다.
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 목록에서 보려는 클러스터의 이름을 클릭합니다.
메타데이터 섹션의 태그 옆에서 현재 연결된 태그 값을 찾습니다.
API
클러스터의 태그 바인딩 목록을 가져오려면 클러스터가 있는 엔드포인트에서 tagBindings.list 메서드를 사용합니다.
GET https://LOCATION-cloudresourcemanager.googleapis.com/v3/tagBindings
JSON 요청 본문:
{
"parent": RESOURCE_ID,
}
다음을 바꿉니다.
RESOURCE_ID: 클러스터의 전체 리소스 이름(예://container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/CLUSTER_NAME)리소스 ID에서 각 항목의 의미는 다음과 같습니다.
PROJECT_ID: Google Cloud 프로젝트 IDCLUSTER_NAME: 클러스터 이름
출력은 다음과 비슷합니다.
"tagBindings": [
{
"name": "tagBindings/%2F%2Fcontainer.googleapis.com%2Fprojects%2Ftags-bugbash-project%2Flocations%2Fus-central1%2Fclusters%2Ftestcluster/tagValues/758072120217",
"parent": "//container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/attachedClusters/CLUSTER_NAME",
"tagValue": "TAG_VALUE_ID"
}
]
클러스터에서 태그 분리
gcloud CLI,Google Cloud 콘솔 또는 Tags API를 사용하여 클러스터에 연결된 태그 바인딩 리소스를 삭제해 클러스터에서 태그를 분리할 수 있습니다. 태그를 삭제해야 하는 경우 먼저 모든 연결된 리소스에서 분리해야 합니다.
gcloud
클러스터에 연결된 태그 바인딩을 분리하려면 다음 명령어를 실행합니다.
gcloud resource-manager tags bindings delete \
--tag-value=TAG_VALUE_ID \
--parent=RESOURCE_ID \
--location=CLUSTER_LOCATION
다음을 바꿉니다.
TAG_VALUE_ID: 분리할 태그 값의 영구 ID 또는 네임스페이스화된 이름. 예를 들면tagValues/4567890123입니다. 태그 식별자에 대한 자세한 내용은 태그 정의 및 식별자를 참조하세요.RESOURCE_ID: 클러스터의 전체 리소스 이름(예://container.googleapis.com/projects/PROJECT_ID/locations/CLUSTER_LOCATION/attachedClusters/CLUSTER_NAME)리소스 ID에서 각 항목의 의미는 다음과 같습니다.
PROJECT_ID: Google Cloud 프로젝트 IDCLUSTER_NAME: 클러스터 이름입니다.
CLUSTER_LOCATION: 클러스터가 있는 Google Cloud위치로 바꿉니다.
콘솔
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
클러스터 목록에서 수정하려는 클러스터 이름을 클릭합니다.
메타데이터 섹션에서 태그 옆의 태그 수정을 클릭합니다.
태그 패널에서 분리하려는 태그 옆에 있는 항목 삭제를 클릭합니다.
저장을 클릭합니다.
확인 대화상자에서 확인을 클릭하여 태그를 분리합니다.
태그가 업데이트되었음을 확인하는 알림이 표시됩니다.
API
클러스터의 태그 바인딩을 삭제하려면 클러스터가 있는 엔드포인트에서 tagBindings.delete 메서드를 사용합니다.
DELETE https://LOCATION-cloudresourcemanager.googleapis.com/v3/TAG_BINDING_NAME
TAG_BINDING_NAME을 분리할 tagBinding 객체의 전체 리소스 이름으로 바꿉니다. 예를 들면 tagBindings/container.googleapis.com/projects/PROJECT_ID/locations/LOCATION/tagValues/TAG_VALUE_ID입니다.
태그 키 및 태그 값 삭제
태그 키와 값을 삭제하기 전에 태그가 모든 리소스에서 분리되었는지 확인합니다. 그런 다음 태그 삭제를 참조하여 키와 값을 삭제합니다.
Identity and Access Management 조건 및 태그
태그와 IAM 조건을 사용하여 프로젝트 계층 구조 내 사용자에게 역할 바인딩을 조건부로 부여할 수 있습니다. 조건부 역할 바인딩이 있는 IAM 정책이 포함된 클러스터에 연결된 태그를 변경하거나 삭제하면 GKE는 업데이트된 조건을 기반으로 액세스 권한을 다시 평가합니다.
GKE 클러스터를 나열하고 만들기 위한 승인은 개별 클러스터 수준이 아닌 프로젝트 수준에서 확인됩니다. 클러스터 수준 태그와 함께 조건부 IAM 역할 바인딩을 사용하여 특정 클러스터에 대한 액세스를 제한하는 경우, 사용자가 프로젝트에서 클러스터를 나열하거나 만들려고 할 때 오류가 발생할 수 있습니다. 이러한 오류를 방지하려면 상위 프로젝트에 태그를 연결하고 조건부 역할 결합을 사용하여 목록을 부여하거나 액세스 권한을 만듭니다. 역할 및 권한에 대한 자세한 내용은 IAM 역할 참조를 확인하세요.
IAM의 조건부 액세스 권한 부여에 대한 자세한 내용은 Identity and Access Management 조건 및 태그를 참조하세요.
다음 단계
- 태그를 사용한 조직 정책 설정 방법 알아보기
- 태그를 관리하고 리소스에 태그를 연결하는 방법 자세히 알아보기
- 태그를 지원하는 다른 서비스 알아보기
- IAM으로 태그를 사용하는 방법 알아보기