Share via


Azure Kubernetes Service (AKS) での Azure タグの使用

Azure Kubernetes Service (AKS) では、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
    • Load Balancer
    • ネットワーク セキュリティ グループ
    • 仮想ネットワーク
    • AKS マネージド kubelet MSI
    • AKS マネージド アドオン MSI
    • "プライベート クラスター" に関連付けられているプライベート DNS ゾーン
    • "プライベート クラスター" に関連付けられているプライベート エンドポイント
  • ノード リソース グループ

注意

Azure プライベート DNS でサポートされるタグは、15 個のみです。 詳細については、「タグ リソース」を参照してください。

AKS クラスター上のタグを作成または更新する

新しい AKS クラスターを作成する

重要

新しいクラスターを作成するときに既存のリソース (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 --resource-group myResourceGroup --name myAKSCluster --query '[tags]'
    

    次の出力例は、クラスターに適用されているタグを示しています。

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

既存の AKS クラスターを更新する

重要

az aks update コマンドを使用してクラスターにタグを設定すると、タグのセットが上書きされます。 たとえば、クラスターにタグ dept=ITcostcenter=9999 が設定されている場合に、タグ team=alpha および costcenter=1234az aks update を使用すると、タグの新しいリストは team=alpha および costcenter=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 --resource-group myResourceGroup --name 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 --resource-group myResourceGroup --name myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    次の出力例は、ノード プールに適用されているタグを示しています。

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

既存のノード プールを更新する

重要

az aks nodepool update コマンドを使用してノード プールにタグを設定すると、タグのセットが上書きされます。 たとえば、ご利用のノード プールにタグ abtest=a および costcenter=5555 が設定されている場合に、az aks nodepool update をタグ appversion=0.0.2 および costcenter=4444 と一緒に使用すると、タグの新しいリストは、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 --resource-group myResourceGroup --name myAKSCluster --query 'agentPoolProfiles[].{nodepoolName:name,tags:tags}'
    

    次の出力例は、ノード プールに適用されているタグを示しています。

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

Kubernetes を使用してタグを追加する

重要

Kubernetes を使用してファイル、ディスク、およびパブリック IP にタグを設定すると、タグのセットが更新されます。 たとえば、ディスクにタグ dept=IT および costcenter=5555 が設定されている場合に、Kubernetes を使用してタグ team=beta および costcenter=3333 を設定すると、タグの新しいリストは dept=ITteam=beta、および costcenter=3333 となります。

Kubernetes を介してタグに行った更新は、Kubernetes を通して設定した値を保持します。 たとえば、Kubernetes によってディスクにタグ dept=IT および costcenter=5555 が設定されている場合に、ポータルを使用してタグ team=beta および costcenter=3333 を設定すると、タグの新しいリストは dept=ITteam=beta、および costcenter=5555 となります。 その後、Kubernetes を使用してディスクを削除した場合も、ディスクはタグ team=beta を保持します。

Kubernetes マニフェストを使用して、パブリック IP、ディスク、およびファイルに Azure タグを適用できます。

  • パブリック IP の場合は、たとえば注釈で、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:
      ...
    
  • ファイルとディスクの場合は、parameters の下に tags を使用します。 次に例を示します。

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

次のステップ

AKS クラスターでのラベル使用の詳細を確認してください。