Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Tip
Kort antwoord: Gebruik Kompose voor snelle scaffolding, Move2Kube voor bredere modernisering, Docker Compose Bridge als u Docker Desktop en Podman gebruikt om te exporteren vanuit actieve containers of pods. Pak vervolgens de resultaten in met Helm of Kustomize en herhaal met Skaffold of Tilt.
Belangrijkste hulpprogramma's: Kompose, Move2Kube, Docker Compose Bridge, Podman, Helm, Kustomize, Skaffold, Tilt en AI-ondersteunde conversie.
In deze zelfstudie bereidt u een toepassing met meerdere containers voor voor gebruik in Kubernetes. U kunt deze zelfstudie gebruiken, ongeacht of u begint met een nieuwe voorbeeld-app of docker Compose-concepten aanpast voor een app die u wilt migreren naar Azure Kubernetes Service (AKS). U gebruikt bestaande ontwikkelhulpprogramma's zoals Docker Compose om de toepassing lokaal te bouwen en te testen. U leert het volgende:
- Kloon een voorbeeldtoepassingsbron uit GitHub.
- Maak een containerafbeelding van de voorbeeldapplicatiebron.
- Test de toepassing met meerdere containers in een lokale Docker-omgeving.
Important
Opnieuw beginnen? Gebruik deze zelfstudie om een voorbeeld-app voor AKS voor te bereiden en te testen. Gebruikt u Docker Compose al? Zie de Kubernetes-documentatie voor het migreren van Docker Compose naar Kubernetes en het overzicht van de AKS-migratie voor bredere planningsrichtlijnen.
Als u dit allemaal hebt gedaan, kunt u de volgende toepassing uitvoeren in uw lokale ontwikkelomgeving:
In latere zelfstudies uploadt u de containerafbeelding naar een Azure Container Registry (ACR) en implementeert u deze vervolgens in een AKS-cluster.
Voordat u begint
In deze handleiding wordt ervan uitgegaan dat u een basiskennis hebt van de kernconcepten van Docker, zoals containers, containerimages en docker opdrachten. Zie Aan de slag met Docker voor een uitleg van de basisprincipes van containers.
Voor deze zelfstudie hebt u een lokale Docker-ontwikkelomgeving met Linux-containers nodig. Docker biedt pakketten die Docker configureren op een Mac, Windows of Linux systeem.
Notitie
Azure Cloud Shell bevat niet de Docker-onderdelen die nodig zijn om elke stap in deze zelfstudies te voltooien. Daarom raden wij u aan een volledige Docker-ontwikkelomgeving te gebruiken.
Toepassingscode ophalen
De sample-toepassing die in deze zelfstudie wordt gebruikt, is een eenvoudige store-front-app, waaronder de volgende Kubernetes-implementaties en -services:
- Webwinkel: Webtoepassing voor klanten om producten te bekijken en bestellingen te plaatsen.
- Productservice: toont productgegevens.
- Orderservice: Orders plaatsen.
- RabbitMQ: Berichtenwachtrij voor een orderwachtrij.
Maak een map op uw computer en schakel over naar die map in uw terminalsessie, zoals Bash. In dit voorbeeld wordt een map met de naam demorepo gebruikt, maar u kunt elke gewenste naam gebruiken.
mkdir demorepo cd demorepoGebruik Git om de voorbeeldtoepassing te klonen naar uw ontwikkelomgeving.
git clone https://github.com/Azure-Samples/aks-store-demo.gitNavigeer naar de gekloonde map.
cd aks-store-demo
Docker Compose-bestand controleren
De voorbeeldtoepassing die u in deze zelfstudie maakt, gebruikt het YAML-bestand docker-compose-quickstart YAML-bestand uit de repository die u hebt gekloond.
De volgende tabel bevat een overzicht van de standaardwaarden voor sleutels uit het voorbeeldbestand Opstellen, zodat u snel kunt zien welke services, poorten en afhankelijkheden in de zelfstudie worden gebruikt:
| Dienst | Bron | Blootgestelde poort | Sleutelinstellingen |
|---|---|---|---|
| RabbitMQ |
rabbitmq:4.3.2-management-alpine Afbeelding |
15672, 5672 |
Standaardgebruikersnaam username, wachtwoord password |
| Bestelservice | src/order-service |
3000 |
Maakt verbinding met RabbitMQ op poort 5672 en maakt gebruik van wachtrij orders |
| Productdienst | src/product-service |
3002 |
Gebruikt AI_SERVICE_URL=http://ai-service:5001/ |
| Winkelvoorzijde | src/store-front |
8080 |
Roept de productservice aan 3002 en bestelservice op 3000 |
services:
rabbitmq:
image: rabbitmq:4.3.2-management-alpine
container_name: 'rabbitmq'
restart: always
environment:
- "RABBITMQ_DEFAULT_USER=username"
- "RABBITMQ_DEFAULT_PASS=password"
ports:
- 15672:15672
- 5672:5672
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 30s
timeout: 10s
retries: 5
networks:
- backend_services
order-service:
build: src/order-service
container_name: 'order-service'
restart: always
ports:
- 3000:3000
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service:3000/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- ORDER_QUEUE_HOSTNAME=rabbitmq
- ORDER_QUEUE_PORT=5672
- ORDER_QUEUE_USERNAME=username
- ORDER_QUEUE_PASSWORD=password
- ORDER_QUEUE_NAME=orders
networks:
- backend_services
depends_on:
rabbitmq:
condition: service_healthy
product-service:
build: src/product-service
container_name: 'product-service'
restart: always
ports:
- 3002:3002
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- AI_SERVICE_URL=http://ai-service:5001/
networks:
- backend_services
store-front:
build: src/store-front
container_name: 'store-front'
restart: always
ports:
- 8080:8080
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
- VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
networks:
- backend_services
depends_on:
- product-service
- order-service
networks:
backend_services:
driver: bridge
Containerinstallatiekopieën maken en toepassing uitvoeren
U kunt Docker Compose gebruiken om het bouwen van containerinstallatiekopieën en de implementatie van toepassingen met meerdere containers te automatiseren.
Zorg ervoor dat Docker wordt uitgevoerd in de Linux-containermodus voordat u de volgende opdrachten uitvoert.
Maak vanuit de root van de gekloonde
aks-store-demo-repository de containerimage, download de RabbitMQ-image en start de applicatie met de opdrachtdocker compose:docker compose -f docker-compose-quickstart.yml up -dBekijk de gemaakte afbeeldingen met behulp van de
docker imagesopdracht.docker imagesIn de volgende ingekorte voorbeelduitvoer ziet u de aangemaakte afbeeldingen:
REPOSITORY TAG IMAGE ID aks-store-demo-product-service latest 72f5cd7e6b84 aks-store-demo-order-service latest 54ad5de546f9 aks-store-demo-store-front latest 1125f85632ae ...Bekijk de actieve containers met behulp van de
docker psopdracht.docker psIn de volgende verkorte voorbeelduitvoer ziet u vier actieve containers:
CONTAINER ID IMAGE f27fe74cfd0a aks-store-demo-product-service df1eaa137885 aks-store-demo-order-service b3ce9e496e96 aks-store-demo-store-front 31df28627ffa rabbitmq:4.3.2-management-alpine
Applicatie lokaal testen
Als u de actieve toepassing wilt zien, navigeer naar http://localhost:8080 in een lokale webbrowser. De voorbeeldtoepassing wordt dan geladen, zoals wordt weergegeven in het volgende voorbeeld:
Op deze pagina kunt u producten bekijken, toevoegen aan uw winkelwagen en vervolgens een bestelling plaatsen.
Migreer uw eigen Compose-bestanden
Als u al een toepassing hebt gedefinieerd in een Docker Compose-bestand, kunt u deze zelfstudie gebruiken als referentie voor lokale validatie en vervolgens uw bestaande compose-configuratie converteren naar Kubernetes-manifesten. Gebruik hulpprogramma's zoals Kompose, Move2Kube, Docker Compose Bridge of Podman om Docker Compose-definities te converteren naar Kubernetes-resources. Zie de Kubernetes-documentatie voor het migreren van Docker Compose naar Kubernetes en het overzicht van de AKS-migratie als u ook overstapt van een andere orchestrator- of moderniseringswerkstroom voor het volledige end-to-end-conversiepad.
Een conversieprogramma kiezen
Gebruik deze tabel als u de meest voorkomende Compose-naar-Kubernetes-opties snel wilt vergelijken.
| Tool | Samenvatting in één regel |
|---|---|
| Kompose | Snelle Compose-naar-Kubernetes-scaffold; voer kompose convert uit; reken op handmatige opschoning voor opslag en probes. |
| Move2Kube | Bredere moderniseringswerkstroom; uitvoeren move2kube plan -s ./path && move2kube transform; zwaarder dan conversieprogramma's met één bestand. |
| Docker Compose Bridge | Op Docker Desktop gericht conversietraject; voer docker compose bridge convert -o ./k8s/ uit; zie de Docker-documentatie voor actuele ondersteuningsdetails. |
| Podman | YAML exporteren uit draaiende containers of pods; voer podman kube generate mypod > k8s.yaml uit; het meest geschikt voor op Podman gebaseerde workflows. |
| Helm | Sjabloon- en pakketmanifesten voor herhaalde implementaties; voer helm create mychart uit; bij voorkeur na conversie. |
| Kustomize | Leg omgevingsspecifieke wijzigingen over; voer kubectl apply -k . uit; bij voorkeur na de conversie. |
| Skaffold | Bouw een Kubernetes inner dev-loop; voer skaffold init uit; geen directe converter. |
| Kantelen | Lokale Kubernetes-ontwikkeling live bijwerken; uitvoeren tilt up; hiervoor is een werkstroom met Kubernetes-prioriteit vereist. |
| AI-ondersteunde conversie | Stel manifesten op of vergelijk ze met AI en valideer vervolgens de uitvoer vóór de uitrol. |
Welk hulpprogramma moet ik kiezen?
- Als u een snel bewijs van concept of startersmanifesten wilt, gebruikt u Kompose.
- Als u Docker Desktop gebruikt en een systeemeigen Docker-pad wilt, gebruikt u Docker Compose Bridge.
- Als u een grotere migratie met meerdere services of modernisering hebt, gebruikt u Move2Kube.
- Als u wilt exporteren vanuit actieve containers of pods, gebruikt u Podman.
- Als u al manifesten heeft en pakketten of overlays nodig heeft, gebruik dan Helm of Kustomize.
- Als u na de conversie een lokale Kubernetes-dev-lus nodig hebt, gebruikt u Skaffold of Tilt.
- Als u conceptmanifesten of uitleg over migraties wilt, gebruikt u AI-hulp en valideert u het resultaat op basis van officiële Kubernetes- en AKS-richtlijnen.
Andere hulpprogramma's waarmee u rekening moet houden:
- 8gwifi.org Kubernetes YAML Converter: handig voor snelle online experimenten met kleine Compose-bestanden.
- Okteto: Handig als u een cloud- of externe Kubernetes-ontwikkelingslus wilt voor toepassingsteams.
- Devtron: Handig als u een platformwerkstroom wilt rond Kubernetes-levering na conversie.
- Portainer: handig als u een door gebruikersinterface gestuurde container en Kubernetes-beheerervaring wilt.
Uw compose-bestanden converteren
Gebruik de volgende kopieerbare opdrachten als uitgangspunt:
kompose convert
move2kube plan -s ./path && move2kube transform
docker compose bridge convert -o ./k8s/
podman kube generate mypod > k8s.yaml
skaffold init
Voorbeeld van een Kompose-conversie
Het opensource-hulpprogramma Kompose converteert algemene Docker Compose-instellingen naar Kubernetes-objecten, zoals Implementaties en Services.
Installeer Kompose op Windows met de volgende opdracht:
curl -L https://github.com/kubernetes/kompose/releases/latest/download/kompose-windows-amd64.exe -o kompose.exeZie de installatie-instructies voor Kompose voor andere installatieopties.
Voer Kompose uit vanuit de map die het
docker-compose.ymlbestand bevat.kompose convertControleer de gegenereerde Kubernetes YAML-bestanden voordat u ze implementeert in AKS.
AI-ondersteunde conversie
U kunt een AI-assistent gebruiken om Kubernetes-manifesten te ontwerpen, compose-instellingen te vergelijken met Kubernetes-equivalenten of uit te leggen waarom een conversie handmatige wijzigingen vereist.
Algemene voorbeeldprompt:
Convert this docker-compose.yml into production-ready Kubernetes manifests. Use Apps/v1, move secrets to Kubernetes Secret objects, map local volumes to PersistentVolumeClaims, and add readiness and liveness probes for the web service.
Voorbeeldprompt gericht op AKS:
Convert this docker-compose.yml into AKS-ready Kubernetes manifests. Target an AKS cluster, push images to Azure Container Registry, use Apps/v1 objects, move secrets to Kubernetes Secret objects, map local volumes to Azure Files or Azure Disks-backed PersistentVolumeClaims, and add readiness and liveness probes for the web service.
Bekijk de AI-uitvoer altijd voordat u deze toepast. Valideer apiVersion waarden, resourceaanvragen en limieten, opslagklassen, serviceblootstelling en statustests.
Veelvoorkomende vertaalproblemen afhandelen
Hoe worden volumes verwerkt?
Compose vereist vaak persistente Kubernetes-volumes en een opslagklasse. Vervang in AKS lokale koppelingen door services zoals Azure Disks of Azure Files.
Wat vervangt depends_on?
Compose depends_on dwingt runtime-gereedheid in Kubernetes niet af. Vervang deze door gereedheidstests, opstarttests of init-containerlogica wanneer dat nodig is.
Hoe moet ik geheimen en omgevingswaarden afhandelen?
Compose-omgevingswaarden worden vaak Kubernetes-ConfigMap- of Secret-resources, of integraties met Azure Key Vault.
Wat gebeurt er met poorten en inkomend verkeer?
Stel ports een kaart op voor Kubernetes-objecten Service en soms toegangsbeheerobjecten of gateway-API-resources, afhankelijk van hoe u de toepassing publiceert.
Hoe worden health checks vertaald?
Compose-instellingen healthcheck worden meestal Kubernetes-liveness- en readiness-probes.
Wat gebeurt er met Compose networks?
Compose-netwerken worden doorgaans vertaald naar Kubernetes-servicediscovery via Services en cluster-DNS, in plaats van aangepaste bridge-netwerken.
Hoe test ik lokaal met Kubernetes?
Implementeer na de conversie de gegenereerde manifesten naar een lokale Kubernetes-omgeving, zoals soort of minikube, en gebruik vervolgens Skaffold of Tilt als u een snellere edit-build-deploy-lus wilt.
AKS-specifieke aanpassingen toepassen na conversie
Kompose biedt u een beginpunt, maar u moet meestal handmatige wijzigingen aanbrengen voor AKS:
- Werk afbeeldingsverwijzingen bij om naar uw Azure Container Registry (ACR) te verwijzen.
- Vervang uitsluitend lokale opslag en bind mounts door persistente opslag, zoals Azure Disks of Azure Files, afhankelijk van de vereisten van uw workload.
- Vervang Compose-secrets of omgevingsspecifieke waarden door Kubernetes Secrets, ConfigMaps of Azure Key Vault-integraties.
- Controleer de netwerkinstellingen en instellingen voor blootstelling, zoals
LoadBalancer, ingress of gatewayconfiguratie, afhankelijk van hoe u de app in AKS wilt publiceren. - Controleer of stateful onderdelen als implementaties moeten blijven of moeten worden verplaatst naar patronen zoals StatefulSets wanneer u stabiele identiteit of opslaggedrag nodig hebt.
- Valideer resourceaanvragen, tests en eventuele veronderstellingen voor opstartvolgordes, omdat compose-gedrag, zoals
depends_onniet rechtstreeks vertaalt naar Kubernetes Runtime-gedrag.
Werkstroom na conversie
- Zet het Compose-bestand om met een hulpprogramma zoals Kompose, Move2Kube, Docker Compose Bridge, Podman of een door AI nagekeken conceptversie.
- Controleer en behard de manifesten door verwijzingen naar opslag, geheimen, serviceblootstelling, tests en afbeeldingsverwijzingen te herstellen.
- Verpak de manifesten met Helm of breng omgevingsspecifieke wijzigingen aan met Kustomize.
- Push uw images naar een registry zoals ACR en implementeer vervolgens met GitOps, CI/CD of rechtstreekse
kubectl-workflows.
Voorbeeldvolgorde: kompose convert -> manifesten controleren -> images naar ACR pushen -> imageverwijzingen bijwerken ->kubectl apply of helm install.
Resources opschonen
Als u de Docker Compose-werkstroom hebt gevolgd, kunt u de actieve containers stoppen en verwijderen.
Verwijder de containerimages niet omdat u deze in de volgende tutorial gebruikt. Als u de workflow van de Azure Developer CLI hebt gevolgd, gebruikt u azd down in plaats van docker compose down.
Stop en verwijder de containerinstanties en -resources met behulp van de docker compose down opdracht.
docker compose down
CLI-opdrachten voor ontwikkelaars Azure
Wanneer u azd gebruikt, zijn er geen handmatige containerimage-afhankelijkheden.
azd verwerkt het inrichten, implementeren en opschonen van uw toepassingen en clusters met de azd up en azd down opdrachten, vergelijkbaar met Docker.
U kunt de voorbereidingsstappen aanpassen om Terraform of Bicep te gebruiken voordat u het cluster implementeert in de sectie infra van uw azure.yaml. Dit project maakt standaard gebruik van Terraform:
infra:
provider: terraform
path: infra/terraform
Als u de provider wilt wijzigen in Bicep, werkt u het bestand azure.yaml als volgt bij:
infra:
provider: bicep
path: infra/bicep
Volgende stappen
Azure CLI
In deze zelfstudie hebt u een voorbeeldtoepassing gemaakt, containerinstallatiekopieën voor de toepassing gemaakt en vervolgens de toepassing getest. U hebt geleerd hoe u:
- Kloon een voorbeeldtoepassingsbron uit GitHub.
- Maak een containerafbeelding van de voorbeeldapplicatiebron.
- Test de toepassing met meerdere containers in een lokale Docker-omgeving.
In de volgende zelfstudie leert u hoe u containerafbeeldingen opslaat in een ACR.
Azure Developer CLI (Command Line Interface voor ontwikkelaars in Azure)
In deze zelfstudie hebt u een voorbeeldtoepassing gekloond met behulp van azd. U hebt geleerd hoe u:
- Kloon een voorbeeldsjabloon
azduit GitHub. - Bekijk waar containerafbeeldingen worden gebruikt vanuit de bron van de voorbeeldtoepassing.
In de volgende zelfstudie leert u hoe u een cluster maakt met behulp van de azd sjabloon die u hebt gekloond.