Compartir a través de


Migrar una aplicación sencilla de Service Fabric a AKS

En este artículo se proporciona un ejemplo de migración de cargas de trabajo para ayudarle a implementar parte de la información conceptual proporcionada en Migrar la carga de trabajo de Service Fabric a AKS. En este artículo se proporciona información sobre Azure Kubernetes Service (AKS) y una comparación de AKS con Azure Service Fabric. También se describen las consideraciones que se deben tener en cuenta al migrar las cargas de trabajo.

Este ejemplo se centra en las aplicaciones de Service Fabric basadas en Windows que ya se han contenedorizado. Azure Service Fabric y Azure Kubernetes Service admiten contenedores de Windows y Linux. Si la aplicación no se ha contenedorizado, considere la posibilidad de investigar si puede contenedorizarla. La creación de una imagen de contenedor para la aplicación es un requisito previo para implementar la aplicación en Azure Kubernetes Service. Si la aplicación depende de los modelos de programación de Service Fabric (Reliable Services, Reliable Actors, ASP.NET Core y ejecutables de invitado), es probable que tenga que realizar alguna refactorización.

Para obtener información sobre cómo contenedorizar su aplicación, consulte Preparar una aplicación para AKS. Para obtener información sobre cómo contenedorizar una aplicación de ASP.NET, consulte Contenedorización de aplicaciones de ASP.NET y migración de aplicaciones a AKS.

Requisitos previos

Antes de empezar la migración, necesita:

  • Una imagen de contenedor de aplicación almacenada en Azure Container Registry.

  • Un entorno de Bash que puede usar para configurar los recursos de Azure.

  • La herramienta de línea de comandos kubectl de Kubernetes. Si aún no está disponible en su entorno, puede instalarla ejecutando este comando:

    az aks install-cli
    

Pasos de migración

El primer paso es configurar los recursos que necesita para compilar un grupo de nodos de Windows en Kubernetes. Para ello, siga las instrucciones de Crear un contenedor de Windows Server en un clúster de AKS y deténgase cuando llegue a la sección "Implementar la aplicación". Ahora, siga las instrucciones de este artículo.

La traslación del manifiesto de configuración de Service Fabric a un manifiesto de AKS es un paso importante. En las secciones siguientes se muestra:

  • Un XML de manifiesto de servicio que puede usar para una implementación básica de Service Fabric.
  • Un manifiesto de AKS funcionalmente equivalente que crea objetos de implementación y servicio de Kubernetes.

Los dos manifiestos no son idénticos porque se basan en paradigmas funcionales específicos de cada servicio, pero sus intenciones son las mismas. (En estos ejemplos, las variables usan el formato <VARIABLE DESCRIPTION>).

En el manifiesto de AKS, un objeto Deployment proporciona actualizaciones declarativas para Pods y ReplicaSets. Un objeto Service expone una aplicación que se ejecuta en un conjunto de pods como un servicio de red.

Manifiesto de servicio de Service Fabric de muestra

<?xml version="1.0" encoding="utf-8"?>

<ServiceManifest Name="<APP NAME>"
                 Version="1.0.0"
                 xmlns="http://schemas.microsoft.com/2011/01/fabric"
                 xmlns:xsd="https://www.w3.org/2001/XMLSchema"
                 xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
  <ServiceTypes>
    <StatelessServiceType ServiceTypeName="<SERVICE NAME>" UseImplicitHost="true" />
  </ServiceTypes>
 
  <!-- Code package is your service executable file. -->
  <CodePackage Name="code" Version="1.0.0">
    <EntryPoint>
      <ContainerHost>
        <ImageName><YOUR IMAGE></ImageName>
        <Commands></Commands>
      </ContainerHost>
    </EntryPoint>
    <!-- Pass environment variables to your container. -->
    <EnvironmentVariables>
      <EnvironmentVariable Name="HttpGatewayPort" Value=""/>
      <EnvironmentVariable Name="BackendServiceName" Value=""/>
    </EnvironmentVariables>
 
  </CodePackage>
 
  <ConfigPackage Name="Config" Version="1.0.0" />
 
  <Resources>
    <Endpoints>
      <Endpoint Name="<HTTP ENDPOINT NAME>" UriScheme="http" Port="80" Protocol="http"/>
    </Endpoints>
  </Resources>
</ServiceManifest>

Manifiesto de AKS de muestra

apiVersion: apps/v1
kind: Deployment
metadata:
  name: <APP NAME>
  labels:
    app: <APP NAME>
spec:
  replicas: 1
  template:
    metadata:
      name: <APP NAME>
      labels:
        app: <APP NAME>
    spec:
      nodeSelector:
        "kubernetes.io/os": windows
      containers:
      - name: <SERVICE NAME>
        image: <YOUR IMAGE>
        resources:
          limits:
            cpu: 1
            memory: 800M
        ports:
          - containerPort: 80
    - env:
        - name: HttpGatewayPort
          value: ""
        - name: BackendServiceName
          value: ""
  selector:
    matchLabels:
      app: <APP NAME>
---
apiVersion: v1
kind: Service
metadata:
  name: <SERVICE NAME>
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
  selector:
    app: <SERVICE NAME>

Kubernetes proporciona un gran conjunto de opciones de configuración, lo que resulta útil para los desarrolladores experimentados. Pero los manifiestos pueden volverse grandes y complejos cuando se usan demasiados. Para obtener información sobre cómo implementar una migración sencilla, se recomienda consultar Implementaciones y manifiestos YAML.

Una vez que tenga su manifiesto, solo tiene que aplicarlo y ya podrá inspeccionar su aplicación:

kubectl apply -f <YOUR MANIFEST>.yaml
kubectl get deploy <APP NAME>
kubectl get service <SERVICE NAME> --watch

Nota

En este ejemplo se usa el espacio de nombres predeterminado de Kubernetes, que normalmente solo se usa para escenarios básicos. En Kubernetes, los espacios de nombres proporcionan un mecanismo para aislar grupos de recursos dentro de un único clúster. Los espacios de nombres son importantes para aplicar límites de seguridad, redes y recursos. Para determinar una configuración que funcione mejor para la aplicación, consulte la documentación de espacios de nombres de Kuberetes.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Creadores de entidad de seguridad:

Otros colaboradores:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes