Modelo de recurso de aplicación de Service Fabric

Dispone de varias opciones a la hora de implementar aplicaciones de Azure Service Fabric en un clúster de Service Fabric y la más aconsejable es usar Azure Resource Manager, ya que de esa forma es posible describir las aplicaciones y los servicios en JSON y, después, implementarlos en la misma plantilla de Resource Manager en que se encuentre el clúster. A diferencia del uso de PowerShell o la CLI de Azure para implementar y administrar aplicaciones, si se utiliza Resource Manager, no es preciso esperar a que el clúster esté preparado; el registro, aprovisionamiento e implementación de las aplicaciones se pueden realizar en un solo paso. Resource Manager es la mejor opción para administrar el ciclo de vida de las aplicaciones en el clúster. Para obtener más información, consulte Procedimientos recomendados: Infraestructura como código.

La administración de las aplicaciones como recursos en Resource Manager puede ayudarle a obtener mejoras en estas áreas:

  • Registro de auditoría: Resource Manager audita todas las operaciones y mantiene un registro de actividad detallado. Un registro de actividad puede ayudarle a realizar un seguimiento de los cambios realizados tanto en las aplicaciones como en el clúster.
  • Control de acceso basado en rol: para administrar el acceso a los clústeres y a las aplicaciones implementadas en el clúster, utilice la misma plantilla de Resource Manager.
  • Eficiencia de la administración: el uso de Resource Manager proporciona una ubicación individual (Azure Portal) desde la que se pueden administrar tanto el clúster como las implementaciones de aplicaciones críticas.

En este documento, aprenderá a:

  • Implementar recursos de aplicación mediante Resource Manager.
  • Actualizar recursos de aplicación mediante Resource Manager.
  • Eliminar recursos de aplicación.

Implementación de recursos de aplicación

Estos son los pasos de alto nivel que se dan para implementar una aplicación y sus servicios mediante el modelo de recursos de aplicación de Resource Manager:

  1. Empaquetar el código de la aplicación.
  2. Cargar el paquete.
  3. Hacer referencia a la ubicación del paquete en una plantilla de Resource Manager como un recurso de aplicación.

Para obtener más información, consulte Empaquetado de una aplicación.

Después, cree una plantilla de Azure Resource Manager, actualice el archivo de parámetros con los detalles de la aplicación e implemente la plantilla en el clúster de Service Fabric. Explore los ejemplos.

Crear una cuenta de almacenamiento

Para implementar una aplicación a partir de una plantilla de Resource Manager, es preciso tener una cuenta de almacenamiento. La cuenta de almacenamiento se usa para almacenar provisionalmente la imagen de la aplicación.

Para almacenar provisionalmente aplicaciones se puede reutilizar una cuenta de almacenamiento existente, o bien se puede crear una. Si se usa una cuenta de almacenamiento existente, este paso se puede omitir.

Crear una cuenta de almacenamiento

Configuración de una cuenta de almacenamiento

Después de crear la cuenta de almacenamiento cree un contenedor de blobs en el que se puedan almacenar provisionalmente las aplicaciones. En Azure Portal, vaya a la cuenta de Azure Storage en que desea almacenar las aplicaciones. Seleccione Blobs>Agregar contenedor.

Para proteger los recursos del clúster es preciso establecer el nivel de acceso público en privado. Hay varias formas de conceder acceso:

El ejemplo de la siguiente captura de pantalla usa acceso de lectura anónimo para los blobs.

Creación de un blob

Almacenamiento provisional de la aplicación en una cuenta de almacenamiento

Para poder implementar una aplicación, es preciso almacenarla temporalmente en un almacenamiento de blobs. En este tutorial, se crea el paquete de aplicaciones manualmente. Tenga en cuenta que este paso se puede automatizar. Para más información, consulte Empaquetado de una aplicación.

En este tutorial, se usa la aplicación de ejemplo de una votación.

  1. En Visual Studio, haga clic con el botón derecho en el proyecto Voting (Votación) y seleccione Paquete.

    Empaquetado de una aplicación

  2. Vaya al directorio .\service-fabric-dotnet-quickstart\Voting\pkg\Debug. Comprima el contenido en un archivo denominado Voting.zip. El archivo ApplicationManifest.xml debe estar en la raíz en el archivo zip.

    Comprimir la aplicación

  3. Cambie la extensión .zip por .sfpkg.

  4. En Azure Portal, en el contenedor apps de su cuenta de almacenamiento, seleccione Cargar y, después, cargue Voting.sfpkg.

    Cargar el paquete de la aplicación

