Azure Arc 対応 Kubernetes にカスタムの場所を作成および管理する

"カスタムの場所" 機能によって、Azure オファリングのインスタンスをデプロイするターゲットの場所として、Azure Arc 対応 Kubernetes クラスターを構成できます。 カスタムの場所の上にデプロイできる Azure オファリングの例としては、Azure Arc 対応 SQL Managed Instance、Azure Arc 対応 PostgreSQL サーバーなどのデータベースや、App Services、Functions、Event Grid、Logic Apps、API Management などのアプリケーション インスタンスがあります。

カスタムの場所には、Azure Arc 対応 Kubernetes クラスター内の名前空間への一対一のマッピングがあります。 Azure ロールベースのアクセス制御 (Azure RBAC) と組み合わせたカスタムの場所の Azure リソースを使用すると、アプリケーション開発者またはデータベース管理者は詳細なアクセス許可を付与され、マルチテナント環境で Arc 対応 Kubernetes クラスター上にデータベースやアプリケーション インスタンスなどのリソースをデプロイできるようになります。

この記事では、Arc 対応 Kubernetes クラスターでカスタムの場所を有効にする方法と、カスタムの場所を作成する方法について説明します。

前提条件

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

  • 次の Azure CLI の拡張機能の最新バージョンをインストールします。

    • connectedk8s

    • k8s-extension

    • customlocation

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

      connectedk8sk8s-extensioncustomlocation の拡張機能をインストール済みの場合は、次のコマンドを使用して最新バージョンに更新します。

      az extension update --name connectedk8s
      az extension update --name k8s-extension
      az extension update --name customlocation
      
  • Microsoft.ExtendedLocation のプロバイダー登録の完了を確認します。

    1. 次のコマンドを入力します。

      az provider register --namespace Microsoft.ExtendedLocation
      
    2. 登録プロセスを監視します。 登録には最大で 10 分かかる場合があります。

      az provider show -n Microsoft.ExtendedLocation -o table
      

      登録後、RegistrationState 状態に Registered 値が与えられます。

  • 既存の Azure Arc 対応 Kubernetes 接続クラスターがあることを確認し、最新バージョンにエージェントをアップグレードします。 この記事で説明するコマンドを実行するマシンに、このクラスターを指す kubeconfig ファイルがあることを確認します。

クラスターでカスタムの場所を有効にする

ヒント

カスタムの場所機能は、クラスター接続機能に依存します。 カスタムの場所を機能させるには、クラスターで両方の機能が有効になっている必要があります。

Microsoft Entra ユーザーとして Azure CLI にサインインしている場合は、次のコマンドを使用します。

az connectedk8s enable-features -n <clusterName> -g <resourceGroupName> --features cluster-connect custom-locations

サービス プリンシパルを使用して Azure CLI にサインインしているときに上のコマンドを実行した場合、次の警告が表示されることがあります。

Unable to fetch oid of 'custom-locations' app. Proceeding without enabling the feature. Insufficient privileges to complete the operation.

これは、Azure Arc サービスによって使用されるアプリケーションについての情報を取得するためのアクセス許可がサービス プリンシパルにないためです。 このエラーを回避するには、次の手順を実行します。

  1. ユーザー アカウントを使用して Azure CLI にサインインします。 次のコマンドを使用して、Azure Arc サービスで使用される Microsoft Entra アプリケーションの objectId または id をフェッチします。

    az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv
    
  2. サービス プリンシパルを使用して Azure CLI にサインインします。 上記の手順の <objectId> または id の値を使用して、クラスターでカスタムの場所を有効にします。

    az connectedk8s enable-features -n <cluster-name> -g <resource-group-name> --custom-locations-oid <objectId/id> --features cluster-connect custom-locations
    

カスタムの場所を作成する

  1. クラスターにインストールする Azure サービス インスタンスの Azure サービス クラスター拡張機能をデプロイします。

  2. Azure Arc 対応 Kubernetes クラスターの Azure Resource Manager 識別子を取得します。これは、後の手順で connectedClusterId として参照されます。

    az connectedk8s show -n <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  3. Azure Arc 対応 Kubernetes クラスターにデプロイしたクラスター拡張機能の Azure Resource Manager 識別子を取得します。これは、後の手順で extensionId として参照されます。

    az k8s-extension show --name <extensionInstanceName> --cluster-type connectedClusters -c <clusterName> -g <resourceGroupName>  --query id -o tsv
    
  4. Azure Arc 対応 Kubernetes クラスターと拡張機能を参照して、カスタムの場所を作成します。

    az customlocation create -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionId> 
    
    • [Required parameters]\(必須のパラメーター\):

      パラメーター名 説明
      --name, --n カスタムの場所の名前。
      --resource-group, --g カスタムの場所のリソース グループ。
      --namespace 作成されるカスタムの場所にバインドされたクラスター内の名前空間。
      --host-resource-id Azure Arc 対応 Kubernetes クラスター (接続されたクラスター) の Azure Resource Manager 識別子。
      --cluster-extension-ids 接続されたクラスターにインストールされているクラスター拡張機能インスタンスの Azure Resource Manager 識別子。 複数の拡張機能の場合は、クラスター拡張機能 ID のスペース区切りの一覧を指定します
    • 省略可能なパラメーター:

      パラメーター名 説明
      --location, --l Azure 内のカスタムの場所の Azure Resource Manager リソースの場所。 指定しない場合は、接続されているクラスターの場所が使用されます。
      --tags 形式 key[=value] のタグのスペース区切りの一覧。 既存のタグをクリアするには '' を使用します。
      --kubeconfig クラスターの管理 kubeconfig

カスタムの場所の詳細を表示する

カスタムの場所の詳細を表示するには、次のコマンドを使用します。

az customlocation show -n <customLocationName> -g <resourceGroupName> 

カスタムの場所を一覧表示する

リソース グループ内のすべてのカスタムの場所を一覧表示するには、次のコマンドを使用します。

az customlocation list -g <resourceGroupName> 

カスタムの場所を更新する

タグの既存の値と関連付けられたクラスター拡張機能を維持したまま、--tags の新しい値を追加するか、新しい --cluster-extension-ids をカスタムの場所に関連付けるには、update コマンドを使用します。

az customlocation update -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

カスタムの場所にパッチを適用する

--cluster-extension-ids または --tags の既存の値を置き換えるには、patch コマンドを使用します。 以前の値は保持されません。

az customlocation patch -n <customLocationName> -g <resourceGroupName> --namespace <name of namespace> --host-resource-id <connectedClusterId> --cluster-extension-ids <extensionIds> 

カスタムの場所を削除する

カスタムの場所を削除するには、次のコマンドを使用します。

az customlocation delete -n <customLocationName> -g <resourceGroupName> 

トラブルシューティング

カスタムの場所の作成がエラー Unknown proxy error occurred で失敗した場合は、azure-arc 名前空間内でポッド間の内部通信を許可するようにネットワーク ポリシーを変更します。 また、構成したポリシーのプロキシなしの除外リストの一部として azure-arc 名前空間を追加してください。

次のステップ