Implementación de un clúster de Service Fabric en Azure Stack Hub

Use el elemento Clúster de Service Fabric en Azure Marketplace para implementar un clúster protegido de Service Fabric en Azure Stack Hub.

Para más información sobre cómo trabajar con Service Fabric, consulte Información general de Azure Service Fabric y Escenarios de seguridad de los clústeres de Service Fabric en la documentación de Azure.

El clúster de Service Fabric en Azure Stack Hub no utiliza el proveedor de recursos Microsoft.ServiceFabric. En su lugar, en Azure Stack Hub, el clúster de Service Fabric es un conjunto de escalado de máquinas virtuales con un conjunto de software preinstalado con Desired State Configuration (DSC).

Prerrequisitos

Se necesitan los siguientes requisitos para implementar el clúster de Service Fabric:

  1. Certificado de clúster
    Este es el certificado de servidor X.509 que va a agregar a KeyVault al implementar Service Fabric.

    • El CN de este certificado debe coincidir con el nombre de dominio completo (FQDN) del clúster de Service Fabric que cree.

    • El formato del certificado debe ser PFX, ya que se requieren las claves públicas y privadas. Consulte los requisitos para crear este certificado del lado servidor.

      Nota

      Puede usar un certificado autofirmado en lugar del certificado de servidor X.509 para fines de prueba. No es necesario que los certificados autofirmados coincidan con el nombre de dominio completo del clúster.

  2. Certificado de cliente de administración
    Este es el certificado que usa el cliente para autenticarse en el clúster de Service Fabric. Puede ser autofirmado. Consulte los requisitos para crear este certificado de cliente.

  3. Los siguientes elementos deben estar disponibles en Marketplace de Azure Stack Hub:

    • Windows Server 2016: la plantilla usa la imagen de Windows Server 2016 para crear el clúster.
    • Extensión de script personalizada: extensión de máquina virtual de Microsoft.
    • Configuración de estado deseado de PowerShell: extensión de máquina virtual de Microsoft.

Incorporación de un secreto a Key Vault

Para implementar un clúster de Service Fabric, debe especificar el identificador secreto correcto de Key Vault o la dirección URL del clúster de Service Fabric. La plantilla de Azure Resource Manager, toma una instancia de Key Vault como entrada. Después, la plantilla recupera el certificado del clúster al instalar el clúster de Service Fabric.

Importante

Debe usar PowerShell para agregar un secreto a Key Vault para su uso con Service Fabric. No use el portal.

Use el siguiente script para crear el identificador de Key Vault y agregar el certificado de clúster a él. (Consulte los requisitos previos). Antes de ejecutar el script, revise el script de ejemplo y actualice los parámetros indicados para adecuarse a su entorno. Este script también ofrecerá los valores que debe proporcionar a la plantilla de Azure Resource Manager.

Sugerencia

Antes de ejecutar correctamente el script, debe haber una oferta pública que incluya los servicios para Compute, Network, Storage y 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

Para más información, consulte Administrar Key Vault en Azure Stack Hub mediante PowerShell.

Implementación de un elemento de Marketplace

  1. En el portal de usuarios, vaya a + Crear un recurso>Proceso>Clúster de Service Fabric.

    Seleccione el clúster de Service Fabric

  2. Para cada página como, por ejemplo, Aspectos básicos, rellene el formulario de implementación. Use los valores predeterminados si no está seguro de un valor.

    En caso de implementaciones en una instancia desconectada de Azure Stack Hub o para implementar otra versión de Service Fabric, descargue el paquete de implementación de Service Fabric y el correspondiente paquete del entorno de ejecución, y hospédelo en un blob de Azure Stack Hub. Proporcione estos valores para los campos Service Fabric deployment package URL (URL del paquete de implementación de Service Fabric) y Service Fabric runtime package URL (URL del paquete del entorno de ejecución de Service Fabric).

    Nota

    Hay problemas de compatibilidad entre la última versión de Service Fabric y su SDK correspondiente. Hasta que se solucione ese problema, proporcione los siguientes parámetros para la dirección URL del paquete de implementación y la del paquete del entorno de ejecución. De lo contrario, se producirá un error en las implementaciones.

    En el caso de las implementaciones desconectadas, descargue estos paquetes de la ubicación especificada y hospédelos localmente en un blob de Azure Stack Hub.

    Aspectos básicos

  3. En la página Configuración de red, puede especificar los puertos específicos que debe abrir para las aplicaciones:

    Configuración de red

  4. En la página Security (Seguridad), agregue los valores que obtuvo al crear la instancia de Azure Key Vault y cargar el secreto.

    En Huella digital del certificado de cliente de administración, especifique la huella digital del certificado de cliente de administración. (Consulte los requisitos previos).

    • Almacén de claves de origen: especifique toda la cadena de keyVault id a partir de los resultados del script.
    • Cluster Certificate URL (URL del certificado de clúster): especifique la dirección URL completa de Secret Id a partir de los resultados del script.
    • Cluster Certificate thumbprint (Huella digital del certificado de clúster): especifique la huella digital del certificado de clúster a partir de los resultados del script.
    • Dirección URL de un certificado de servidor: Si desea usar un certificado independiente del certificado del clúster, cargue el certificado en un almacén de claves y proporcione la dirección URL completa al secreto.
    • Huella digital de certificado de servidor: Especificación de la huella digital del certificado de servidor
    • Admin Client Certificate Thumbprints (Huella digital de certificado de cliente de administración): especifique la huella digital del certificado de cliente de administración que ha creado en los requisitos previos.

    Salida del script

    Seguridad

  5. Complete el asistente y, a continuación, seleccione Crear para implementar el clúster de Service Fabric.

Acceda al clúster de Service Fabric

Puede acceder al clúster de Service Fabric mediante el uso de Service Fabric Explorer o Service Fabric PowerShell.

Uso de Service Fabric Explorer

  1. Asegúrese de que el explorador tiene acceso al certificado de cliente de administración y puede autenticarse en el clúster de Service Fabric.

    a. Abra Internet Explorer y vaya a Opciones de Internet>Contenido>Certificados.

    b. En Certificados, seleccione Importar para iniciar el Asistente para importación de certificadosy, a continuación, haga clic en Siguiente. En la página Archivo para importar haga clic en Examinary seleccione el certificado de cliente de administración que proporcionó a la plantilla de Azure Resource Manager.

    Nota

    Este certificado no es el certificado de clúster que se agregó previamente a la instancia de Key Vault.

    c. Asegúrese de que tiene la opción "Intercambio de información personal" seleccionada en la lista desplegable de extensión de la ventana del explorador de archivos.

    Intercambio de información personal

    d. En la página Almacén de certificados, seleccione Personal y complete el asistente.
    Almacén de certificados

  2. Para buscar el nombre de dominio completo del clúster de Service Fabric:

    a. Vaya al grupo de recursos que está asociado con el clúster de Service Fabric y busque el recurso Dirección IP pública. Seleccione el objeto asociado a la dirección IP pública para abrir la hoja Dirección IP pública.

    Dirección IP pública

    b. En la hoja Dirección IP pública aparece el nombre de dominio completo como Nombre DNS.

    Nombre DNS

  3. Para buscar la dirección URL de Service Fabric Explorer y el punto de conexión de cliente, revise los resultados de la implementación de la plantilla.

  4. En el explorador, vaya a https://*FQDN*:19080. Sustituya FQDN por el FQDN del clúster de Service Fabric del paso 2.
    Si ha usado un certificado autofirmado, recibirá una advertencia de que la conexión no es segura. Para continuar con el sitio web, seleccione More information (Más información) y, a continuación, Go on to the webpage (Acceder a la página web).

  5. Para autenticar el sitio debe seleccionar el certificado que va a usar. Seleccione Más opciones, seleccione el certificado adecuado y, finalmente, haga clic en Aceptar para conectarse a Service Fabric Explorer.

    Authenticate

Use Service Fabric PowerShell

  1. Instale el SDK de Microsoft Azure Service Fabric desde Preparación del entorno de desarrollo en Windows en la documentación de Azure Service Fabric.

  2. Una vez completada la instalación, configure las variables de entorno del sistema para asegurarse de que se puede acceder a los cmdlets de Service Fabric desde PowerShell.

    a. Vaya a Panel de control>Sistema y seguridad>Sistema y, finalmente, seleccione Configuración avanzada del sistema.

    Panel de control

    b. En la pestaña Avanzado en Propiedades del sistema, seleccione Variables de entorno.

    c. En Variable del sistema, edite la Ruta de acceso y asegúrese de que C:\Program Files\Microsoft Service Fabric\bin\Fabric\Fabric.Code está en la parte superior de la lista de variables de entorno.

    Lista de variables de entorno

  3. Después de cambiar el orden de las variables de entorno, reinicie PowerShell y, a continuación, ejecute el siguiente script de PowerShell para acceder al clúster de Service Fabric:

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

    Nota

    No hay ningún https:// antes del nombre del clúster en el script. Se requiere el puerto 19000.

Pasos siguientes

Implementación de Kubernetes en Azure Stack Hub