Ein Yeoman-Generator für Microservices-Infrastruktur. Mitosis ist von Lösungen wie AWS Cloudformation und Google Cloud Deployment Manager inspiriert.
Es ermöglicht Entwicklern, Microservices mit wenigen Mitose-Befehlszeilen zu laden, zu organisieren, auszuführen, weiterzuentwickeln, zu verwalten und zu stoppen.
Und es nutzt die folgenden Lösungen/Technologien (Alpha):
Vagrant
EntwicklungsmodusAnsible
BereitstellungKubernetes/docker swarm
orchestrieren und replizieren Docker-ContainerELK Stack
-ProtokollanalyseTraefik
HTTP-Reverse-ProxyJenkins 2
CI/CD von Microservices mit Job DSL und Pipeline JobAritfactory
ArtefaktenSonarqube
QualitätUm seine Effizienz zu beweisen, generiert Mitosis zwei Standard-Microservices, die über Kafka mit dem Bus einer Veranstaltung verbunden sind
1 Konsument NodeJS & 1 Konsument Apache Spark & 1 Produzent Java
Um diesen Generator verwenden zu können, muss Folgendes installiert sein.
NodeJS
, Node 6 oder höher, zusammen mit NPM 3 oder höher.VirtualBox
(optional), getestet mit Version 5.1.14 r112924.Vagrant
(optional), Version 1.9.1 oder höher. Frühere Versionen von Vagrant funktionieren möglicherweise nicht. mit der Vagrant Ubuntu 16.04-Box und Netzwerkkonfiguration.Ansible
(optional), getestet mit Version 2.2.0.Docker registry
(optional), mindestens ein Docker-Hub-Konto. npm install -g yo
npm install -g generator-mitosis
yo mitosis
Der generierte Code enthält eine Vagrantfile
und zugehörige Ansible
-Playbook-Skripte zur Bereitstellung eines Kubernetes/Docker-Swarm-Knotenclusters mit VirtualBox
und Ubuntu 16.04
(bald CentOS7 und CoreOS).
Vagrant wird zwei Maschinen starten. Jede Maschine verfügt über eine NAT-basierte Netzwerkschnittstelle, über die sie auf das Internet zugreifen kann, und über eine private-network
im Subnetz 192.168.77.0/24. Das private Netzwerk wird für die Kommunikation innerhalb des Clusters verwendet.
Die erstellten Maschinen sind:
NAME | IP-ADRESSE | ROLLE |
---|---|---|
Appname-Manager1 | 192.168.77.21 | Cluster-Manager |
Appname-Worker1 | 192.168.77.31 | Knotenarbeiter |
appname-workern | 192.168.77.3n | Knotenarbeiter |
Nachdem das vagrant up
abgeschlossen ist, sollten der folgende Befehl und die folgende Ausgabe auf dem Cluster-Manager ( appname-manager1 ) sichtbar sein.
Für Docker-Schwarm
vagrant ssh appname-manager1
docker service ls
ID NAME REPLICAS IMAGE COMMAND
654jtwzg8n8k jenkins replicated 2/2 mitosis/jenkins:1.0.0-alpha.0
7xrhx2d74b3l sonarqube replicated 2/2 mitosis/sonarqube:1.0.0-alpha.0
9y8ycnri8e3s kibana replicated 1/1 kibana:5.2.0
m4n86is529p0 viz replicated 1/1 manomarks/visualizer:latest
n49nex6feeh8 artifactory replicated 2/2 mitosis/artifactory:1.0.0-alpha.0
ncccc0wi7j2l registry global 2/2 registry:2
p7znkv9p41sx portainer replicated 1/1 portainer/portainer:1.11.3
r8dznb7p4dpj logstash replicated 1/1 logstash:5.2.0
vxlnldtnrdlh traefik replicated 1/1 traefik:v1.1.2
wmgihhys4z9j elasticsearch replicated 1/1 elasticsearch:5.2.0
docker service inspect --pretty artifactory
ID: 3ou58zc7xlrwwegyh40xxcuq0
Name: artifactory
Mode: Replicated
Replicas: 2
Placement:
UpdateConfig:
Parallelism: 1
On failure: pause
ContainerSpec:
Image: mitosis/artifactory:1.0.0-alpha.0
Resources:
Networks: atqmyyz6jctr34t64o69tyolu
Ports:
Protocol = tcp
TargetPort = 8080
PublishedPort = 9999
Für Kubernetes
vagrant ssh appname-manager1
kubectl -n appname get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
artifactory 10.108.148.112 <nodes> 9999:30003/TCP 35m
jenkins 10.105.77.103 <nodes> 8082:30001/TCP 35m
sonarqube 10.102.141.79 <nodes> 9000:30002/TCP 35m
traefik 10.107.95.12 <nodes> 8080:30004/TCP 35m
kubectl describe svc artifactory -n appname
Name: artifactory
Namespace: appname
Labels: name=artifactory
Selector: name=artifactory
Type: NodePort
IP: 10.108.148.112
Port: <unset> 8080/TCP
NodePort: <unset> 9999/TCP
Endpoints: <none>
Session Affinity: None
vagrant destroy -f && vagrant --caas-mode=swarm up // or vagrant --caas-mode=k8s up
Für die Beta-Version erwartet:
mi create/delete my_microservice.yml
serverless-playground
).bigdata-playground
). Sie können die Entwicklung von Mitosis über das öffentliche Mitosis-Forum auf Trello
verfolgen
Pull requests
sind willkommen;
Der Mitosis-Generator wird unter Version 2.0 der Apache-Lizenz veröffentlicht.