チュートリアル: 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 プレビューの追加使用条件」を参照してください。
警告
Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 この手順で説明されている認証フローでは、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- Azure CLI をインストールし、az login コマンドを使用して Azure CLI にサインインします。
- コンテナー イメージと Kubernetes リソースを管理するために、Docker と kubectl をインストールします。
- コンテナーと AKS の基本的な理解。 AKS 用のアプリケーションの準備から開始します。
Azure リソースを作成する
このチュートリアル用のリソース グループを作成します。
az group create \ --name MyResourceGroup \ --location eastus
次のコマンドを使用するか、チュートリアルを参照してAKS クラスターを作成します。 これは、サービス接続とポッド定義を作成し、サンプル アプリケーションをデプロイするクラスターです。
az aks create \ --resource-group MyResourceGroup \ --name MyAKSCluster \ --enable-managed-identity \ --node-count 1
次のコマンドでクラスターに接続します。
az aks get-credentials \ --resource-group MyResourceGroup \ --name MyAKSCluster
次のコマンドを使用するか、チュートリアルを参照して Azure Key Vault を作成します。 これは、AKS クラスターに接続され、CSI ドライバーでシークレットを同期するターゲット サービスです。
az keyvault create \ --resource-group MyResourceGroup \ --name MyKeyVault \ --location EastUS
次のコマンドを使用して、Key Vault にシークレットを作成します。
az keyvault secret set \ --vault-name MyKeyVault \ --name ExampleSecret \ --value MyAKSExampleSecret
Service Connector を使用して AKS でサービス接続を作成する (プレビュー)
Azure portalまたは Azure CLI を使用して、AKS クラスターと Azure Key Vault の間のサービス接続を作成します。
Azure portal で [Kubernetes サービス] を開き、左側のメニューから [Service Connector] を選択します。
[作成] を選択し、次に示すように設定を入力します。 その他の設定は、既定値のままにしておきます。
設定 選択肢 説明 Kubernetes の名前空間 default クラスター内で接続が必要な名前空間。 サービスの種類 Key Vault (CSI を有効にする) ターゲット サービスの種類として Key Vault を選択し、CSI を有効にするオプションを確認します。 接続名 keyvault_conn Service Connector によって提供される接続名を使用するか、独自の接続名を選択します。 サブスクリプション <MySubscription>
Azure Key Vault ターゲット サービスのサブスクリプション。 Key vault <MyKeyVault>
接続先のターゲット キー コンテナー クライアントの種類 Python ターゲット サービスに接続するために使用するコード言語またはフレームワーク。 接続が作成されると、Service Connector ページに新しい接続に関する情報が表示されます。
接続をテストする
サンプル リポジトリをクローンします。
git clone https://github.com/Azure-Samples/serviceconnector-aks-samples.git
Azure Key Vault 用のリポジトリの次のサンプル フォルダーに移動します。
cd serviceconnector-aks-samples/azure-keyvault-csi-provider
プレースほるあーを
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
)。
- 作成して接続したキー コンテナーの名前に
kubectl apply
コマンドを使用して、Kubernetes リソースをクラスターにデプロイします。kubectl
がインストールされていない場合は、az aks install-cli コマンドを使用して、ローカルにインストールします。SecretProviderClass
CRD をデプロイします。
kubectl apply -f secret_provider_class.yaml
pod
をデプロイします。 コマンドでは、AKS クラスターの既定の名前空間にsc-demo-keyvault-csi
という名前のポッドが作成されます。
kubectl apply -f pod.yaml
kubectl
でポッドを表示して、デプロイが成功したことを確認します。kubectl get pod/sc-demo-keyvault-csi
ポッドが起動すると、デプロイ 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 をサービスに接続する方法について詳しくは、次の記事をご覧ください。