So erstellen Sie eine lokale Entwicklungsumgebung für Kubernetes?
Kubernetes zu sein scheint, alle über die Bereitstellung von Containern zu einem cloud-Cluster. Was es scheint nicht zu berühren, ist Entwicklungs-und staging-Umgebungen (oder so).
Während der Entwicklung, die Sie wollen, um so nah wie möglich an Produktion-Umgebung mit einigen wichtigen änderungen:
- Die lokal bereitgestellt werden (oder zumindest irgendwo, wo Sie und nur Sie Zugang zu)
- Verwenden neuesten source code auf Seite aktualisieren (angenommen, dass Ihr eine website, ideal Seite auto-refresh auf die lokale Datei speichern, die getan werden kann, wenn Sie mount-source-code und einige Sachen wie Yeoman).
Ebenso kann man möchte eine nicht-öffentliche Umgebung zu tun continuous integration.
Tut Kubernetes unterstützen diese Art von Entwicklungsumgebung oder ist es etwas, das man hat, zu bauen, in der Hoffnung, dass während der Produktion, es wird immer noch funktionieren?
- Werfen Sie einen Blick auf Openshift Origin. Es ist die nächste version von Openshift und baut auf Kubernetes. Läuft standalone in einem Docker-container.
- Ich war mehr auf der Suche bereitstellen, auch auf den Google-Cloud, aber das sind mehr deployment-Lösungen. Wenn Sie eine Lösung haben, die mit OpenShift Origin, ermöglicht die lokale Entwicklung (vor allem die reload aktuelle lokale Datei), dann teilen Sie diese bitte als Antwort, würde mich interessieren.
- Hast du eine Lösung gefunden werden? Ich habe kubernetes läuft top sofort in meinem lokalen Entwicklungs-cluster. Ich bin der Planung zu bauen, microservices in gehen eingesetzt werden und in Containern kubernetes. Ich würde gerne in der Lage sein, meine änderungen zu speichern und das automatische erstellen der binären und der relaunch der Hülsen. Haven ' T hatte wirklich eine änderung, um es zu testen, aber ich denke, dass Gebäude in der binären auf die vms und dann Wiederaufnahme der pod kann ein bisschen langsam.
- Es ist schon mehr ein Jahr her, seit dieser veröffentlicht wurde. Gibt es eine gute lokale Entwicklung-workflow mit kubernetes?
- Sie könnten Blick auf die
microk8s
ist, ist es leicht k8s-installation für den lokalen Rechner. Ich habe gepostet, die Antwort für dasselbe, wie es zu installieren. Es ist die installation nur etwa eine minute. - Sie können verwenden "portainer" für die Entwicklung Zweck. Es ist einfach und nicht verlangen zu erinnern, Befehl oder yaml manifestieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update (2016-07-15)
Mit der Veröffentlichung von Kubernetes 1.3, Minikube ist jetzt die empfohlene Methode zur Ausführung von Kubernetes auf Ihrem lokalen Rechner für die Entwicklung.
Können Sie laufen Kubernetes lokal über Docker. Haben Sie erst einmal einen Knoten laufen, können Sie starten einen pod mit einem einfachen web-server und mountet ein volume aus, auf dem host-Computer installiert. Wenn Sie auf dem web-server gelesen werden, von der Lautstärke und wenn Sie geändert habe, die Datei auf Ihre lokale Festplatte, kann es dazu dienen, die neueste version.
Haben wir ein Werkzeug, dies zu tun. Die grundlegende Idee ist, dass man remote Kubernetes-cluster, effektiv eine staging-Umgebung, und klicken Sie code ausführen, der lokal und es wird umgeleitet, um die remote-cluster. Sie erhalten transparenten Netzwerk-Zugriff von environment-Variablen übernommen werden, der Zugriff auf Datenträger... so nah wie möglich-remote-Umgebung, aber mit dem code lokal ausgeführt und unter Ihrer vollen Kontrolle.
So können Sie tun, Leben, Entwicklung, sagen. Docs bei http://telepresence.io
In der Art von "hot reload" ist etwas, was wir haben Pläne hinzufügen, ist aber nicht so einfach, wie es heute sein könnte. Allerdings, wenn Sie abenteuerlustig fühlen, können Sie verwenden Sie rsync mit docker exec, kubectl exec oder osc exec (alle tun das gleiche in etwa) zur Synchronisierung eines lokalen Verzeichnisses in einen container, wenn es geändert. Sie können rsync mit kubectl oder osc-exec-wie so:
Ein weiterer guter Ausgangspunkt ist dieser Vagrant-setup, esp. wenn Ihr host-OS ist Windows. Die offensichtlichen Vorteile, die
Nachteile - Sie brauchen viel RAM und VirtualBox VirtualBox ist... für besser oder schlechter.
Einer gemischten Vorteil /Nachteil ist das zuordnen von Dateien über NFS. In unserem setup haben wir zwei Gruppen erstellt von RC-Definitionen - eine, laden Sie einfach ein docker image unseres application-Servern; das andere mit 7 extra-Zeilen, die beim einrichten der Datei-Zuordnung von HostOS -> Gast -> VirtualBox -> CoreOS -> Kubernetes-pod; überschreiben der source-code aus dem Andockfenster Bild.
Der Nachteil ist NFS-Datei-cache - es ist problematisch, ohne es, ist es langsam problematisch. Auch die Einstellung
mount_options: 'nolock,vers=3,udp,noac'
nicht loszuwerden, caching-Probleme völlig, aber es funktioniert die meiste Zeit. Einige Schluck Aufgaben lief in ein container kann dauern 5 Minuten, wenn Sie 8 Sekunden auf host-OS. Ein guter Kompromiss zu sein scheintmount_options: 'nolock,vers=3,udp,ac,hard,noatime,nodiratime,acregmin=2,acdirmin=5,acregmax=15,acdirmax=15'
.Als für die automatische code-nachladen, das ist sprachspezifisch, aber wir sind glücklich mit Django-devserver ist für Python, und Nodemon für Node.js. Für frontend-Projekte, können Sie natürlich eine Menge zu tun mit so etwas wie gulp+browserSync+Uhr, aber für viele Entwickler ist es nicht schwer, zu dienen, von Apache und mache nur traditionell schwer zu regenerieren.
Wir halten Sie 4 Sätze von yaml-Dateien für Kubernetes. Dev, "devstable", stage, prod. Die Unterschiede zwischen diesen sind
Es ist sehr nützlich, um eine Menge von bash aliases und AutoVervollständigen - kann ich nur
rec users
und es wirdkubectl delete -f ... ; kubectl create -f ...
. Wenn ich will das ganze set-up begonnen, ich tipperecfo
, und es erschafft ein Dutzend Dienste, ziehen die neueste docker-images, das einspielen der aktuellen db-dump von der Inszenierung env und Reinigung alten-Andockfenster-Dateien, um Speicherplatz zu sparen.Ich habe gerade angefangen mit Skaffold
Es ist wirklich hilfreich, um die änderungen im code automatisch zu einem lokalen cluster.
Zur Bereitstellung einer lokalen cluster -, der beste Weg ist Minikube oder einfach Docker für Mac und Windows, die beide umfasst einen Kubernetes-Schnittstelle.
Sehen https://github.com/kubernetes/kubernetes/issues/12278 für so mounten Sie ein volume aus der host-Maschine, die äquivalent:
Einen schönen lokalen Entwicklungs-feedback-Schleife ist ein Thema, das der raschen Entwicklung in den Kubernetes-ökosystem.
Brechen dieser Frage unten, es gibt ein paar tools, die ich glauben, unterstützen dieses Ziel gut.
Docker für Mac Kubernetes
Docker für Mac Kubernetes (Andockfenster Desktop ist der generische cross-Plattform-name), liefert eine ausgezeichnete option für die lokale Entwicklung. Für die Virtualisierung verwendet es HyperKit welche auf die native Hypervisor-framework in macOS anstelle von VirtualBox.
Den Kubernetes-Funktion erschien zuerst als beta auf dem Rand-Kanal in Januar 2018 und hat einen langen Weg seit, ein zertifizierter Kubernetes in April 2018, und Abschluss auf den stabilen Kanal in Juli 2018.
Meiner Erfahrung nach, ist es viel einfacher, mit zu arbeiten, als Minikube, besonders auf macOS, und vor allem, wenn es um Fragen geht wie RBAC -, Ruder -, hypervisor -, privat-Registrierung, etc.
Helm
Soweit verteilen Ihren code ein und ziehen updates lokal, Helm ist eine der beliebtesten Optionen. Sie können veröffentlichen Sie Ihre Anwendungen über CI/CD die Spitze der charts (und auch die zugrunde liegenden Docker-images, die Sie verweisen). Danach ziehen Sie diese Karten aus eurem Helm Diagramm registry, lokal und Aktualisierung auf Ihrem lokalen cluster.
Azure Entwurf
Können Sie auch ein tool verwenden, wie Azure-Entwurf zu tun, einfache lokale Bereitstellung und generieren basic Helm-charts vom gemeinsamen Sprache Vorlagen, in der Art, wie buildpacks, zu automatisieren, das Stück des Puzzles.
Skaffold
Skaffold ist wie Azure Entwurf ist aber ausgereifter, viel umfangreicher ist, und von Google gemacht. Es hat eine sehr modulare Architektur. Ich denke, dass in Zukunft mehr Menschen nutzen es für lokale app-Entwicklung für Kubernetes.
Wenn Sie verwendet haben, zu Reagieren, ich denke, der Skaffold als "Erstellen Sie Reagieren App für Kubernetes".
Kompose oder Verfassen Sie auf Kubernetes
Docker Compose, während unabhängig von Kubernetes, ist eine alternative, die einige Unternehmen nutzen, um eine einfache, leichte und tragbare lokalen Entwicklungsumgebung Analog zu den Kubernetes-Umgebung in der Produktion. Aber dieser Weg bedeutet divergierenden Ihre Produktion und lokale Entwicklung-setups.
Kompose ist ein Docker Compose auf Kubernetes-Konverter. Dies könnte ein nützlicher Weg für jemanden, der bereits den Betrieb Ihrer Anwendungen als Sammlung von Containern vor Ort.
Verfassen auf Kubernetes ist ein vor kurzem als open Source veröffentlicht (Dezember 2018) Angebot von Docker ermöglicht die Bereitstellung von Docker Compose-Dateien direkt auf einem Kubernetes cluster über eine custom-controller.
Kubespary hilfreich ist die Einrichtung von lokalen Clustern. Meist habe ich verwendet vagrant basierten cluster auf der lokalen Maschine.
Kubespray Konfiguration
Sie könnte zwicken diese Variablen, um den gewünschten kubernetes-version.
Als vorher angegeben von Robert, minikube ist der Weg zu gehen.
Hier ist eine Kurzanleitung für die ersten Schritte mit minikube. Die Allgemeinen Schritte sind:
Installieren minikube
Erstellen minikube cluster (in einer Virtuellen Maschine, die Sie werden kann, VirtualBox oder Docker für Mac-oder HyperV-im Falle von Windows)
Erstellen Andockfenster Bild von Ihrer Anwendung-Datei (mit Dockerfile)
Führen Sie das Bild durch erstellen einer Bereitstellung
Erstellen Sie einen Dienst, welche macht Ihre Anwendung so, dass Sie darauf zugreifen können.
Den Nachteil der Verwendung von
minkube
ist, dass es erzeugt eine weitere virtuelle Maschine über Ihre Maschine. Auch mit der neuestenminikube
- version, die mindestens benötigt werden 2 CPU und 2 GB RAM von Ihrem system, das macht es ziemlich schwer, Wenn Sie nicht über das system mit genügend Ressourcen.Dies ist der Grund, warum ich wechselte zu
microk8s
für die Entwicklung auf kubernetes und ich Liebe es.microk8s
unterstützt die DNS, local-storage, dashboard, istio, ingress und vieles mehr, alles, was Sie brauchen, testen Sie Ihre microservices.Es wurde entwickelt, um eine schnelle und leichte upstream-Kubernetes-installation isoliert von Ihrer lokalen Umgebung. Diese isolation wird erreicht durch die Verpackung alle Binärdateien für Kubernetes, Andockfenster.io, iptables, und CNI in einem einzigen snap-Paket.
Einem einzigen Knoten kubernetes-cluster installiert werden kann, innerhalb einer minute mit einem einzigen Befehl:
Stellen Sie sicher, dass Ihr system nicht alle Andockfenster oder kubelet-Dienst ausgeführt wird.
Microk8s
installiert alle benötigten Dienste automatisch.Bitte haben Sie einen Blick auf den folgenden link, um andere add-ons in
microk8s
.Überprüfen Sie den status mit: