Administración del ciclo de vida de una aplicación en un clúster administrado mediante Azure Resource Manager

Dispone de varias opciones a la hora de implementar aplicaciones de Azure Service Fabric en un clúster administrado 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 de Service Fabric mediante Resource Manager
  • Actualizar recursos de aplicación de Service Fabric mediante Resource Manager
  • Eliminar recursos de aplicación de Service Fabric

Implementación de recursos de aplicación de Service Fabric

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 administrado 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.

Create a storage account

Precaución

El acceso público anónimo a los datos de blobs de la cuenta de almacenamiento presenta un riesgo de seguridad. Al crear una cuenta de almacenamiento, se recomienda deshabilitar el acceso público anónimo a los datos de blob en el nivel de cuenta estableciendo la propiedad AllowBlobPublicAccess en false. Para más información, consulte Corrección del acceso de lectura público anónimo a datos de blobs (implementaciones de Azure Resource Manager).

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.

Puede conceder acceso al contenedor de una de las siguientes formas:

  • Puede asignar un rol RBAC de Azure que conceda permisos al contenedor a una entidad de seguridad, de modo que esa entidad de seguridad pueda acceder a los datos del contenedor a través de la autorización de Microsoft Entra ID. Para más información, vea Autorización del acceso a blobs mediante Microsoft Entra ID.
  • Puede delegar el acceso al contenedor con una firma de acceso compartido para conceder a un cliente acceso a blobs en el contenedor durante un período de tiempo limitado y con permisos específicos. Para obtener más información, consulte Otorgar acceso limitado a recursos de Azure Storage con firmas de acceso compartido (SAS).
  • Puede usar las claves de acceso de la cuenta para autorizar el acceso a los datos de blobs. Este enfoque es el menos seguro, por lo que no se recomienda.

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.

    Package Application

  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.

    Zip Application

  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.

    Upload App Package

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)
version El identificador de recurso, el tipo de aplicación y la versión de la aplicación. /providers/Microsoft.ServiceFabric/managedClusters/sf-cluster-123/applicationTypes/VotingType/versions/1.0.0 Debe coincidir con ApplicationManifest.xml
serviceName El nombre del servicio VotingWeb Debe tener el formato ServiceType.
serviceTypeName Nombre del tipo del servicio VotingWebType 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": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applicationTypes/versions",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationTypeName'), '/', parameters('applicationTypeVersion'))]",
    "location": "[variables('clusterLocation')]",
},
{
    "apiVersion": "2021-05-01",
    "type": "Microsoft.ServiceFabric/managedclusters/applications/services",
    "name": "[concat(parameters('clusterName'), '/', parameters('applicationName'), '/', parameters('serviceName'))]",
    "location": "[variables('clusterLocation')]"
}

Implementación de la aplicación de Service Fabric

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 una plantilla de Azure Resource Manager (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": "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 aplicación de Service Fabric

Nota:

Las aplicaciones no deben eliminarse a través de una plantilla de Azure Resource Manager (ARM), ya que no existe ningún método declarativo para limpiar recursos individuales.

Para eliminar una aplicación de Service Fabric usando 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-AzServiceFabricApplication para eliminar los recursos de la aplicación:

    Remove-AzServiceFabricApplication -ResourceId <String> [-Force]
    

Migración de clústeres clásicos a clústeres administrados

Si va a migrar aplicaciones de clústeres clásicos a clústeres administrados, deberá asegurarse de validar tipos correctamente especificados o detectará errores.

Los siguientes elementos se indican específicamente debido a la frecuencia de uso, pero no pretenden ser una lista exclusiva de diferencias.

  • upgradeReplicaSetCheckTimeout ahora es un entero para administrados, pero una cadena en el SFRP clásico.

Consulte tipos de recursos de aplicaciones de clústeres administrados para obtener una lista completa de propiedades y tipos

Pasos siguientes

Más información sobre la implementación de aplicaciones de clúster administradas: