Azure Resource Manager を使用して Service Fabric クラスターを作成する

Azure Service Fabric クラスターはネットワークで接続された一連の仮想マシンです。マイクロサービスは Service Fabric クラスターにデプロイされ、そこで管理されます。 Azure で動作する Service Fabric クラスターは Azure リソースであり、Azure Resource Manager を使用して展開されます。 この記事では、Resource Manager を使用して Azure にセキュリティで保護された Service Fabric クラスターを展開する方法について説明します。 既定のクラスター テンプレートまたはカスタム テンプレートを使用できます。 カスタム テンプレートがまだない場合は、作成方法の説明をご覧ください。

クラスターをセキュリティで保護するために選択したセキュリティの種類 (つまり、Windows ID、X509 など) は、クラスターの初期作成時に指定する必要があり、その後は変更できません。 クラスターをセットアップする前に、「Service Fabric クラスターのセキュリティに関するシナリオ」をお読みください。 Azure の Service Fabric では、x509 証明書を使用してクラスターとそのエンドポイントをセキュリティで保護し、クライアントを認証し、データを暗号化します。 管理エンドポイントへのアクセスをセキュリティで保護するため、Microsoft Entra ID もお勧めします。 詳細については、クライアントを認証するための Microsoft Entra ID のセットアップに関する記事を参照してください。

運用ワークロードを実行するための運用クラスターを展開する場合は、最初に「運用環境の準備状況チェックリスト」を読むことをお勧めします。

Note

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

前提条件

この記事では、Service Fabric RM PowerShell または Azure CLI モジュールを使用してクラスターを展開します。

Service Fabric のモジュールのリファレンス ドキュメントは以下をご覧ください。

Azure へのサインイン

この記事のコマンドを実行する前に、Azure にサインインします。

Connect-AzAccount
Set-AzContext -SubscriptionId <subscriptionId>
az login
az account set --subscription $subscriptionId

システムで生成された自己署名証明書を使用して新しいクラスターを作成する

次のコマンドを使用して、システムによって生成された自己署名証明書でセキュリティ保護されたクラスターを作成します。 このコマンドで、クラスターのセキュリティに使用されるプライマリ クラスターの証明書が設定されます。また、その証明書を使用して管理操作を実行する管理者アクセス権が設定されます。 自己署名証明書は、テスト クラスターをセキュリティ保護する場合に役立ちます。 運用クラスターの場合は、証明機関 (CA) の証明書でセキュリティ保護する必要があります。

モジュールに付属する既定のクラスター テンプレートを使用する

次の PowerShell または Azure CLI のいずれかのコマンドを使用し、既定のテンプレートを使用して、クラスターをすばやく作成します。

使用されている既定のテンプレートは、Windows の場合はこちらから、Ubuntu の場合はこちらから入手できます。

以下のコマンドを実行すると、OS パラメーターをどのように指定したかに応じて、Windows クラスターまたは Linux クラスターのいずれかを作成できます。 PowerShell コマンド/CLI コマンドのどちらも、指定した CertificateOutputFolder に証明書が出力されます (コマンドを実行する前に、指定した証明書フォルダの場所が既に存在することを確認してください)。

Note

次の PowerShell コマンドを Azure PowerShell Az モジュールで使用できます。 Azure Resource Manager PowerShell の現在のバージョンを確認するには、PowerShell コマンド "Get-Module Az" を実行します。 Azure Resource Manager PowerShell のバージョンをアップグレードするには、こちらのリンクに従ってください。

PowerShell を使用してクラスターを展開します。

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$CertSubjectName="mycluster.westus.cloudapp.azure.com"
$certPassword="Password123!@#" | ConvertTo-SecureString -AsPlainText -Force 
$vmpassword="Password4321!@#" | ConvertTo-SecureString -AsPlainText -Force
$vmuser="myadmin"
$os="WindowsServer2016DatacenterwithContainers"
$certOutputFolder="c:\certificates"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -CertificateOutputFolder $certOutputFolder -CertificatePassword $certpassword -CertificateSubjectName $CertSubjectName -OS $os -VmPassword $vmpassword -VmUserName $vmuser