La aplicación ya está almacenada provisionalmente y puede crear la plantilla de Resource Manager para implementar la aplicación.

Creación de la plantilla de Resource Manager

La aplicación de ejemplo contiene plantillas de Azure Resource Manager que se pueden usar para implementar la aplicación. Los nombres de los archivos de plantilla son UserApp.json y UserApp.Parameters.json.

Nota:

El archivo UserApp.Parameters.json debe actualizarse con el nombre del clúster.

Parámetro Descripción Ejemplo Comentarios
clusterName Nombre del clúster en el cual se realiza la implementación sf-cluster123
application Nombre de la aplicación Voting (Votación)
applicationTypeName Nombre del tipo de la aplicación VotingType Debe coincidir con ApplicationManifest.xml
applicationTypeVersion Versión del tipo de aplicación 1.0.0 Debe coincidir con ApplicationManifest.xml
serviceName El nombre del servicio Voting~VotingWeb Debe tener el formato ApplicationName~ServiceType
serviceTypeName Nombre del tipo del servicio VotingWeb Debe coincidir con ServiceManifest.xml
appPackageUrl Dirección URL del almacén de blobs de la aplicación https://servicefabricapps.blob.core.windows.net/apps/Voting.sfpkg Dirección URL del paquete de aplicación en el almacén de blobs (el procedimiento para establecerla se describirá más adelante en este mismo artículo)
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2019-03-01",
    "type": "Microsoft.ServiceFabric/clusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Implementación de la aplicación

Ejecute el cmdlet New-AzResourceGroupDeployment para implementar la aplicación en el grupo de recursos que contiene el clúster:

New-AzResourceGroupDeployment -ResourceGroupName "sf-cluster-rg" -TemplateParameterFile ".\UserApp.Parameters.json" -TemplateFile ".\UserApp.json" -Verbose

Actualización de la aplicación de Service Fabric mediante Resource Manager

Importante

Cualquier servicio implementado a través de la definición de JSON de ARM se debe quitar de la sección DefaultServices del archivo ApplicationManifest.xml correspondiente.

Cualquier aplicación implementada en un clúster de Service Fabric se puede actualizar por una de estas razones:

  • Se agrega un nuevo servicio a la aplicación. Se debe agregar una definición de servicio a los archivos service-manifest.xml y application-manifest.xml cada vez que se agrega un servicio a la aplicación. Para reflejar una versión nueva de la aplicación, también debe cambiar la versión del tipo de aplicación de la 1.0.0 a la 1.0.1 en UserApp.Parameters.json:

    "applicationTypeVersion": {
        "value": "1.0.1"
    },
    "serviceName2": {
        "value": "Voting~VotingData"
    },
    "serviceTypeName2": {
        "value": "VotingDataType"
    }
    
  • Se agrega una nueva versión de un servicio existente a la aplicación. Entre los ejemplos se incluyen los cambios en el código de la aplicación y las actualizaciones de la versión y el nombre del tipo de aplicación. Para esta actualización, actualice UserApp.Parameters.json como se indica a continuación:

     "applicationTypeVersion": {
        "value": "1.0.1"
    },
    

Eliminación de recursos de la aplicación

Para eliminar una aplicación implementada mediante el modelo de recursos de aplicación en Resource Manager:

  1. Use el cmdlet Get-AzResource para obtener el identificador de recurso de la aplicación:

    Get-AzResource  -Name <String> | f1
    
  2. Use el cmdlet Remove-AzResource para eliminar los recursos de la aplicación:

    Remove-AzResource  -ResourceId <String> [-Force] [-ApiVersion <String>]
    

Preguntas y respuestas frecuentes

Error: "El nombre de la aplicación debe ser un prefijo del nombre del servicio" Respuesta: Asegúrese de que el nombre del servicio tenga el siguiente formato: ProfileVetSF~CallTicketDataWebApi.

Pasos siguientes

Obtenga información sobre el modelo de recurso de la aplicación: