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.
Azure Cloud Shell le permite trabajar desde el explorador. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
La primera vez que use la CLI de Azure, debe instalar la extensión de la CLI de Azure cuando se le solicite. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI 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:
- Ally Ford | Administradora de productos II
- Paolo Salvatori | Ingeniero principal de clientes
- Brandon Smith | Administrador de programas II
Otros colaboradores:
- Mick Alberts | Escritor técnico
- Ayobami Ayodeji | Jefe de programas sénior
- Moumita Dey Verma | Arquitecto sénior de soluciones en la nube
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Pasos siguientes
- Manténgase al día en AKS con las notas de la versión de AKS, el plan de desarrollo de AKS y las actualizaciones de Azure.
- Use las imágenes más recientes de Windows Server para mantener la seguridad, mejorar el rendimiento y reducir la sobrecarga.
- Use el seguimiento de versiones de AKS para mantenerse al día con la versión más reciente de Kubernetes.
- Use el SDK más reciente para cargas de trabajo de .NET.
- Considere la posibilidad de realizar pruebas de carga y ajustes del rendimiento y evaluar periódicamente las cuotas de CPU y memoria que se aplican a los pods de AKS: Supervisar AKS con Azure Monitor.
- Use el acelerador de zonas de aterrizaje de AKS para implementar cargas de trabajo en AKS y aplicar los procedimientos recomendados.