Distribuire un cluster di Service Fabric nell'hub di Azure Stack

Usare l'elemento cluster di Service Fabric dal Azure Marketplace per distribuire un cluster di Service Fabric protetto nell'hub di Azure Stack.

Per altre informazioni sull'uso di Service Fabric, vedere Panoramica degli scenari di sicurezza del cluster di Azure Service Fabric e Service Fabric nella documentazione di Azure.

Il cluster di Service Fabric nell'hub di Azure Stack non usa il provider di risorse Microsoft.ServiceFabric. In Hub di Azure Stack, invece, il cluster di Service Fabric è un set di scalabilità di macchine virtuali con software preinstallato usando Desired State Configuration (DSC).

Prerequisiti

Di seguito è necessario distribuire il cluster di Service Fabric:

  1. Certificato cluster
    Si tratta del certificato server X.509 aggiunto a Key Vault durante la distribuzione di Service Fabric.

    • Il cn in questo certificato deve corrispondere al nome di dominio completo (FQDN) del cluster di Service Fabric creato.

    • Il formato del certificato deve essere PFX, poiché sono necessarie sia le chiavi pubbliche che private. Vedere i requisiti per la creazione di questo certificato lato server.

      Nota

      È possibile usare un certificato autofirmato del certificato server X.509 a scopo di test. I certificati autofirmato non devono corrispondere al nome di dominio completo del cluster.

  2. certificato client Amministrazione
    Si tratta del certificato usato dal client per l'autenticazione nel cluster di Service Fabric, che può essere autofirmato. Vedere i requisiti per la creazione di questo certificato client.

  3. Gli elementi seguenti devono essere disponibili in Azure Stack Hub Marketplace:

    • Windows Server 2016: il modello usa l'immagine Windows Server 2016 per creare il cluster.
    • Estensione script personalizzata - Estensione macchina virtuale da Microsoft.
    • Configurazione della fase desiderata di PowerShell - Estensione macchina virtuale da Microsoft.

Aggiungere un segreto all'istanza di Key Vault

Per distribuire un cluster di Service Fabric, è necessario specificare la Key Vault identificatore segreto o l'URL corretti per il cluster di Service Fabric. Il modello di Resource Manager di Azure accetta un Key Vault come input. Il modello recupera quindi il certificato cluster durante l'installazione del cluster di Service Fabric.

Importante

È necessario usare PowerShell per aggiungere un segreto a Key Vault per l'uso con Service Fabric. Non usare il portale.

Usare lo script seguente per creare il Key Vault e aggiungerlo al certificato del cluster. Vedere i prerequisiti. Prima di eseguire lo script, esaminare lo script di esempio e aggiornare i parametri indicati in modo che corrispondano all'ambiente. Questo script restituisce anche i valori che è necessario fornire al modello di Resource Manager di Azure.

Suggerimento

Prima che lo script possa avere esito positivo, è necessario disporre di un'offerta pubblica che include i servizi per calcolo, rete, archiviazione e Key Vault.

   function Get-ThumbprintFromPfx($PfxFilePath, $Password) 
      {
         return New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($PfxFilePath, $Password)
      }
   
   function Publish-SecretToKeyVault ($PfxFilePath, $Password, $KeyVaultName)
      {
         $keyVaultSecretName = "ClusterCertificate"
         $certContentInBytes = [io.file]::ReadAllBytes($PfxFilePath)
         $pfxAsBase64EncodedString = [System.Convert]::ToBase64String($certContentInBytes)
   
         $jsonObject = ConvertTo-Json -Depth 10 ([pscustomobject]@{
               data     = $pfxAsBase64EncodedString
               dataType = 'pfx'
               password = $Password
         })
   
         $jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
         $jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
         $secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText -Force
         $keyVaultSecret = Set-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $keyVaultSecretName -SecretValue $secret
         
         $pfxCertObject = Get-ThumbprintFromPfx -PfxFilePath $PfxFilePath -Password $Password
   
         Write-Host "KeyVault id: " -ForegroundColor Green
         (Get-AzKeyVault -VaultName $KeyVaultName).ResourceId
         
         Write-Host "Secret Id: " -ForegroundColor Green
         (Get-AzureKeyVaultSecret -VaultName $KeyVaultName -Name $keyVaultSecretName).id
   
         Write-Host "Cluster Certificate Thumbprint: " -ForegroundColor Green
         $pfxCertObject.Thumbprint
      }
   
   #========================== CHANGE THESE VALUES ===============================
   $armEndpoint = "https://management.local.azurestack.external"
   $tenantId = "your_tenant_ID"
   $location = "local"
   $clusterCertPfxPath = "Your_path_to_ClusterCert.pfx"
   $clusterCertPfxPassword = "Your_password_for_ClusterCert.pfx"
   #==============================================================================
   
   Add-AzEnvironment -Name AzureStack -ARMEndpoint $armEndpoint
   Connect-AzAccount -Environment AzureStack -TenantId $tenantId
   
   $rgName = "sfvaultrg"
   Write-Host "Creating Resource Group..." -ForegroundColor Yellow
   New-AzResourceGroup -Name $rgName -Location $location
   
   Write-Host "Creating Key Vault..." -ForegroundColor Yellow
   $Vault = New-AzKeyVault -VaultName sfvault -ResourceGroupName $rgName -Location $location -EnabledForTemplateDeployment -EnabledForDeployment -EnabledForDiskEncryption
   
   Write-Host "Publishing certificate to Vault..." -ForegroundColor Yellow
   Publish-SecretToKeyVault -PfxFilePath $clusterCertPfxPath -Password $clusterCertPfxPassword -KeyVaultName $vault.VaultName

Per altre informazioni, vedere Gestire Key Vault nell'hub di Azure Stack con PowerShell.

Distribuire l'elemento Marketplace

  1. Nel portale utente passare a + Creare uncluster di Service Fabricdi calcolo> delle risorse>.

    Selezionare Cluster di Service Fabric

  2. Per ogni pagina, ad esempio Informazioni di base, compilare il modulo di distribuzione. Usare le impostazioni predefinite se non si è certi di un valore.

    Per le distribuzioni in un hub di Azure Stack disconnesso o per distribuire un'altra versione di Service Fabric, scaricare il pacchetto di distribuzione di Service Fabric e il relativo pacchetto di runtime corrispondente e ospitarlo in un BLOB dell'hub di Azure Stack. Specificare questi valori ai campi URL del pacchetto di distribuzione di Service Fabric e URL del pacchetto di runtime di Service Fabric .

    Nota

    Esistono problemi di compatibilità tra la versione più recente di Service Fabric e l'SDK corrispondente. Fino a quando non viene risolto questo problema, specificare i parametri seguenti all'URL del pacchetto di distribuzione e all'URL del pacchetto di runtime. In caso contrario, le distribuzioni avranno esito negativo.

    Per le distribuzioni disconnesse, scaricare questi pacchetti dal percorso specificato e ospitarlo localmente in un BLOB dell'hub di Azure Stack.

    Nozioni di base

  3. Nella pagina Impostazioni di rete è possibile specificare porte specifiche da aprire per le applicazioni:

    Impostazioni di rete

  4. Nella pagina Sicurezza aggiungere i valori ottenuti dalla creazione del Key Vault di Azure e caricamento del segreto.

    Per l'identificazione personale del certificato client Amministrazione immettere l'identificazione personale del certificato client Amministrazione. Vedere i prerequisiti.

    • Origine Key Vault: specificare l'intera keyVault id stringa dai risultati dello script.
    • URL certificato cluster: specificare l'intero URL dai Secret Id risultati dello script.
    • Identificazione personale del certificato cluster: specificare l'identificazione personale del certificato cluster dai risultati dello script.
    • URL certificato server: se si vuole usare un certificato separato dal certificato cluster, caricare il certificato in un keyvault e specificare l'URL completo nel segreto.
    • Identificazione personale del certificato server: specificare l'identificazione personale per il certificato server
    • Amministrazione Identificazione personale del certificato client: specificare l'identificazione personale del certificato client Amministrazione creata nei prerequisiti.

    Output dello script

    Sicurezza

  5. Completare la procedura guidata e quindi selezionare Crea per distribuire il cluster di Service Fabric.

Accedere al cluster di Service Fabric

È possibile accedere al cluster di Service Fabric usando il Service Fabric Explorer o Service Fabric PowerShell.

Usare Service Fabric Explorer

  1. Assicurarsi che il browser abbia accesso al certificato client Amministrazione e possa eseguire l'autenticazione nel cluster di Service Fabric.

    a. Aprire Internet Explorer e passare aCertificaticontenuto>opzioni> Internet.

    b. In Certificati selezionare Importa per avviare l'Importazione guidata certificati e quindi fare clic su Avanti. Nella pagina File da importare fare clic su Sfoglia e selezionare il certificato client Amministrazione fornito al modello di Resource Manager di Azure.

    Nota

    Questo certificato non è il certificato cluster aggiunto in precedenza a Key Vault.

    c. Assicurarsi di avere selezionato "Personal Information Exchange" nell'elenco a discesa estensione della finestra di Esplora file.

    Scambio di informazioni personali

    d. Nella pagina Archivio certificati selezionare Personale e quindi completare la procedura guidata.
    Archivio certificati

  2. Per trovare il nome di dominio completo del cluster di Service Fabric:

    a. Passare al gruppo di risorse associato al cluster di Service Fabric e individuare la risorsa indirizzo IP pubblico . Selezionare l'oggetto associato all'indirizzo IP pubblico per aprire il pannello Indirizzo IP pubblico.

    Indirizzo IP pubblico

    b. Nel pannello Indirizzo IP pubblico il nome di dominio completo viene visualizzato come nome DNS.

    Nome DNS

  3. Per trovare l'URL per la Service Fabric Explorer e l'endpoint connessione client, esaminare i risultati della distribuzione del modello.

  4. Nel browser passare a https://*FQDN*:19080. Sostituire FQDN con il nome di dominio completo del cluster di Service Fabric dal passaggio 2.
    Se è stato usato un certificato autofirmato, si riceverà un avviso che la connessione non è sicura. Per continuare con il sito Web, selezionare Altre informazioni e quindi passare alla pagina Web.

  5. Per eseguire l'autenticazione al sito, è necessario selezionare un certificato da usare. Selezionare Altre scelte, selezionare il certificato appropriato e quindi fare clic su OK per connettersi alla Service Fabric Explorer.

    Autenticare

Usare PowerShell di Service Fabric

  1. Installare Microsoft Azure Service Fabric SDK da Preparare l'ambiente di sviluppo in Windows nella documentazione di Azure Service Fabric.

  2. Al termine dell'installazione, configurare le variabili di ambiente di sistema per assicurarsi che i cmdlet di Service Fabric siano accessibili da PowerShell.

    a. Passare a Pannello di controllo>Sistema e sistema di sicurezza> e quindi selezionare Impostazioni di sistema avanzate.

    Pannello di controllo

    b. Nella scheda Avanzate di Proprietà di sistema selezionare Variabili di ambiente.

    c. Per Variabili di sistema, modificare Percorso e assicurarsi che C:\Programmi\Microsoft Service Fabric\bin\Fabric\Fabric.Code sia nella parte superiore dell'elenco delle variabili di ambiente.

    Elenco di variabili di ambiente

  3. Dopo aver modificato l'ordine delle variabili di ambiente, riavviare PowerShell ed eseguire lo script di PowerShell seguente per ottenere l'accesso al cluster di Service Fabric:

     Connect-ServiceFabricCluster -ConnectionEndpoint "\[Service Fabric
     CLUSTER FQDN\]:19000" \`
    
     -X509Credential -ServerCertThumbprint
     761A0D17B030723A37AA2E08225CD7EA8BE9F86A \`
    
     -FindType FindByThumbprint -FindValue
     0272251171BA32CEC7938A65B8A6A553AA2D3283 \`
    
     -StoreLocation CurrentUser -StoreName My -Verbose
    

    Nota

    Non è https:// prima del nome del cluster nello script. La porta 19000 è obbligatoria.

Passaggi successivi

Distribuire Kubernetes nell'hub di Azure Stack