Azure Arc 対応 Kubernetes クラスター拡張機能をデプロイして管理する

Arc 対応 Kubernetes クラスターで拡張機能インスタンスを作成し、更新と構成に関連するオプションなど、必須パラメーターと省略可能なパラメーターを設定できます。 拡張機能インスタンスを表示、一覧表示、更新、削除することもできます。

始める前に、Arc 対応 Kubernetes クラスターの拡張機能に関する概念の概要を読み、現在使用できる拡張機能の一覧を確認してください。

前提条件

  • Azure CLI の最新バージョン。

  • connectedk8sk8s-extension Azure CLI 拡張機能の最新バージョン。 次のコマンドを実行して、これらの拡張機能をインストールします。

    az extension add --name connectedk8s
    az extension add --name k8s-extension
    

    connectedk8s および k8s-extension 拡張機能が既にインストールされている場合は、次のコマンドを使って、それらが最新バージョンに更新されていることを確認します。

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • 少なくとも 1 つのノードのオペレーティング システムとアーキテクチャの種類が linux/amd64 である、既存の Azure Arc 対応 Kubernetes 接続クラスター。 Flux (GitOps) をデプロイする場合は、linux/amd64 ノードなしで ARM64 ベースのクラスターを使用できます。

拡張機能インスタンスの作成

拡張機能の新しいインスタンスを作成するには、k8s-extension create を使用し、必要なパラメーターの値を渡します。

この例では、Azure Arc 対応 Kubernetes クラスターに Azure Monitor Container Insights 拡張機能インスタンスが作成されます。

az k8s-extension create --name azuremonitor-containers  --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

出力:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Pending",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": null,
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

Note

サービスでは、48 時間よりも長く機密情報を保持できません。 Azure Arc 対応 Kubernetes エージェントが 48 時間より長くネットワークに接続しておらず、クラスターに拡張機能を作成するかどうか判断できない場合、拡張機能は Failed 状態に切り替わります。 そうなった場合は、k8s-extension create をもう一度実行して、拡張機能の新しい Azure リソースを作成する必要があります。

Azure Monitor Container Insights は、シングルトン拡張機能です (クラスターごとに 1 つのみ必要)。 Azure Monitor Container Insights (拡張機能なし) の以前の Helm チャート インストールをクリーンアップしてから、拡張機能を介して同じものをインストールする必要があります。 az k8s-extension create を実行する前に、Helm チャートを削除する手順に従ってください。

必須のパラメーター

az k8s-extension create を使って拡張機能インスタンスを作成するときは、次のパラメーターが必要です。

パラメーター名 説明
--name 拡張機能インスタンスの名前
--extension-type クラスターにインストールする拡張機能の種類。 例: Microsoft.AzureMonitor.Containers、microsoft.azuredefender.kubernetes
--scope 拡張機能のインストールのスコープ: cluster または namespace
--cluster-name 拡張機能インスタンスを作成する必要がある Azure Arc 対応 Kubernetes リソースの名前
--resource-group Azure Arc 対応 Kubernetes リソースを含むリソース グループ
--cluster-type 拡張機能インスタンスを作成する必要があるクラスターの種類。 ほとんどのシナリオでは、Azure Arc 対応 Kubernetes クラスターに対応する connectedClusters を使います。

オプション パラメーター

シナリオでの必要に応じて、必須パラメーターと共に、これらの省略可能なパラメーターを 1 つ以上使います。

Note

auto-upgrade-minor-versiontrue に設定することで、拡張機能のインスタンスを最新のマイナー バージョンとパッチ バージョンに自動的にアップグレードできます。または、代わりに --version パラメーターを使って、拡張機能のインスタンスのバージョンを手動で設定することもできます。 最新のセキュリティ パッチと機能を常に使用できるように、マイナー バージョンとパッチ バージョンの自動アップグレードを有効にすることをお勧めします。

