Migrar um aplicativo simples do Service Fabric para o AKS
Este artigo fornece um exemplo de migração de carga de trabalho para ajudá-lo a implementar algumas das informações conceituais fornecidas em Migrar sua carga de trabalho do Service Fabric para o AKS. Esse artigo fornece informações sobre o Serviço Kubernetes do Azure (AKS) e uma comparação do AKS com o Azure Service Fabric. Ele também descreve considerações a serem levadas em conta ao migrar suas cargas de trabalho.
Este exemplo se concentra em aplicativos do Service Fabric baseados no Windows que já foram conteinerizados. O Azure Service Fabric e o Azure Kubernetes Service oferecem suporte a contêineres Windows e Linux. Se seu aplicativo não estiver em contêineres, considere investigar se você pode conteinerizá-lo. Criar uma imagem de contêiner para seu aplicativo é um pré-requisito para implantar o aplicativo no Serviço Kubernetes do Azure. Se o aplicativo depender de modelos de programação do Service Fabric (Serviços Confiáveis, Atores Confiáveis, ASP.NET Core e executáveis convidados), você provavelmente precisará fazer alguma refatoração.
Para obter informações sobre como colocar seu aplicativo em contêineres, consulte Preparar um aplicativo para o AKS. Para obter informações sobre como colocar em contêiner um aplicativo ASP.NET, consulte ASP.NET a conteinerização e migração de aplicativos para o AKS.
Pré-requisitos
Antes de iniciar a migração, você precisa:
Uma imagem de contêiner de aplicativo armazenada no Registro de Contêiner do Azure.
Um ambiente Bash que você pode usar para configurar seus recursos do Azure.
O Azure Cloud Shell permite que você trabalhe a partir do navegador. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.
Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.
Na primeira vez que você usar a CLI do Azure, precisará instalar a extensão da CLI do Azure quando solicitado. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.
A ferramenta de linha de comando kubectl Kubernetes. Se ele ainda não estiver disponível em seu ambiente, você poderá instalá-lo executando este comando:
az aks install-cli
Passos da Migração
A primeira etapa é configurar os recursos necessários para criar um pool de nós do Windows no Kubernetes. Para fazer isso, siga as orientações em Criar um contêiner do Windows Server em um cluster AKS, mas certifique-se de parar quando chegar à seção "Implantar o aplicativo". Nesse ponto, siga as instruções neste artigo.
A tradução do manifesto de configuração do Service Fabric para um manifesto AKS é uma etapa importante. As seções a seguir mostram:
- XML de manifesto de serviço que você pode usar para uma implantação básica do Service Fabric.
- Um manifesto AKS funcionalmente equivalente que cria objetos Kubernetes Deployment and Service .
Os dois manifestos não mapeiam um para um porque se baseiam nos paradigmas funcionais que são específicos de cada serviço, mas suas intenções são as mesmas. (Nesses exemplos, as variáveis usam o formato <VARIABLE DESCRIPTION>
.)
No manifesto AKS, um Deployment
objeto fornece atualizações declarativas para Pods e ReplicaSets. Um Service
objeto expõe um aplicativo que está sendo executado em um conjunto de pods como um serviço de rede.
Exemplo de manifesto de serviço do Service Fabric
<?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>
Exemplo de manifesto AKS
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>
O Kubernetes fornece um grande conjunto de opções de configuração, o que é útil para desenvolvedores experientes. Mas os manifestos podem se tornar grandes e complexos quando você usa muitos deles. Para saber mais sobre como implementar uma migração simples, recomendamos que você revise Implantações e manifestos YAML.
Depois de ter seu manifesto, você só precisa aplicá-lo e você pode assistir ao seu aplicativo:
kubectl apply -f <YOUR MANIFEST>.yaml
kubectl get deploy <APP NAME>
kubectl get service <SERVICE NAME> --watch
Nota
Este exemplo usa o namespace Kubernetes padrão, que geralmente é usado apenas para cenários básicos. No Kubernetes, os namespaces fornecem um mecanismo para isolar grupos de recursos em um único cluster. Os namespaces são importantes para impor limites de segurança, rede e recursos. Para determinar uma configuração que funcione melhor para seu aplicativo, consulte a documentação de namespaces Kuberetes.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Aliado Ford | Gerente de Produto II
- Paolo Salvatori - Brasil | Engenheiro de Clientes Principal
- Brandon Smith - Brasil | Gestor de Programas II
Outros contribuidores:
- Mick Alberts - Brasil | Redator Técnico
- Ayobami Ayodeji - Brasil | Gerente de Programa Sênior
- Moumita Dey Verma - Brasil | Arquiteto de Soluções Cloud Sênior
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
- Mantenha-se atualizado sobre o AKS com as notas de versão do AKS, o Roteiro do AKS e as atualizações do Azure.
- Use as imagens mais recentes do Windows Server para ajudar a manter a segurança, melhorar o desempenho e reduzir a sobrecarga.
- Use o rastreador de lançamento do AKS para manter-se atualizado com a versão mais recente do Kubernetes.
- Use o SDK mais recente para cargas de trabalho .NET.
- Considere a realização de testes de carga e ajuste de desempenho e avalie periodicamente as cotas de CPU e memória aplicadas aos pods AKS: Monitore o AKS com o Azure Monitor.
- Use o acelerador de zona de pouso do AKS para implementar cargas de trabalho no AKS e aplicar as melhores práticas.