Docker Compose vám umožňuje definovat hromádky kontejnerů, které můžete spravovat společně. Je to relativně jednoduchý nástroj, který se původně zaměřoval na místní instalace Dockeru.
Kubernetes je orchestrátor kontejnerů, který přichází s vlastním souborem nástrojů a soubory manifestu. Obvykle je považován za složitější než běžný pracovní postup Dockeru, ale jeho možnosti usnadňují nasazení škálovatelných kontejnerů v produkci.
Kompose je nástroj, který vám umožní vzít soubory Docker Compose a nasadit je do clusterů Kubernetes. Je vyvinut jako součást projektu Kubernetes.
Aktuální verze Kompose jsou omezeny na převod souborů YAML. Převedené manifesty prostředků Kubernetes musíte použít na svůj cluster pomocí nástroje, jako je Kubectl. Starší verze Kompose měly vestavěný up
příkaz, který lze nasadit přímo do vašeho clusteru bez přechodného kroku konverze. Toto bylo odstraněno kvůli rostoucí technické složitosti.
Začínáme
Kompose je k dispozici pro Windows, MacOS a nejoblíbenější distribuce Linuxu. Předem sestavené binární soubory jsou k dispozici v jeho úložišti GitHub. Stáhněte si nejnovější verzi, nastavte bit oprávnění ke spustitelnému souboru a přesuňte binární soubor do adresáře, který je ve vaší cestě. Podporováno je také několik správců balíčků.
curl -L https://github.com/kubernetes/kompose/releases/download/v1.23.0/kompose-linux-amd64 -o komposechmod +x komposesudo mv ./kompose /usr/local/bin/komposeZkuste spustit
kompose
ve vašem terminálu. Zobrazí se základní informace o dostupných příkazech. Spuštěnakompose version
zkontroluje verzi Kompose, kterou používáte.
Nyní se ujistěte, že máte soubor
docker-compose.yml
soubor k dispozici. Zde je základní příklad nastavení webového serveru Apache s databází MySQL:verze:"3"services:apache:image:httpd:nejnovější porty:- 80:80 mysql:image:mysql:latest expose:- 3306 svazků:- mysql:/var/lib/mysqlvolumes:mysql:K nasazení potřebujete také cluster Kubernetes. Buď vytvořte nový cluster s veřejným poskytovatelem cloudu, nebo vytvořte svůj vlastní pomocí projektu, jako je MicroK8s.
Převedení balíčku
kompose convert
příkaz přijímá cestu k souboru Docker Compose a vydává ekvivalentní manifesty prostředků Kubernetes. Používádocker-compose.yml
ve vašem pracovním adresáři, když není zadána žádná cesta. Více souborů je přijímáno pomocí-f
vlajka.kompose convert -f docker-compose.yml -f docker-compose-dev.ymlUvidíte několik řádků výstupu, když Kompose zapisuje soubory manifestu pro každý ze zdrojů ve vašem zásobníku Compose. Jednotlivé soubory se vytvářejí pro každou součást vašeho
docker-compose.yml
. Budou umístěny do vašeho pracovního adresáře.Zde je výsledek převodu
docker-compose.yml
zobrazeno výše:
Pro každou ze služeb Compose bylo vytvořeno nasazení a služba Kubernetes. Tyto zdroje definují moduly, které se mají vytvořit, a také jejich pravidla směrování sítě.
PersistentVolumeClaim existuje také pro kontejner MySQL. Toto představuje svazek nakonfigurovaný v souboru
docker-compose.yml
, poskytující trvalé úložiště pro databázi MySQL, které přežije jakýkoli jednotlivý modul.Pokud si prohlédnete soubory YAML, uvidíte, že se jedná pouze o běžné manifesty Kubernetes kompatibilní s Kubectl. Zde je převedený
apache-deployment.yaml
soubor:apiVersion:apps/v1kind:Deploymentmetadata:anotace:kompose.cmd:kompose convert kompose.version:1.23.0 (bc7d9f4f) creationTimestamp:null labels:io.kompose.service:apache name:apachespec:replicas:1 selector:matchLabels:io.kompose.service:apache strategie:{} template:metadata:anotace:kompose.cmd:kompose convert kompose.version:1.23.0 (bc7d9f4f) creationTimestamp:null labels:io.kompose.service:apache spec:kontejnery :- obrázek:httpd:nejnovější název:porty apache:- containerPort:80 zdrojů:{} restartPolicy:Alwaysstatus:{}
spec
nasazení je docela podobný definici kontejneru Apache v původnímdocker-compose.yml
. V případě této jednoduché služby ji lze snadno namapovat na objekt Kubernetes. Zbytek souboru většinou tvoří metadata nastavení, včetně anotací specifických pro Kompose, které vám umožňují identifikovat zdroje vytvořené pomocí tohoto nástroje.Nasazení do vašeho clusteru
Nasaďte sadu souborů manifestu obvyklým způsobem pomocí
kubectl apply
. Je dobré je uložit do samostatného adresáře dodocker-compose.yml
, takžekubectl
se také nepokouší vybrat tento nekompatibilní soubor.použít kubectl.Prostředky budou poskytovány uvnitř vašeho clusteru. Zprovoznění vašich služeb může několik minut trvat. Zkontrolujte své nasazení pomocí
kubectl get deployments
. Když jeAVAILABLE
sloupec zobrazuje1
, vaše pracovní zatížení by mělo být dostupné.
Nyní můžete své nasazení aktualizovat úpravou vygenerovaných manifestů a opětovným spuštěním
kubectl apply
. Pokud byste chtěli škálovat Apache na tři repliky, otevřeteapache-deployment.yaml
, změňtereplicas
pole na3
a použijte upravený manifest.Můžete také průběžně aktualizovat svůj soubor Docker Compose. Spusťte
kompose convert
znovu, abyste získali nejnovější interpretaci obsahu Kubernetes, a poté znovu použijte výstup do svého clusteru. Uvědomte si, že to přepíše všechny změny, které jste od té doby ručně použili.Omezení
Kompose obvykle dobře funguje se soubory Docker Compose pomocí nejběžnějších funkcí a osvědčených postupů. Může vytvářet kontejnery, odhalovat porty a poskytovat trvalé úložiště prostřednictvím svazků.
Ne každá konverze však bude dokonalá. Některé funkce Compose nemají přímý ekvivalent ve světě Kubernetes, zatímco jiné budou mapovat způsobem, který nemusí splňovat vaše potřeby. Použití nasazení a služeb v tomto příkladu je jedním z takových případů – pokud jste nasazovali přímo do Kubernetes, můžete k odhalení své služby použít pravidlo Ingress, ale toto není vytvořeno společností Kompose. Zaujatá rozhodnutí se řeší výběrem nejjednodušší možnosti.
Setkáte se také s problémy se svazky. Soubory Docker Compose mohou svázat připojené soubory a složky z hostitele do kontejnerů. S Kubernetes to není možné, takže budete potřebovat alternativní řešení. Kromě toho, i když Kompose může vytvářet zdroje pro PersistentVolumeClaims, nevytvoří skutečné PersistentVolumes. Než se pokusíte nasadit své manifesty, budete muset mít v clusteru již dostupný svazek.
Kompletní tabulka podporovaných funkcí a podrobností o převodu je nabízena jako součást dokumentace Kompose. Než začnete s jakýmkoliv převodem, stojí za to zkontrolovat, zda jsou funkce Docker Compose, které používáte, podporovány.
Závěr
Kompose zjednodušuje migraci z Docker Compose do clusteru Kubernetes. Automatizuje kroky, které byly dříve únavné, časově náročné a náchylné k chybám. Je to dobrá pomocná pomůcka, i když ne nástroj, který by měl být provozován bez určité míry dohledu.
Kompose konverze nejsou univerzálně použitelné, takže nebudou vhodné pro všechna prostředí. Vždy se vyplatí zkontrolovat emitované manifesty, než je použijete na svůj cluster. V některých případech je nejlepší použít Kompose jako referenci – převeďte svůj
docker-compose.yml
, podívejte se, jaký je výsledek, a poté jej použijte jako výchozí bod pro vytvoření manifestů, které jsou plně kompatibilní s vaší aplikací a clusterem.
Docker