メジャー バージョンのアップグレードには破壊的変更が含まれる可能性があるため、拡張機能インスタンスの新しいメジャー バージョンの自動アップグレードはサポートされていません。 いつ新しいメジャー バージョンに拡張機能インスタンスを手動でアップグレードするかは、ユーザーが選択できます。

パラメーター名 説明
--auto-upgrade-minor-version 拡張機能のマイナー バージョンを自動的にアップグレードするかどうかを決定するブール型プロパティ。 既定の設定は true です。 このパラメーターが true に設定されている場合、バージョンは動的に更新されるため、version パラメーターは設定できません。 false に設定すると、パッチ バージョンであってもも、拡張機能は自動的にアップグレードされません。
--version インストールする拡張機能のバージョン (拡張機能インスタンスの固定先の特定バージョン)。 auto-upgrade-minor-versiontrue に設定する場合は、指定しないようにする必要があります。
--configuration-settings 機能を制御するために拡張機能に渡すことができる設定。 これらは、パラメーター名の後で、key=value のペアをスペースで区切って渡します。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-settings-file は使用できません。
--configuration-settings-file 拡張機能に構成設定を渡すために使用される key=value のペアを含む JSON ファイルへのパス。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-settings は使用できません。
--configuration-protected-settings GET API の呼び出しまたは az k8s-extension show コマンドを使って取得できない設定。 通常、機密の設定を渡すために使われます。 これらは、パラメーター名の後で、key=value のペアをスペースで区切って渡します。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-protected-settings-file は使用できません。
--configuration-protected-settings-file 拡張機能に機密の設定を渡すために使われる key=value のペアを含む JSON ファイルへのパス。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-protected-settings は使用できません。
--release-namespace このパラメーターは、リリースを作成する名前空間を示します。 scopecluster に設定されている場合にのみ関連します。
--release-train 拡張機能の作成者は、StablePreview など、さまざまなリリース トレインでバージョンを公開できます。このパラメーターが明示的に設定されていない場合、既定値として Stable が使用されます。
--target-namespace リリースを作成する名前空間を示します。 この拡張機能インスタンスに対して作成されたシステム アカウントのアクセス許可は、この名前空間に制限されます。 scopenamespace に設定されている場合にのみ関連します。

拡張機能の詳細を表示する

現在インストールされている拡張機能インスタンスの詳細を表示するには、k8s-extension show を使用し、必須パラメーターの値を渡します。

az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

出力:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Installed",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": "2021-04-02T12:13:49.636+00:00",
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

クラスターにインストールされているすべての拡張機能を一覧表示する

クラスターにインストールされているすべての拡張機能の一覧を表示するには、k8s-extension list を使って、必須パラメーターの値を渡します。

az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

出力:

[
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-15T02:26:03.5519523+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "Microsoft.AzureMonitor.Containers",
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
    "lastStatusTime": null,
    "name": "myExtInstanceName",
    "releaseTrain": "Stable",
    "resourceGroup": "myRG",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName1"
      }
    },
    "statuses": [],
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  },
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-02T00:41:16.8005159+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "microsoft.azuredefender.kubernetes",
    "id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
    "lastStatusTime": null,
    "name": "microsoft.azuredefender.kubernetes",
    "releaseTrain": "Stable",
    "resourceGroup": "myRg",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName2"
      }
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  }
]

拡張機能インスタンスの更新

Note

--configuration-settings および --configuration-protected-settings の更新可能な特定の設定について理解するには、特定の拡張機能の種類のドキュメントを参照してください。 --configuration-protected-settings の場合、更新する設定が 1 つだけでも、すべての設定を指定することが想定されています。 これらの設定のいずれかを省略した場合、これらの設定は古いと見なされ、削除されます。

既存の拡張機能インスタンスを更新するには、k8s-extension update を使い、必須と省略可能のパラメーターの値を渡します。 必須パラメーターと省略可能パラメーターは、拡張機能インスタンスの作成に使われるものと若干異なります。