Azure CLI を使用してクラスターを展開します。

declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare CertSubjectName="mylinux.westus.cloudapp.azure.com"
declare vmpassword="Password!1"
declare certpassword="Password!4321"
declare vmuser="myadmin"
declare vmOs="UbuntuServer1804"
declare certOutputFolder="c:\certificates"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-output-folder $certOutputFolder --certificate-password $certpassword  \
	--vault-name $vaultName --vault-resource-group $resourceGroupName  \
	--template-file $templateFilePath --parameter-file $parametersFilePath --vm-os $vmOs  \
	--vm-password $vmpassword --vm-user-name $vmuser

独自のカスタム テンプレートを使用する

ニーズに合わせてカスタム テンプレートを作成する必要がある場合は、Azure Service Fabric テンプレート サンプルで入手できるテンプレートのいずれかから始めることを強くお勧めします。 クラスター テンプレートをカスタマイズする方法をご覧ください。

カスタム テンプレートが既にある場合は、テンプレートとパラメーター ファイルで、3 つの証明書関連パラメーターの名前が次のように指定されていて、値が null であることを確認します。

   "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultValue": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    },

PowerShell を使用してクラスターを展開します。

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$CertSubjectName="mycluster.westus.cloudapp.azure.com"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$certOutputFolder="c:\certificates"

$parameterFilePath="c:\mytemplates\mytemplateparm.json"
$templateFilePath="c:\mytemplates\mytemplate.json"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -CertificateOutputFolder $certOutputFolder -CertificatePassword $certpassword -CertificateSubjectName $CertSubjectName -TemplateFile $templateFilePath -ParameterFile $parameterFilePath 

Azure CLI を使用してクラスターを展開します。

declare certPassword=""
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare certSubjectName="mylinuxsecure.westus.cloudapp.azure.com"
declare parameterFilePath="c:\mytemplates\linuxtemplateparm.json"
declare templateFilePath="c:\mytemplates\linuxtemplate.json"
declare certOutputFolder="c:\certificates"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-output-folder $certOutputFolder --certificate-password $certPassword  \
	--certificate-subject-name $certSubjectName \
	--template-file $templateFilePath --parameter-file $parametersFilePath

独自の X.509 証明書を使用して新しいクラスターを作成する

既存の証明書を指定して新しいクラスターを作成し、そのセキュリティを確保するには、次のコマンドを使用します。

CA で署名された証明書で、他の用途にも使用する予定がある場合は、Key Vault 専用のリソース グループを用意することをお勧めします。 Key Vault は専用のリソース グループに配置することをお勧めします。 そうすることで、必要なキーとシークレットを失うことなく、コンピューティング リソース グループやストレージ リソース グループを削除することができます (Service Fabric クラスターのあるリソース グループを含む)。 Key Vault を持つリソース グループは、それを使用するクラスターと同じリージョンにある必要があります

モジュールに付属する既定の 5 ノードと 1 ノード タイプのテンプレートを使用する

使用されている既定のテンプレートは、Windows の場合はこちらから、Ubuntu の場合はこちらから入手できます。

PowerShell を使用してクラスターを展開します。

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$vmpassword=("Password!4321" | ConvertTo-SecureString -AsPlainText -Force) 
$vmuser="myadmin"
$os="WindowsServer2016DatacenterwithContainers"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -KeyVaultResourceGroupName $vaultResourceGroupName -KeyVaultName $vaultName -CertificateFile C:\MyCertificates\chackocertificate3.pfx -CertificatePassword $certPassword -OS $os -VmPassword $vmpassword -VmUserName $vmuser 

Azure CLI を使用してクラスターを展開します。

declare vmPassword="Password!1"
declare certPassword="Password!1"
declare vmUser="myadmin"
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare certificate-file="c:\certificates\mycert.pem"
declare vmOs="UbuntuServer1804"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-file $certificate-file --certificate-password $certPassword  \
	--vault-name $vaultName --vault-resource-group $vaultResourceGroupName  \
    --vm-os vmOs \
	--vm-password $vmPassword --vm-user-name $vmUser

