Een eenvoudige app migreren van Service Fabric naar AKS
Dit artikel bevat een voorbeeld van een workloadmigratie waarmee u enkele conceptuele informatie kunt implementeren die wordt gegeven in De migratie van uw workload van Service Fabric naar AKS. Dit artikel bevat informatie over Azure Kubernetes Service (AKS) en een vergelijking van AKS met Azure Service Fabric. Ook worden overwegingen beschreven waarmee u rekening moet houden wanneer u uw workloads migreert.
Dit voorbeeld is gericht op Op Windows gebaseerde Service Fabric-toepassingen die al in een container zijn geplaatst. Azure Service Fabric en Azure Kubernetes Service ondersteunen zowel Windows- als Linux-containers. Als uw toepassing niet in een container is geplaatst, kunt u overwegen om te onderzoeken of u deze in een container kunt opslaan. Het bouwen van een containerinstallatiekopieën voor uw toepassing is een vereiste voor het implementeren van de toepassing in Azure Kubernetes Service. Als de toepassing afhankelijk is van Service Fabric-programmeermodellen (Reliable Services, Reliable Actors, ASP.NET Core en uitvoerbare gastbestanden), moet u waarschijnlijk wat herstructureringen uitvoeren.
Zie Een toepassing voorbereiden voor AKS voor meer informatie over het containeriseren van uw toepassing. Zie ASP.NET app-containerisatie en migratie naar AKS voor meer informatie over het containeriseren van een ASP.NET-toepassing.
Vereisten
Voordat u de migratie start, hebt u het volgende nodig:
Een containerinstallatiekopieën van toepassingen die zijn opgeslagen in Azure Container Registry.
Een Bash-omgeving die u kunt gebruiken om uw Azure-resources te configureren.
Met Azure Cloud Shell kunt u vanuit de browser werken. Zie quickstart voor Bash in Azure Cloud Shell voor meer informatie.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met behulp van de opdracht az login. Volg de stappen die worden weergegeven in de terminal, om het verificatieproces te voltooien. Raadpleeg Aanmelden bij Azure CLI voor aanvullende aanmeldingsopties.
De eerste keer dat u Azure CLI gebruikt, moet u de Azure CLI-extensie installeren wanneer u hierom wordt gevraagd. Raadpleeg Extensies gebruiken met Azure CLI voor meer informatie over extensies.
Het opdrachtregelprogramma kubectl Kubernetes. Als deze nog niet beschikbaar is in uw omgeving, kunt u deze installeren door deze opdracht uit te voeren:
az aks install-cli
Migratiestappen
De eerste stap is het instellen van de resources die u nodig hebt om een Windows-knooppuntgroep te bouwen in Kubernetes. Volg hiervoor de richtlijnen in Een Windows Server-container maken op een AKS-cluster, maar zorg ervoor dat u stopt wanneer u de sectie 'De toepassing implementeren' bereikt. Volg op dat moment de instructies in dit artikel.
De vertaling van het Service Fabric-configuratiemanifest naar een AKS-manifest is een belangrijke stap. In de volgende secties ziet u:
- Servicemanifest-XML die u kunt gebruiken voor een eenvoudige Service Fabric-implementatie.
- Een functioneel equivalent AKS-manifest waarmee Kubernetes-implementatie- en serviceobjecten worden gemaakt.
De twee manifesten wijzen niet een-op-een toe, omdat ze zijn gebaseerd op de functionele paradigma's die specifiek zijn voor elke service, maar hun intenties zijn hetzelfde. (In deze voorbeelden gebruiken variabelen de indeling <VARIABLE DESCRIPTION>
.)
In het AKS-manifest biedt een Deployment
object declaratieve updates voor Pods en ReplicaSets. Een Service
object maakt een toepassing beschikbaar die wordt uitgevoerd op een set pods als een netwerkservice.
Service Fabric-voorbeeldservicemanifest
<?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>
AKS-voorbeeldmanifest
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 biedt een grote set configuratieopties, wat handig is voor ervaren ontwikkelaars. Maar manifesten kunnen groot en complex worden wanneer u er te veel van gebruikt. Voor meer informatie over het implementeren van een eenvoudige migratie raden we u aan implementaties en YAML-manifesten te bekijken.
Nadat u uw manifest hebt, hoeft u dit alleen toe te passen en kunt u uw app bekijken:
kubectl apply -f <YOUR MANIFEST>.yaml
kubectl get deploy <APP NAME>
kubectl get service <SERVICE NAME> --watch
Notitie
In dit voorbeeld wordt de standaard-Kubernetes-naamruimte gebruikt. Deze wordt doorgaans alleen gebruikt voor basisscenario's. In Kubernetes bieden naamruimten een mechanisme voor het isoleren van groepen resources binnen één cluster. Naamruimten zijn belangrijk voor het afdwingen van beveiligings-, netwerk- en resourcegrenzen. Raadpleeg de documentatie voor Kuberetes-naamruimten om een configuratie te bepalen die het beste werkt voor uw toepassing.
Medewerkers
Dit artikel wordt onderhouden door Microsoft. De tekst is oorspronkelijk geschreven door de volgende Inzenders.
Belangrijkste auteurs:
- Ally Ford | Product Manager II
- Paulo Salvatori | Principal Customer Engineer
- Brandon Smith | Program Manager II
Andere Inzenders:
- Mick Alberts | Technische schrijver
- Ayobami Ayodeji | Senior Program Manager
- Moumita Dey Verma | Senior Cloud Solutions Architect
Als u niet-openbare LinkedIn-profielen wilt zien, meldt u zich aan bij LinkedIn.
Volgende stappen
- Blijf op de hoogte van AKS met opmerkingen bij de AKS-release, de AKS-roadmap en Azure-updates.
- Gebruik de nieuwste installatiekopieën van Windows Server om de beveiliging te behouden, de prestaties te verbeteren en overhead te verminderen.
- Gebruik de AKS-releasetracker om up-to-date te blijven met de nieuwste versie van Kubernetes.
- Gebruik de nieuwste SDK voor .NET-workloads.
- Overweeg belastingstests en prestatieafstemming uit te voeren en periodiek CPU- en geheugenquota te evalueren die worden toegepast op AKS-pods: AKS bewaken met Azure Monitor.
- Gebruik de AKS-landingszoneversneller om workloads in AKS te implementeren en best practices toe te passen.