チュートリアル: ワークロード ID を使用して Service Connector で Azure Kubernetes Service (AKS) の Azure ストレージ アカウントに接続する

Service Connector でワークロード ID を使用して Azure ストレージ アカウントと通信するポッドをAKS クラスターに作成する方法について説明します。 このチュートリアルでは、次のタスクを実行します。

  • AKS クラスターと Azure ストレージ アカウントを作成します。
  • Service Connector を使用して AKS クラスターと Azure ストレージ アカウントの間の接続を作成します。
  • AKS クラスターから、Azure ストレージ アカウントと通信するサンプル アプリケーションを複製します。
  • AKS クラスター内のポッドにアプリケーションを配置し、接続をテストします。
  • リソースをクリーンアップする。

重要

AKS 内のサービス接続は現在プレビュー段階です。 ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

前提条件

Azure リソースを作成する

  1. このチュートリアル用のリソース グループを作成します。

    az group create \
        --name MyResourceGroup \
        --location eastus
    
  2. 次のコマンドを使用するか、チュートリアルを参照してAKS クラスターを作成します。 サービス接続、ポッド定義を作成し、このクラスターにサンプル アプリケーションを配置します。

    az aks create \
        --resource-group MyResourceGroup \
        --name MyAKSCluster \
        --enable-managed-identity \
        --node-count 1
    
  3. 次のコマンドでクラスターに接続します。

    az aks get-credentials \
        --resource-group MyResourceGroup \
        --name MyAKSCluster
    
  4. 次のコマンドを使用するか、チュートリアルを参照して Azure ストレージ アカウントを作成します。 これは、AKS クラスターに接続され、サンプル アプリケーションがやりとりするターゲット サービスです。

    az storage account create \
        --resource-group MyResourceGroup \
        --name MyStorageAccount \
        --location eastus \
        --sku Standard_LRS
    
  5. 次のコマンドを使用するか、チュートリアルを参照して、Azure コンテナー レジストリを作成します。 レジストリは、AKS ポッド定義によって使用されるサンプル アプリケーションのコンテナー イメージをホストします。

    az acr create \
        --resource-group MyResourceGroup \
        --name MyRegistry \
        --sku Standard
    

    また、AKS クラスターがレジストリ内のイメージを使用できるように、匿名プルを有効にします。

    az acr update \
        --resource-group MyResourceGroup \
        --name MyRegistry \
        --anonymous-pull-enabled
    
  6. 次のコマンドを使用するか、チュートリアルを参照して、ユーザー割り当てマネージド ID を作成します。 ユーザー割り当てマネージド ID は、AKS ワークロードのワークロード ID を有効にするために、サービス接続の作成で使用されます。

    az identity create \
        --resource-group MyResourceGroup \
        --name MyIdentity
    

Service Connector を使ってサービス接続を作成する (プレビュー)

Azure portal または Azure CLI を使用して、AKS クラスターと Azure ストレージ アカウントの間のサービス接続を作成します。

  1. Azure portal で [Kubernetes サービス] を開き、左側のメニューから [Service Connector] を選択します。

  2. [作成] を選択し、次に示すように設定を入力します。 その他の設定は、既定値のままにしておきます。

    [基本] タブ:

    設定 選択肢 説明
    Kubernetes の名前空間 default クラスター内で接続が必要な名前空間。
    サービスの種類 ストレージ - Blob ターゲット サービスの種類。
    接続名 storage_conn Service Connector によって提供される接続名を使用するか、独自の接続名を選択します。
    サブスクリプション <MySubscription> Azure Blob Storage ターゲット サービスのサブスクリプション。
    ストレージ アカウント <MyStorageAccount> 接続先のターゲット ストレージ アカウント。
    クライアントの種類 Python ターゲット サービスに接続するために使用するコード言語またはフレームワーク。

    [認証] タブ

    認証設定 選択肢 説明
    認証の種類 ワークロード ID Service Connector 認証の種類。
    ユーザー割り当てマネージド ID <MyIdentity> ワークロード ID を有効にするには、ユーザー割り当てマネージド ID が必要です。
  3. 接続が作成されると、Service Connector ページに新しい接続に関する情報が表示されます。 Service Connector によって作成された kubernetes リソースを表示する Azure portal のスクリーンショット。

サンプル アプリケーションを複製する

  1. サンプル リポジトリをクローンします。

    git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
    
  2. リポジトリのAzure ストレージ用のサンプル フォルダーに移動します。

    cd serviceconnector-aks-samples/azure-storage-workload-identity
    

コンテナー イメージをビルドしてプッシュする

  1. Azure CLI の az acr build コマンドを使用して、イメージをビルドしてコンテナー レジストリにプッシュします。

    az acr build --registry <MyRegistry> --image sc-demo-storage-identity:latest ./
    
  2. az acr repository list コマンドを使用して、コンテナー レジストリ内のイメージを表示します。

    az acr repository list --name <MyRegistry> --output table
    

アプリケーションを実行し接続をテストする

  1. プレースホルダーを azure-storage-identity フォルダー内の pod.yaml ファイルで置き換えます。

    • <YourContainerImage> を、最後の手順でビルドしたイメージ名 (たとえば、<MyRegistry>.azurecr.io/sc-demo-storage-identity:latest) に置き換えます。
    • <ServiceAccountCreatedByServiceConnector> を、接続の作成後に Service Connector によって作成されたサービス アカウントに置き換えます。 サービス アカウント名は、Service Connector の Azure portal で確認できます。
    • <SecretCreatedByServiceConnector> を、接続の作成後に Service Connector によって作成されたシークレットに置き換えます。 シークレット名は、Service Connector の Azure portal で確認できます。
  2. kubectl apply コマンドを使用してポッドをクラスターに配置します。 kubectl がインストールされていない場合は、az aks install-cli コマンドを使用して、ローカルにインストールします。 コマンドでは、AKS クラスターの既定の名前空間に sc-demo-storage-identity という名前のポッドが作成されます。

    kubectl apply -f pod.yaml
    
  3. kubectl でポッドを表示して、デプロイが成功したことを確認します。

    kubectl get pod/sc-demo-storage-identity.
    
  4. kubectl でログを表示して接続が確立されていることを確認します。

    kubectl logs pod/sc-demo-storage-identity
    

リソースをクリーンアップする

このチュートリアルで作成したリソースを再利用する必要がない場合は、リソース グループを削除して作成したリソースをすべて削除してください。

az group delete \
    --resource-group MyResourceGroup

次のステップ

サービス コネクタの概念と、それを使って AKS をサービスに接続する方法について詳しくは、次の記事をご覧ください。