Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tip
Stručná odpověď: Pro rychlé vytvoření základní kostry použijte Kompose, Move2Kube pro širší modernizaci, Docker Compose Bridge, pokud používáte Docker Desktop, a Podman k exportu ze spuštěných kontejnerů nebo podů. Pak výsledky zabalte pomocí Helm nebo Kustomize a opakujte postup s Skaffold nebo Tilt.
Hlavní nástroje: Kompose, Move2Kube, Docker Compose Bridge, Podman, Helm, Kustomize, Skaffold, Tilt a AI asistovaný převod.
V tomto kurzu připravíte vícekontenerovou aplikaci pro použití v Kubernetes. Tento kurz můžete použít bez ohledu na to, jestli začínáte s novou ukázkovou aplikací nebo přizpůsobujete koncepty Docker Compose pro aplikaci, kterou plánujete migrovat na Azure Kubernetes Service (AKS). K místnímu sestavení a otestování aplikace používáte existující vývojové nástroje, jako je Docker Compose. Naučíte se, jak:
- Naklonujte ukázkový zdroj aplikace z GitHub.
- Vytvořte image kontejneru z ukázkového zdroje aplikace.
- Otestujte vícekontenerovou aplikaci v místním prostředí Dockeru.
Důležité
Začínáte znovu? V tomto kurzu můžete připravit a otestovat ukázkovou aplikaci pro AKS. Už používáte Docker Compose? Širší pokyny k plánování najdete v dokumentaci k Kubernetes pro migraci Docker Compose do Kubernetes a přehledu migrace AKS.
Po dokončení bude ve vašem místním vývojovém prostředí spuštěná následující aplikace:
V pozdějších kurzech nahrajete image kontejneru do Azure Container Registry (ACR) a pak ji nasadíte do clusteru AKS.
Než začnete
V tomto kurzu se předpokládá základní znalost klíčových konceptů Dockeru, jako jsou kontejnery, image kontejnerů a příkazy docker. Základní informace o kontejnerech najdete v článku Get started with Docker (Začínáme s Dockerem).
K dokončení tohoto kurzu potřebujete místní vývojové prostředí pro Docker se spuštěnými kontejnery Linuxu. Docker poskytuje balíčky, které konfigurují Docker na systému Mac, Windows nebo Linux.
Poznámka:
Azure Cloud Shell nezahrnuje komponenty Dockeru potřebné k dokončení každého kroku v těchto kurzech. Proto doporučujeme použít úplné vývojové prostředí pro Docker.
Získání kódu aplikace
Aplikace sample použitá v tomto kurzu je základní front app store, včetně následujících nasazení a služeb Kubernetes:
- Store front: Webová aplikace pro zákazníky k zobrazení produktů a objednávání.
- Produktová služba: Zobrazuje informace o produktu.
- Služba objednávek: Vyřizuje objednávky.
- RabbitMQ: Fronta zpráv pro zpracování fronty objednávek.
Vytvořte v počítači adresář a přepněte do tohoto adresáře v příkazové řádce, například v relaci Bash. Tento příklad používá adresář s názvem demorepo , ale můžete použít libovolný název.
mkdir demorepo cd demorepoPomocí Gitu naklonujte ukázkovou aplikaci do vývojového prostředí.
git clone https://github.com/Azure-Samples/aks-store-demo.gitPřejděte do naklonovaného adresáře.
cd aks-store-demo
Kontrola souboru Docker Compose
Ukázková aplikace, kterou vytvoříte v tomto kurzu, používá docker-compose-quickstart YAML soubor z úložiště, které jste naklonovali.
Následující tabulka shrnuje výchozí hodnoty klíče z ukázkového souboru Compose, abyste mohli rychle zjistit, které služby, porty a závislosti kurz používá:
| Service | Zdroj | Vystavený port | Klíčová nastavení |
|---|---|---|---|
| RabbitMQ |
rabbitmq:4.3.2-management-alpine Obrázek |
15672, 5672 |
Výchozí uživatelské jméno username, heslo password |
| Služba objednávek | src/order-service |
3000 |
Připojí se k RabbitMQ na portu 5672 a používá frontu orders |
| Produktová služba | src/product-service |
3002 |
Používá AI_SERVICE_URL=http://ai-service:5001/ |
| Výloha obchodu | src/store-front |
8080 |
Volá produktovou službu na 3002 a objednávkovou službu na 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
Vytvoření imagí kontejneru a spuštění aplikace
Docker Compose můžete použít k automatizaci vytváření imagí kontejnerů a nasazení vícekontenerových aplikací.
Před spuštěním následujících příkazů se ujistěte, že Docker běží v režimu kontejneru Linuxu.
V kořenovém adresáři klonovaného
aks-store-demoúložiště vytvořte image kontejneru, stáhněte image RabbitMQ a spusťte aplikaci pomocídocker composepříkazu:docker compose -f docker-compose-quickstart.yml up -dPomocí příkazu zobrazte vytvořené obrázky
docker images.docker imagesNásledující zhuštěný ukázkový výstup ukazuje vytvořené image:
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 ...Zobrazte spuštěné kontejnery pomocí
docker pspříkazu.docker psNásledující zhuštěný ukázkový výstup ukazuje čtyři spuštěné kontejnery:
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
Testování aplikace v místním prostředí
Pokud chcete zobrazit spuštěnou aplikaci, přejděte do http://localhost:8080 místního webového prohlížeče. Načte se ukázková aplikace, jak je znázorněno v následujícím příkladu:
Na této stránce můžete zobrazit produkty, přidat je do košíku a pak zadat objednávku.
Migrujte své soubory Compose
Pokud už máte aplikaci definovanou v souboru Docker Compose, můžete tento kurz použít jako referenci pro místní ověření a pak převést stávající konfiguraci Compose na manifesty Kubernetes. Pomocí nástrojů, jako jsou Kompose, Move2Kube, Docker Compose Bridge nebo Podman , můžete převést definice Docker Compose na prostředky Kubernetes. Úplnou kompletní cestu převodu najdete v dokumentaci Kubernetes pro migraci Docker Compose do Kubernetes a přehled migrace AKS, pokud přecházíte také z jiného pracovního postupu orchestrace nebo modernizace.
Volba nástroje pro převod
Tuto tabulku použijte, když potřebujete rychlé porovnání nejběžnějších možností compose-to-Kubernetes.
| nástroj | Jednořádkový souhrn |
|---|---|
| Kompose | Rychlá šablona Compose-to-Kubernetes; spusťte kompose convert; počítejte s ručním dočištěním konfigurace úložiště a sond. |
| Move2Kube | Širší proces modernizace; vyžaduje spuštění move2kube plan -s ./path && move2kube transform; robustnější než jednosouborové převaděče. |
| Docker Compose Bridge | Postup převodu pro Docker Desktop; spusťte docker compose bridge convert -o ./k8s/; aktuální informace o podpoře najdete v dokumentaci Dockeru. |
| Podman | Export YAML ze spuštěných kontejnerů nebo podů; spusťte podman kube generate mypod > k8s.yaml; nejlepší pro pracovní postupy založené na nástroji Podman. |
| Helm | Šablony a manifesty balíčků pro opakovaná nasazení; spusťte helm create mychart; nejlépe po převodu. |
| Kustomize | Překryjte změny specifické pro dané prostředí; spusťte kubectl apply -k .; nejlépe po převodu. |
| Skaffold | Vytvořte interní vývojovou smyčku pro Kubernetes; spusťte skaffold init; nejde o přímý převaděč. |
| Naklonění | Průběžná aktualizace při místním vývoji pro Kubernetes; spustit tilt up; vyžaduje postup práce zaměřený na Kubernetes. |
| Převod s asistencí umělé inteligence | Vytvářejte nebo porovnávejte manifesty pomocí AI a před nasazením pak ověřte výstup. |
Který nástroj mám vybrat?
- Pokud chcete rychlé ověření konceptu nebo výchozí manifesty, použijte Kompose.
- Pokud používáte Docker Desktop a chcete nativní cestu Dockeru, použijte Docker Compose Bridge.
- Pokud máte větší migraci nebo modernizaci s více službami, použijte Move2Kube.
- Pokud chcete exportovat ze spuštěných kontejnerů nebo podů, použijte Podman.
- Pokud už máte manifesty a potřebujete balení nebo překryvy, použijte Helm nebo Kustomize.
- Pokud po převodu potřebujete místní vývojovou smyčku Kubernetes, použijte skaffold nebo Tilt.
- Pokud chcete návrhy manifestů nebo vysvětlení migrace, využijte asistenci AI a výsledek ověřte podle oficiálních pokynů Kubernetes a AKS.
Další nástroje, které je potřeba vzít v úvahu:
- 8gwifi.org převodník YAML pro Kubernetes: Užitečný pro rychlé online experimenty s malými soubory Compose.
- Okteto: Užitečné, když chcete cloudovou nebo vzdálenou vývojovou smyčku Kubernetes pro aplikační týmy.
- Devtron: Užitečné, pokud po migraci chcete platformu s workflow pro nasazování do Kubernetes.
- Portainer: Užitečné v případech, kdy chcete mít prostředí pro správu kontejneru řízeného uživatelským rozhraním a prostředí pro správu Kubernetes.
Převeďte své soubory Compose
Jako výchozí bod použijte následující kopírovatelné příkazy:
kompose convert
move2kube plan -s ./path && move2kube transform
docker compose bridge convert -o ./k8s/
podman kube generate mypod > k8s.yaml
skaffold init
Příklad převodu pomocí Kompose
Opensourcový nástroj Kompose převádí běžná nastavení Docker Compose na objekty Kubernetes, jako jsou nasazení a služby.
Na Windows nainstalujtekompose pomocí následujícího příkazu:
curl -L https://github.com/kubernetes/kompose/releases/latest/download/kompose-windows-amd64.exe -o kompose.exeDalší možnosti instalace najdete v pokynech k instalaci Kompose.
Spusťte příkaz Kompose z adresáře, který obsahuje váš
docker-compose.ymlsoubor.kompose convertNež je nasadíte do AKS, projděte si vygenerované soubory YAML Kubernetes.
Převod s asistencí umělé inteligence
Pomocí pomocníka s AI můžete vytvářet manifesty Kubernetes, porovnávat nastavení compose s ekvivalenty Kubernetes nebo vysvětlit, proč převod potřebuje ruční změny.
Obecný příklad výzvy:
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.
Ukázkový prompt pro 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.
Před použitím vždy zkontrolujte výstup AI. Ověřte hodnoty apiVersion, požadavky na prostředky a limity, třídy úložiště, způsob vystavení služby a sondy stavu.
Řešení běžných problémů s překladem
Jak se zpracovávají svazky?
Compose volumes často potřebuje persistentní svazky Kubernetes a třídu úložiště. V AKS nahraďte svazky připojené pouze místně službami, jako jsou Azure Disks nebo Azure Files.
Co nahrazuje depends_on?
Compose depends_on nevynucuje připravenost modulu runtime v Kubernetes. V případě potřeby ji nahraďte sondami připravenosti, spouštěcími sondami nebo logikou init kontejneru.
Jak mám zpracovávat tajné kódy a hodnoty prostředí?
Hodnoty prostředí v Compose se často převádějí na prostředky Kubernetes ConfigMap nebo Secret nebo na integrace se službou Azure Key Vault.
Co se stane s porty a příchozím provozem?
ports Vytvořte mapování na objekty Kubernetes Service a někdy prostředky rozhraní API příchozího přenosu dat nebo brány v závislosti na způsobu publikování aplikace.
Jak se překládají kontroly stavu?
Nastavení healthcheck Compose se obvykle převedou na sondy živosti a připravenosti Kubernetes.
Co se stane se sítěmi v Compose?
Sítě Compose obvykle odpovídají zjišťování služeb v Kubernetes prostřednictvím objektů Service a clusterového DNS, nikoli vlastním bridge sítím.
Jak můžu místně testovat pomocí Kubernetes?
Po převodu nasaďte vygenerované manifesty do místního prostředí Kubernetes, například kind nebo minikube, a pokud chcete zrychlit cyklus úprav, sestavení a nasazení, použijte Skaffold nebo Tilt.
Po konverzi použijte úpravy specifické pro AKS
Kompose vám poskytne výchozí bod, ale obvykle potřebujete provést ruční změny pro AKS:
- Aktualizujte odkazy na image tak, aby směřovaly na vaši službu Azure Container Registry (ACR).
- V závislosti na požadavcích vašich úloh nahraďte místní úložiště a připojení typu bind trvalým úložištěm, například Azure Disks nebo Azure Files.
- Nahraďte secrets v Compose nebo hodnoty specifické pro dané prostředí pomocí Kubernetes Secrets, ConfigMapů nebo integrací Azure Key Vault.
- Zkontrolujte nastavení sítě a zveřejnění, například
LoadBalancer, ingress nebo konfiguraci brány, podle toho, jak chcete aplikaci publikovat v AKS. - Zkontrolujte, zda by stavové komponenty měly zůstat jako Deploymenty, nebo přejít na řešení, jako jsou StatefulSety, pokud potřebujete stabilní identitu nebo určitý způsob práce s úložištěm.
- Ověřte požadavky na prostředky, sondy a veškeré předpoklady o pořadí spouštění, protože chování Compose, jako je
depends_on, se nepřenáší přímo do běhového chování Kubernetes.
Pracovní postup po převodu
- Převeďte soubor Compose pomocí nástroje, například Kompose, Move2Kube, Docker Compose Bridge nebo Podman, případně návrhu zkontrolovaného AI.
- Zkontrolujte a zabezpečte manifesty opravou úložiště, tajných údajů, zpřístupnění služby, sond a odkazů na obrazy.
- Spravujte manifesty pomocí Helmu nebo vrstvěte změny specifické pro prostředí pomocí Kustomize.
- Nahrajte své image do registru, například ACR, a pak je nasaďte pomocí GitOps, CI/CD nebo přímých workflow
kubectl.
Příklad sekvence: kompose convert –> revize manifestů –> nasdílení imagí do ACR –> aktualizace odkazů na image –>kubectl apply nebo helm install.
Vyčištění prostředků
Pokud jste postupovali podle pracovního postupu Docker Compose, můžete zastavit a odebrat spuštěné kontejnery.
Neodstraňujte image kontejnerů, protože je použijete v dalším kurzu. Pokud jste postupovali podle pracovního postupu rozhraní příkazového řádku pro vývojáře Azure, použijte azd down místo docker compose down.
Pomocí příkazu docker compose down zastavte a odeberte instance kontejneru a prostředky.
docker compose down
příkazy rozhraní příkazového řádku pro vývojáře Azure
Při použití azd neexistují žádné ručně zadané závislosti kontejnerových image.
azd zpracovává zřizování, nasazení a čištění vašich aplikací a clusterů pomocí azd up příkazů a azd down příkazů, podobně jako Docker.
Přípravné kroky si můžete přizpůsobit tak, aby používaly buď Terraform, nebo Bicep před nasazením clusteru v sekci infra vašeho azure.yaml. Ve výchozím nastavení tento projekt používá Terraform:
infra:
provider: terraform
path: infra/terraform
Pokud chcete změnit poskytovatele na Bicep, aktualizujte soubor azure.yaml následujícím způsobem:
infra:
provider: bicep
path: infra/bicep
Další kroky
Azure CLI
V tomto kurzu jste vytvořili ukázkovou aplikaci, vytvořili image kontejneru pro aplikaci a pak aplikaci otestovali. Naučili jste se:
- Naklonujte ukázkový zdroj aplikace z GitHub.
- Vytvořte image kontejneru z ukázkového zdroje aplikace.
- Otestujte vícekontenerovou aplikaci v místním prostředí Dockeru.
V dalším kurzu se dozvíte, jak ukládat image kontejnerů do ACR.
Azure Developer CLI
V tomto kurzu jste naklonovali ukázkovou aplikaci pomocí azd. Naučili jste se:
- Naklonujte ukázkovou šablonu
azdz GitHub. - Podívejte se, kde se používají obrazy kontejnerů ze zdrojového kódu ukázkové aplikace.
V dalším kurzu se dozvíte, jak vytvořit cluster pomocí azd šablony, kterou jste naklonovali.