此範例指令碼會逐步解說如何在 Key Vault 中建立憑證,然後將其部署至叢集執行所在的其中一個虛擬機器擴展集。 此案例不會直接使用 Service Fabric,而是會依賴 Key Vault 和虛擬機器擴展集。
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
您可以視需要使用 Azure PowerShell 指南 (英文) 中的指示來安裝 Azure PowerShell,然後執行 Connect-AzAccount 來建立與 Azure 的連線。
在 Key Vault 中建立憑證
$VaultName = ""
$CertName = ""
$SubjectName = "CN="
$policy = New-AzKeyVaultCertificatePolicy -SubjectName $SubjectName -IssuerName Self -ValidityInMonths 12
Add-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName -CertificatePolicy $policy
或將現有憑證上傳至 Key Vault
$VaultName= ""
$CertName= ""
$CertPassword= ""
$PathToPFX= ""
$bytes = [System.IO.File]::ReadAllBytes($PathToPFX)
$base64 = [System.Convert]::ToBase64String($bytes)
$jsonBlob = @{
data = $base64
dataType = 'pfx'
password = $CertPassword
} | ConvertTo-Json
$contentbytes = [System.Text.Encoding]::UTF8.GetBytes($jsonBlob)
$content = [System.Convert]::ToBase64String($contentbytes)
$SecretValue = ConvertTo-SecureString -String $content -AsPlainText -Force
# Upload the certificate to the key vault as a secret
$Secret = Set-AzKeyVaultSecret -VaultName $VaultName -Name $CertName -SecretValue $SecretValue
使用憑證更新虛擬機器擴展集設定檔
$ResourceGroupName = ""
$VMSSName = ""
$CertStore = "My" # Update this with the store you want your certificate placed in, this is LocalMachine\My
# If you have added your certificate to the keyvault certificates, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultCertificate -VaultName $VaultName -Name $CertName).SecretId -CertificateStore $CertStore
# Otherwise, if you have added your certificate to the keyvault secrets, use
$CertConfig = New-AzVmssVaultCertificateConfig -CertificateUrl (Get-AzKeyVaultSecret -VaultName $VaultName -Name $CertName).Id -CertificateStore $CertStore
$VMSS = Get-AzVmss -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMSSName
# If this KeyVault is already known by the virtual machine scale set, for example if the cluster certificate is deployed from this keyvault, use
$VMSS.virtualmachineprofile.osProfile.secrets[0].vaultCertificates.Add($CertConfig)
# Otherwise use
$VMSS = Add-AzVmssSecret -VirtualMachineScaleSet $VMSS -SourceVaultId (Get-AzKeyVault -VaultName $VaultName).ResourceId -VaultCertificate $CertConfig
更新虛擬機器擴展集
Update-AzVmss -ResourceGroupName $ResourceGroupName -VirtualMachineScaleSet $VMSS -VMScaleSetName $VMSSName
如果您想要將憑證放在叢集中的多個節點類型上,則應對每個應有憑證的節點類型重複執行此指令碼的第二個和第三個部分。
指令碼說明
此指令碼會使用下列命令:下表中的每個命令都會連結至命令特定的文件。
| Command | 注意 |
|---|---|
| New-AzKeyVaultCertificatePolicy | 建立代表憑證的記憶體內部原則 |
| Add-AzKeyVaultCertificate | 將原則部署至 Key Vault 憑證 |
| Set-AzKeyVaultSecret | 將原則部署至 Key Vault 祕密 |
| New-AzVmssVaultCertificateConfig | 建立代表 VM 中的憑證的記憶體內部設定 |
| Get-AzVmss | |
| Add-AzVmssSecret | 將憑證新增至虛擬機器擴展集的記憶體內部定義 |
| Update-AzVmss | 部署虛擬機器擴展集的新定義 |
下一步
如需有關 Azure PowerShell 模組的詳細資訊,請參閱 Azure PowerShell 文件。
您可以在 Azure PowerShell 範例中找到適用於 Azure Service Fabric 的其他 Azure PowerShell 範例。