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

Kubernetes 拡張機能を使用すると、Azure Arc 対応 Kubernetes クラスターで次のことを実行できます。

  • クラスター拡張機能の Azure Resource Manager ベースのデプロイ。
  • 拡張機能 Helm チャートのライフサイクル管理。

この記事では、次のことについて説明します。

  • 現在使用可能な Azure Arc 対応 Kubernetes クラスター拡張機能。
  • 拡張機能インスタンスを作成する方法。
  • 必須の、および省略可能なパラメーター。
  • 拡張機能インスタンスを表示、一覧表示、更新、削除する方法。

この機能の概要については、「クラスター拡張機能 - Azure Arc 対応 Kubernetes」を参照してください。

前提条件

  • Azure CLI をインストールするか、最新バージョンにアップグレードします。

  • 次のコマンドを実行して、最新バージョンの connectedk8s および k8s-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
    
  • Azure Arc 対応 Kubernetes に接続された既存のクラスター。

現在使用可能な拡張機能

現在、次の拡張機能が利用可能です。

拡張機能 説明
コンテナーに対する Azure Monitor Kubernetes クラスターにデプロイされているワークロードのパフォーマンスを可視化します。 コントローラー、ノード、コンテナーからメモリと CPU の使用率メトリックを収集します。
Azure Policy Azure Policy によって Open Policy Agent (OPA) のための "アドミッション コントローラー Webhook" である Gatekeeper が拡張され、一貫性した一元的な方法でクラスターに対して大規模な実施と保護が適用されます。
Azure Key Vault シークレット プロバイダー シークレット ストア CSI ドライバーに Azure Key Vault プロバイダーを使用すると、CSI ボリューム経由で Azure Key Vault をシークレット ストアとして Kubernetes クラスターと統合できます。
Microsoft Defender for Cloud Kubernetes クラスターから監査ログ データなどのセキュリティに関連する情報を収集します。 収集したデータに基づいて、推奨事項と脅威のアラートを提供します。
Azure Arc 対応 Open Service Mesh クラスターに Open Service Mesh をデプロイし、mTLS セキュリティ、きめ細かなアクセス制御、トラフィック移行、Azure Monitor または Prometheus および Grafana のオープンソース アドオンによる監視、Jaeger によるトレース、外部認定管理ソリューションとの統合などの機能を有効にします。
Azure Arc 対応 Data Services Kubernetes と任意のインフラストラクチャを使用して、Azure データ サービスをオンプレミス、エッジ、パブリック クラウドで実行できるようになります。
Azure Arc 上の Azure App Service Azure Arc 対応 Kubernetes クラスター上に App Service Kubernetes 環境をプロビジョニングできるようになります。
Kubernetes 上の Azure Event Grid Azure Arc 対応 Kubernetes クラスター上で、トピックやイベント サブスクリプションなどのイベント グリッド リソースを作成および管理します。
Azure Arc 上の Azure API Management Azure Arc 対応 Kubernetes クラスターに API Management ゲートウェイをデプロイして管理します。
Azure Arc 対応機械学習 Azure Arc 対応 Kubernetes クラスターで Azure Machine Learning をデプロイして実行します。
Flux (GitOps) Flux を使用した GitOps を使用して、クラスター構成とアプリケーションのデプロイを管理します。
Azure Kubernetes Service (AKS) と Arc 対応 Kubernetes の Dapr 拡張機能 Dapr ツールをダウンロードし、手動でランタイムをクラスターにインストールして管理するオーバーヘッドを排除します。

注意

Azure からプロビジョニングされた AKS ハイブリッド クラスターに Azure Arc 拡張機能をインストールする操作は現在、プレビュー段階であり、Azure Arc 対応 Open Service Mesh、Azure Key Vault Secrets Provider、Flux (GitOps)、Microsoft Defender for Cloud 拡張機能でサポートされています。

拡張機能のスコープ

Arc 対応 Kubernetes クラスターでの拡張機能のインストールは、"クラスター スコープ" または "名前空間スコープ" のいずれかです。

クラスター スコープの拡張機能は、拡張機能の作成時に指定された release-namespace にインストールされます。 通常、クラスター スコープ拡張機能とそのコンポーネント (ポッド、オペレーター、カスタム リソース定義 (CRD) など) の 1 つのインスタンスのみが、クラスターのリリース名前空間にインストールされます。

名前空間スコープの拡張機能は、–namespace プロパティを使用して指定された特定の名前空間にインストールできます。 拡張機能は名前空間スコープでデプロイできるため、名前空間スコープの拡張機能とそのコンポーネントの複数のインスタンスをクラスター上で実行できます。 各拡張機能インスタンスには、デプロイ先の名前空間に対するアクセス許可があります。 上記のすべての拡張機能は、Kubernetes 上の Event Grid を除き、クラスター スコープです。

上記の拡張機能はすべて、Azure Arc 上の Azure API Management を除き、クラスター スコープです。

クラスター拡張機能の使用

拡張機能インスタンスを作成する

k8s-extension create を使用して、必須パラメーターの値を渡して、新しい拡張機能インスタンスを作成します。 下のコマンドによって、Azure Arc 対応 Kubernetes クラスターに Azure Monitor for containers 拡張機能インスタンスが作成されます。

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 状態に遷移します。 Failed 状態になったら、新しい拡張機能 Azure リソースを作成するために、k8s-extension create を再び実行する必要があります。

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

必須のパラメーター

パラメーター名 説明
--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 を使用します。

注意

Azure からプロビジョニングされた AKS ハイブリッド クラスターで使用するとき、provisionedClusters を使用するように --cluster-type を設定し、また、--cluster-resource-provider microsoft.hybridcontainerservice をコマンドに追加する必要があります。 Azure からプロビジョニングされた AKS ハイブリッド クラスターへの Azure Arc 拡張機能のインストールは、現在プレビュー中です。

省略可能なパラメーター

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

拡張機能インスタンスの詳細を表示する

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"
  }
]

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

k8s-extension delete を使用し、必須パラメーターの値を渡すことで、クラスター上の拡張機能インスタンスを削除します。

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

Note

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

注意

Azure からプロビジョニングされた AKS ハイブリッド クラスターで使用するとき、削除コマンドに --yes を追加する必要があります。 Azure からプロビジョニングされた AKS ハイブリッド クラスターへの Azure Arc 拡張機能のインストールは、現在プレビュー中です。

Azure からプロビジョニングされた AKS ハイブリッド クラスター (プレビュー)

Azure からプロビジョニングされた AKS ハイブリッド クラスターに拡張機能をデプロイできます。 ただし、正常にデプロイするには、いくつかの重要な違いに留意する必要があります。

  • --cluster-type パラメーターの値は provisionedClusters にする必要があります。

  • コマンドに --cluster-resource-provider microsoft.hybridcontainerservice を追加する必要があります。

  • 拡張機能インスタンスを削除するとき、コマンドに --yes を追加する必要があります。

    az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type provisionedClusters --cluster-resource-provider microsoft.hybridcontainerservice --yes
    

さらに、Azure CLI k8s-extension モジュールの最新版 (バージョン >= 1.3.3) を使用している必要があります。 次のコマンドを使用し、最新版を追加するか、最新版に更新します。

# add if you do not have this installed
az extension add --name k8s-extension

# update if you do have the module installed
az extension update --name k8s-extension

重要

Azure からプロビジョニングされた AKS ハイブリッド クラスターへの Azure Arc 拡張機能のインストールは、現在プレビュー中です。

次のステップ

Azure Arc 対応 Kubernetes で現在使用できるクラスター拡張機能について詳しく学習してださい。