GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nasadit balíčky Docker Compose na Kubernetes pomocí Kompose

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/kompose 

Zkuste spustit kompose ve vašem terminálu. Zobrazí se základní informace o dostupných příkazech. Spuštěna kompose 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.yml

Uvidí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ím docker-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 do docker-compose.yml , takže kubectl 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ž je AVAILABLE sloupec zobrazuje 1 , 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řete apache-deployment.yaml , změňte replicas pole na 3 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
  1. Jak nainstalovat Jenkins pomocí Docker

  2. Jak zabezpečit citlivá data pomocí tajemství Docker Compose

  3. Jak používat profily služeb ke zjednodušení zásobníků v Docker Compose

  1. Jak nasadit mikroslužby s Dockerem

  2. Jak používat Docker Compose

  3. Jak nasadit aplikace s Rancherem

  1. Jak nasadit RabbitMQ na Kubernetes

  2. Jak nasadit dynamický DNS server s Dockerem na Debianu 10

  3. Jak nasadit kontejner nginx s Dockerem na Linode