AKS(Azure Kubernetes Service)에서 Azure 태그 사용

AKS(Azure Kubernetes Service)를 사용하면 Azure Resource Manager 및 Azure CLI를 사용하여 AKS 클러스터 및 관련 리소스에 Azure 태그를 설정할 수 있습니다. Kubernetes 매니페스트를 사용하여 특정 리소스에 대한 Azure 태그를 설정할 수도 있습니다. Azure 태그는 차지백과 같은 특정 비즈니스 프로세스에 유용한 추적 리소스입니다.

이 문서에서는 AKS 클러스터 및 관련 리소스에 대한 Azure 태그를 설정하는 방법을 설명합니다.

시작하기 전에

시작하기 전에 다음 정보를 검토합니다.

  • AKS 클러스터에 설정된 태그는 클러스터와 관련된 모든 리소스에 적용되지만 노드 풀에는 적용되지 않습니다. 이 작업은 기존 키의 값을 덮어씁니다.
  • 노드 풀에 설정된 태그는 해당 노드 풀과 관련된 리소스에만 적용됩니다. 이 작업은 기존 키의 값을 덮어씁니다. 나머지 클러스터 및 다른 노드 풀에 대한 리소스를 포함하여 해당 노드 풀 외부의 리소스는 영향을 받지 않습니다.
  • 공용 IP, 파일 및 디스크에는 Kubernetes 매니페스트를 통해 Kubernetes에서 설정한 태그가 있을 수 있습니다. 이러한 방식으로 설정된 태그는 나중에 다른 메서드를 사용하여 업데이트하더라도 Kubernetes 값을 유지 관리합니다. Kubernetes를 통해 공용 IP, 파일 또는 디스크를 제거하면 Kubernetes에서 설정한 모든 태그가 제거됩니다. Kubernetes에서 추적하지 않는 리소스의 태그는 영향을 받지 않습니다.

필수 조건

  • Azure CLI 버전 2.0.59 이상 az --version를 실행하여 버전을 찾습니다. 버전을 설치하거나 업데이트해야 하는 경우 Azure CLI 설치를 참조하세요.
  • Kubernetes 버전 1.20 이상

제한 사항

  • Azure 태그에는 대/소문자를 구분하지 않는 키가 있으며, 키를 선택하여 태그를 검색하는 경우와 비슷한 작업에 사용됩니다. 이 경우 지정된 키가 있는 태그는 대/소문자 구분에 관계없이 업데이트되거나 검색됩니다. 태그 값은 대/소문자를 구분합니다.
  • AKS에서 여러 태그가 동일한 키로 설정되고 대/소문자가 다른 경우 태그는 사전순으로 사용됩니다. 예를 들어 {"Key1": "val1", "kEy1": "val2", "key1": "val3"}Key1val1이 설정됩니다.
  • 공유 리소스의 경우 태그는 자체 리소스 사용량의 분할을 확인할 수 없습니다.

Azure 태그 및 AKS 클러스터

--tags 매개 변수를 사용하여 AKS 클러스터를 만들거나 업데이트할 때 지정한 Azure 태그가 다음과 같이 할당됩니다.

  • AKS 클러스터 자체 및 관련 리소스:
    • 경로 테이블
    • 공용 IP
    • 부하 분산 장치
    • 네트워크 보안 그룹
    • 가상 네트워크
    • AKS 관리형 kubelet msi
    • AKS 관리형 추가 기능 msi
    • 프라이빗 클러스터와 연결된 프라이빗 DNS 영역
    • 프라이빗 클러스터와 연결된 프라이빗 엔드포인트
  • 노드 리소스 그룹

참고 항목

Azure 프라이빗 DNS는 15개의 태그만 지원합니다. 자세한 내용은 태그 리소스를 참조하세요.

AKS 클러스터에서 태그 만들기 또는 업데이트

새 AKS 클러스터 만들기

Important

IP 주소 또는 경로 테이블과 같은 새 클러스터를 만들 때 기존 리소스를 사용하는 경우 az aks create 명령은 태그 세트를 덮어씁니다. 나중에 클러스터를 삭제하면 클러스터에서 설정한 모든 태그가 제거됩니다.

  1. --tags 매개 변수와 함께 az aks create 명령을 사용하여 클러스터를 만들고 Azure 태그를 할당합니다.

    참고 항목

    초기 노드 풀, 가상 머신 확장 집합 및 초기 노드 풀과 연결된 각 가상 머신 확장 집합 인스턴스에 태그를 설정하기 위해 --nodepool-tags 매개 변수를 설정할 수도 있습니다.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags dept=IT costcenter=9999 \
        --generate-ssh-keys
    
  2. az aks show 명령을 사용하여 태그가 클러스터 및 관련 리소스에 적용되었는지 확인합니다.

    az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
    

    다음 예제 출력은 클러스터에 적용된 태그를 보여 줍니다.

    {
      "clusterTags": {
        "dept": "IT",
        "costcenter": "9999"
      }
    }
    

기존 AKS 클러스터 업데이트

Important

az aks update 명령을 사용하여 클러스터에서 태그를 설정하면 태그 세트를 덮어씁니다. 예를 들어 클러스터에 dept=ITcostcenter=9999 태그가 있고 team=alphacostcenter=1234 태그와 함께 az aks update를 사용하는 경우 태그의 새 목록은 team=alphacostcenter=1234가 됩니다.

  1. --tags 매개 변수와 함께 az aks update 명령을 사용하여 기존 클러스터의 태그를 업데이트합니다.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --tags team=alpha costcenter=1234
    
  2. az aks show 명령을 사용하여 태그가 클러스터 및 관련 리소스에 적용되었는지 확인합니다.

    az aks show -g myResourceGroup -n myAKSCluster --query '[tags]'
    

    다음 예제 출력은 클러스터에 적용된 태그를 보여 줍니다.

    {
      "clusterTags": {
        "team": "alpha",
        "costcenter": "1234"
      }
    }
    

노드 풀에 태그 추가

AKS 클러스터의 새 노트 풀 또는 기존 노드 풀에 Azure 태그를 적용할 수 있습니다. 노드 풀에 적용되는 태그는 노드 풀 내의 각 노드에도 적용되며 업그레이드를 통해 유지됩니다. 태그는 스케일 아웃 작업 중에 노드 풀에 추가되는 새 노드에도 적용됩니다. 태그를 추가하면 정책 추적 또는 비용 예측과 같은 작업에 도움이 됩니다.

--tags 매개 변수를 사용하여 노드 풀을 만들거나 업데이트하면 지정한 태그가 다음 리소스에 할당됩니다.

  • 노드 풀입니다.
  • 가상 머신 확장 집합 및 노드 풀과 연결된 각 가상 머신 확장 집합 인스턴스입니다.

새 노드 풀 만들기

  1. --tags 매개 변수와 함께 az aks nodepool add 명령을 사용하여 Azure 태그가 있는 노드 풀을 만듭니다.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --node-count 1 \
        --tags abtest=a costcenter=5555 \
        --no-wait
    
  2. az aks show 명령을 사용하여 태그가 노드 풀에 적용되었는지 확인합니다.

    az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    다음 예제 출력은 노드 풀에 적용된 태그를 보여 줍니다.

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "abtest": "a",
          "costcenter": "5555"
        }
      }
    ]
    

기존 노드 풀 업데이트

Important

az aks nodepool update 명령을 사용하여 노드 풀에 태그를 설정하면 태그 세트를 덮어씁니다. 예를 들어 노드 풀에 abtest=acostcenter=5555 태그가 있고 appversion=0.0.2costcenter=4444 태그와 함께 az aks nodepool update를 사용하는 경우 새 태그 목록은 appversion=0.0.2costcenter=4444입니다.

  1. az aks nodepool update 명령을 사용하여 Azure 태그로 노드 풀을 업데이트합니다.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name tagnodepool \
        --tags appversion=0.0.2 costcenter=4444 \
        --no-wait
    
  2. az aks show 명령을 사용하여 태그가 노드 풀에 적용되었는지 확인합니다.

    az aks show -g myResourceGroup -n myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    다음 예제 출력은 노드 풀에 적용된 태그를 보여 줍니다.

    [
      {
        "nodepoolName": "nodepool1",
        "tags": null
      },
      {
        "nodepoolName": "tagnodepool",
        "tags": {
          "appversion": "0.0.2",
          "costcenter": "4444"
        }
      }
    ]
    

Kubernetes를 사용하여 태그 추가

Important

Kubernetes를 사용하여 파일, 디스크 및 공용 IP에 태그를 설정하면 태그 세트가 업데이트됩니다. 예를 들어 디스크에 dept=ITcostcenter=5555 태그가 있고 Kubernetes를 사용하여 team=betacostcenter=3333 태그를 설정하는 경우 새 태그 목록은 dept=IT, team=betacostcenter=3333입니다.

Kubernetes를 통해 태그를 업데이트하면 Kubernetes를 통해 설정된 값이 유지됩니다. 예를 들어 디스크에 Kubernetes에서 설정한 dept=ITcostcenter=5555 태그가 있고 포털을 사용하여 team=betacostcenter=3333 태그를 설정하는 경우 새 태그 목록은 dept=IT, team=betacostcenter=5555입니다. 그런 다음 Kubernetes를 통해 디스크를 제거하면 디스크에 team=beta 태그가 생깁니다.

Kubernetes 매니페스트를 사용하여 공용 IP, 디스크 및 파일에 Azure 태그를 적용할 수 있습니다.

  • 공용 IP의 경우 annotations 아래의 service.beta.kubernetes.io/azure-pip-tags를 사용합니다. 예시:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-tags: costcenter=3333,team=beta
    spec:
      ...
    
  • 파일 및 디스크의 경우 매개 변수 아래의 태그를 사용합니다. 예시:

    ---
    apiVersion: storage.k8s.io/v1
    ...
    parameters:
      ...
      tags: costcenter=3333,team=beta
    ...
    

다음 단계

AKS 클러스터에서 레이블 사용에 대해 자세히 알아봅니다.