Добавление сертификата приложения в кластер Service Fabric
В этом примере сценария показано, как создать сертификат в Key Vault, а затем развернуть его в одном из масштабируемых наборов виртуальных машин, на которых работает ваш кластер. Этот сценарий не использует Service Fabric напрямую, а зависит от Key Vault и масштабируемых наборов виртуальных машин.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure 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
Обновите масштабируемый набор виртуальных машин Azure
Update-AzVmss -ResourceGroupName $ResourceGroupName -VirtualMachineScaleSet $VMSS -VMScaleSetName $VMSSName
Если вы хотите, чтобы сертификат был размещен на нескольких типах узлов в кластере, повторите вторую и третью часть этого сценария для каждого типа узла, который должен иметь сертификат.
Описание скрипта
В этом сценарии используются следующие команды. Для каждой команды в таблице приведены ссылки на соответствующую документацию.
Команда | Примечания. |
---|---|
New-AzKeyVaultCertificatePolicy | Создает политику в памяти, представляющую сертификат |
Add-AzKeyVaultCertificate | Развертывает политику для сертификатов Key Vault. |
Set-AzKeyVaultSecret | Развертывает политику для секретов Key Vault. |
New-AzVmssVaultCertificateConfig | Создает конфигурацию в памяти, представляющую сертификат в виртуальной машине |
Get-AzVmss | |
Add-AzVmssSecret | Добавляет сертификат в определение памяти масштабируемого набора виртуальных машин |
Update-AzVmss | Развертывает новое определение масштабируемого набора виртуальных машин |
Следующие шаги
Дополнительные сведения о модуле Azure PowerShell см. в документации по Azure PowerShell.
Дополнительные примеры скриптов Azure PowerShell для Azure Service Fabric см. в разделе Примеры сценариев Azure PowerShell.