独自のカスタム クラスター テンプレートを使用する

ニーズに合わせてカスタム テンプレートを作成する必要がある場合は、Azure Service Fabric テンプレート サンプルで入手できるテンプレートのいずれかから始めることを強くお勧めします。 クラスター テンプレートをカスタマイズする方法をご覧ください。

カスタム テンプレートを既に持っている場合は、3 つの証明書すべてがテンプレートのパラメーターに関連付けられ、パラメーターのファイル名がテンプレートで指定され、値がテンプレートで null であることを慎重に確認してください。

   "certificateThumbprint": {
      "value": ""
    },
    "sourceVaultValue": {
      "value": ""
    },
    "certificateUrlValue": {
      "value": ""
    },

PowerShell を使用してクラスターを展開します。

$resourceGroupLocation="westus"
$resourceGroupName="mycluster"
$vaultName="myvault"
$vaultResourceGroupName="myvaultrg"
$certPassword="Password!1" | ConvertTo-SecureString -AsPlainText -Force 
$os="WindowsServer2016DatacenterwithContainers"
$parameterFilePath="c:\mytemplates\mytemplateparm.json"
$templateFilePath="c:\mytemplates\mytemplate.json"
$certificateFile="C:\MyCertificates\chackonewcertificate3.pem"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -Location $resourceGroupLocation -TemplateFile $templateFilePath -ParameterFile $parameterFilePath -KeyVaultResourceGroupName $vaultResourceGroupName -KeyVaultName $vaultName -CertificateFile $certificateFile -CertificatePassword $certPassword

Azure CLI を使用してクラスターを展開します。

declare certPassword="Password!1"
declare resourceGroupLocation="westus"
declare resourceGroupName="mylinux"
declare vaultResourceGroupName="myvaultrg"
declare vaultName="myvault"
declare parameterFilePath="c:\mytemplates\linuxtemplateparm.json"
declare templateFilePath="c:\mytemplates\linuxtemplate.json"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--certificate-file $certificate-file --certificate-password $password  \
	--vault-name $vaultName --vault-resource-group $vaultResourceGroupName  \
	--template-file $templateFilePath --parameter-file $parametersFilePath 

キー コンテナーにアップロードされたシークレットへのポインターを使用する

既存のキー コンテナーを使用するには、コンピューティング リソース プロバイダーがキー コンテナーから証明書を取得し、クラスター ノードにインストールできるように、キー コンテナーで展開を有効にする必要があります。

PowerShell を使用してクラスターを展開します。

Set-AzKeyVaultAccessPolicy -VaultName 'ContosoKeyVault' -EnabledForDeployment

$parameterFilePath="c:\mytemplates\mytemplate.json"
$templateFilePath="c:\mytemplates\mytemplateparm.json"
$secretID="https://test1.vault.azure.net:443/secrets/testcertificate4/55ec7c4dc61a462bbc645ffc9b4b225f"

New-AzServiceFabricCluster -ResourceGroupName $resourceGroupName -SecretIdentifier $secretID -TemplateFile $templateFilePath -ParameterFile $parameterFilePath 

Azure CLI を使用してクラスターを展開します。

declare $resourceGroupName = "testRG"
declare $parameterFilePath="c:\mytemplates\mytemplate.json"
declare $templateFilePath="c:\mytemplates\mytemplateparm.json"
declare $secretID="https://test1.vault.azure.net:443/secrets/testcertificate4/55ec7c4dc61a462bbc645ffc9b4b225f"

az sf cluster create --resource-group $resourceGroupName --location $resourceGroupLocation  \
	--secret-identifier $secretID  \
	--template-file $templateFilePath --parameter-file $parameterFilePath 

次のステップ

この時点では、セキュリティで保護されたクラスターが Azure で実行されています。 次に、クラスターに接続して、アプリケーション シークレットを管理する方法を説明します。

テンプレートを使用するための JSON の構文とプロパティについては、Microsoft.ServiceFabric/clusters のテンプレート リファレンスに関するページを参照してください。