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:
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.
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.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
En el portal de usuarios, vaya a + Crear un recurso>Proceso>Clúster de Service Fabric.
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.
- Dirección URL del paquete de implementación de Service Fabric: https://download.microsoft.com/download/8/3/6/836E3E99-A300-4714-8278-96BC3E8B5528/6.5.641.9590/Microsoft.Azure.ServiceFabric.WindowsServer.6.5.641.9590.zip
- Dirección URL del paquete del entorno de ejecución de Service Fabric: https://download.microsoft.com/download/B/0/B/B0BCCAC5-65AA-4BE3-AB13-D5FF5890F4B5/6.5.641.9590/MicrosoftAzureServiceFabric.6.5.641.9590.cab
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.
En la página Configuración de red, puede especificar los puertos específicos que debe abrir para las aplicaciones:
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.
- Almacén de claves de origen: especifique toda la cadena de
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
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.
d. En la página Almacén de certificados, seleccione Personal y complete el asistente.
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.
b. En la hoja Dirección IP pública aparece el nombre de dominio completo como Nombre DNS.
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.
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).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.
Use Service Fabric PowerShell
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.
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.
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.
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.