チュートリアル: Azure Kubernetes Service (AKS) クラスターで Secrets Store CSI Driver 用の Azure Key Vault プロバイダーを使用する

Service Connector を使用して、Azure Kubernetes Service (AKS) クラスターで CSI ドライバーを使用して Azure Key Vault に接続する方法を説明します。 このチュートリアルでは、次のタスクを実行します。

  • AKS クラスターと Azure Key Vault を作成します。
  • Service Connector を使用した AKS クラスターと Azure Key Vault の間の接続を作成します。
  • SecretProviderClass CRD と、CSI プロバイダーを消費する pod を作成して接続をテストします。
  • リソースをクリーンアップする。

重要

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 Key Vault を作成します。 これは、AKS クラスターに接続され、CSI ドライバーでシークレットを同期するターゲット サービスです。

    az keyvault create \
        --resource-group MyResourceGroup \  
        --name MyKeyVault \
        --location EastUS
    
  5. 次のコマンドを使用して、Key Vault にシークレットを作成します。

    az keyvault secret set \
        --vault-name MyKeyVault \
        --name ExampleSecret \
        --value MyAKSExampleSecret
    

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

Azure portalまたは Azure CLI を使用して、AKS クラスターと Azure Key Vault の間のサービス接続を作成します。

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

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

    設定 選択肢 説明
    Kubernetes の名前空間 default クラスター内で接続が必要な名前空間。
    サービスの種類 Key Vault (CSI を有効にする) ターゲット サービスの種類として Key Vault を選択し、CSI を有効にするオプションを確認します。
    接続名 keyvault_conn Service Connector によって提供される接続名を使用するか、独自の接続名を選択します。
    サブスクリプション <MySubscription> Azure Key Vault ターゲット サービスのサブスクリプション。
    Key vault <MyKeyVault> 接続先のターゲット キー コンテナー
    クライアントの種類 Python ターゲット サービスに接続するために使用するコード言語またはフレームワーク。
  3. 接続が作成されると、Service Connector ページに新しい接続に関する情報が表示されます。

    Service Connector によって作成された kubernetes リソースを表示する Azure portal のスクリーンショット。

接続をテストする

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

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

    cd serviceconnector-aks-samples/azure-keyvault-csi-provider
    
  3. プレースほるあーを azure-keyvault-csi-provider フォルダー内の secret_provider_class.yaml ファイルで置き換えます。

    • 作成して接続したキー コンテナーの名前に <AZURE_KEYVAULT_NAME> を置き換えます。 Service Connector の Azure portal から値を取得できます。
    • <AZURE_KEYVAULT_TENANTID> を キー コンテナーのテナント ID に置き換えます。 Service Connector の Azure portal から値を取得できます。
    • <AZURE_KEYVAULT_CLIENTID> を使用する azureKeyvaultSecretsProvider アドオンの ID クライアント ID に置き換えます。 Service Connector の Azure portal から値を取得できます。
    • <KEYVAULT_SECRET_NAME> を作成したキー コンテナー シークレット名に置き換えます (例: ExampleSecret)。
  4. kubectl apply コマンドを使用して、Kubernetes リソースをクラスターにデプロイします。 kubectl がインストールされていない場合は、az aks install-cli コマンドを使用して、ローカルにインストールします。

    1. SecretProviderClass CRD をデプロイします。
    kubectl apply -f secret_provider_class.yaml
    
    1. pod をデプロイします。 コマンドでは、AKS クラスターの既定の名前空間に sc-demo-keyvault-csi という名前のポッドが作成されます。
    kubectl apply -f pod.yaml
    
  5. kubectl でポッドを表示して、デプロイが成功したことを確認します。

    kubectl get pod/sc-demo-keyvault-csi
    
  6. ポッドが起動すると、デプロイ YAML で指定されたボリューム パスにマウントされたコンテンツが使用できるようになります。 次のコマンドを使って、シークレットを検証し、テスト シークレットを表示します。

    • 次のコマンドを使用して、シークレット ストアに保持されているシークレットを表示します。
    kubectl exec sc-demo-keyvault-csi -- ls /mnt/secrets-store/
    
    • 次のコマンドを使用して、ストアにシークレットを表示します。 このコマンド例は、テスト シークレット ExampleSecret を示しています。
    kubectl exec sc-demo-keyvault-csi -- cat /mnt/secrets-store/ExampleSecret
    

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

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

az group delete \
    --resource-group MyResourceGroup

次のステップ

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