次の例では、Azure Machine Learning 拡張機能インスタンスの auto-upgrade-minor-version の設定を true に更新します。

az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters

更新に必要なパラメーター

パラメーター名 説明
--name 拡張機能インスタンスの名前
--cluster-name 拡張機能インスタンスを作成する必要があるクラスターの名前
--resource-group クラスターを含むリソース グループ
--cluster-type 拡張機能インスタンスを作成する必要があるクラスターの種類。 Azure Arc 対応 Kubernetes クラスターの場合、connectedClusters を使います。 AKS クラスターの場合、managedClusters を使います。

オプションの更新パラメーター

パラメーター名 説明
--auto-upgrade-minor-version 拡張機能のマイナー バージョンを自動的にアップグレードするかどうかを指定するブール型プロパティ。 既定の設定は true です。 このパラメーターが true に設定されている場合、バージョンは動的に更新されるため、version パラメーターは設定できません。 false に設定すると、パッチ バージョンであってもも、拡張機能は自動的にアップグレードされません。
--version インストールする拡張機能のバージョン (拡張機能インスタンスの固定先の特定バージョン)。 auto-upgrade-minor-version が true に設定されている場合、指定しないでください。
--configuration-settings 機能を制御するために拡張機能に渡すことができる設定。 これらは、パラメーター名の後で、key=value のペアをスペースで区切って渡します。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-settings-file は使用できません。 更新を必要とする設定のみを指定する必要があります。 指定した設定が、指定した値で置き換えられます。
--configuration-settings-file 拡張機能に構成設定を渡すために使われる key=value のペアを含む JSON ファイルへのパス。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-settings は使用できません。
--configuration-protected-settings GET API の呼び出しまたは az k8s-extension show コマンドを使って取得できない設定。 通常、機密の設定を渡すために使われます。 これらは、パラメーター名の後で、key=value のペアをスペースで区切って渡します。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-protected-settings-file は使用できません。 保護された設定を更新するときは、すべての保護された設定を指定する必要があります。 これらの設定のいずれかを省略した場合、これらの設定は古いと見なされ、削除されます。
--configuration-protected-settings-file 拡張機能に機密の設定を渡すために使われる key=value のペアを含む JSON ファイルへのパス。 このパラメーターをコマンドで使用する場合、同じコマンドで --configuration-protected-settings は使用できません。
--scope 拡張機能のインストールのスコープ - cluster または namespace
--release-train 拡張機能の作成者は、StablePreview など、さまざまなリリース トレインでバージョンを公開できます。このパラメーターが明示的に設定されていない場合、既定値として Stable が使用されます。

拡張機能インスタンスをアップグレードする

前に説明したように、auto-upgrade-minor-version を true に設定した場合、新しいマイナー バージョンがリリースされると、拡張機能が自動的にアップグレードされます。 ほとんどのシナリオでは、自動アップグレードを有効にすることをお勧めします。 auto-upgrade-minor-version を false に設定した場合は、新しいバージョンが必要になったら、拡張機能を手動でアップグレードする必要があります。

手動アップグレードは、拡張機能の新しいメジャー インスタンスを取得する場合にも必要です。 メジャー バージョンのアップグレードによって予期しない破壊的変更が発生するのを避けるため、いつアップグレードするかはユーザーが選択できます。

拡張機能インスタンスを手動でアップグレードするには、k8s-extension update を使い、version パラメーターを設定してバージョンを指定します。

この例では、Azure Machine Learning 拡張機能インスタンスをバージョン x.y.z に更新します。

az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z

拡張機能インスタンスを削除する

クラスター上の拡張機能インスタンスを削除するには、k8s-extension delete を使って、必須パラメーターの値を渡します。

az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Note

この拡張機能を表す Azure リソースはただちに削除されます。 Kubernetes クラスターで実行されているエージェントがネットワークに接続していて、目的の状態を取得するために Azure サービスに再びアクセスできる場合にのみ、この拡張機能に関連するクラスターの Helm リリースが削除されます。

次のステップ