Un generador de infraestructura de microservicios. Mitosis se inspira en soluciones como AWS Cloudformation y Google Cloud Deployment Manager.
Permite a los desarrolladores cargar, organizar, ejecutar, evolucionar, administrar y detener microservicios utilizando pocas líneas de comandos de mitosis.
Y aprovecha las siguientes soluciones/tecnologías (alfa):
Vagrant
Ansible
Kubernetes/docker swarm
organiza y replica contenedores acoplablesELK Stack
Traefik
Jenkins 2
CI/CD de microservicios usando Job DSL y Pipeline JobAritfactory
Sonarqube
Para demostrar su eficiencia, la mitosis genera 2 microservicios predeterminados, conectados al bus de un evento mediante kafka.
1 consumidor NodeJS y 1 consumidor Apache Spark y 1 productor Java
Necesita lo siguiente instalado para utilizar este generador.
NodeJS
, Nodo 6 o superior, junto con NPM 3 o superior.VirtualBox
(opcional), probado con la Versión 5.1.14 r112924.Vagrant
(opcional), versión 1.9.1 o superior. Es posible que las versiones anteriores de vagrant no funcionen. con la caja Vagrant Ubuntu 16.04 y la configuración de red.Ansible
(opcional), probado con la versión 2.2.0.Docker registry
(opcional), al menos una cuenta de Docker Hub. npm install -g yo
npm install -g generator-mitosis
yo mitosis
El código generado contiene un Vagrantfile
y secuencias de comandos Ansible
asociadas para aprovisionar un clúster de nodos Kubernetes/Docker Swarm usando VirtualBox
y Ubuntu 16.04
(CentOS7 y CoreOS pronto).
Vagrant pondrá en marcha dos máquinas. Cada máquina tendrá una interfaz de red NAT, a través de la cual podrá acceder a Internet, y una interfaz private-network
en la subred 192.168.77.0/24. La red privada se utiliza para la comunicación dentro del clúster.
Las máquinas creadas son:
NOMBRE | DIRECCIÓN IP | ROLE |
---|---|---|
nombre-aplicación-manager1 | 192.168.77.21 | Administrador de clúster |
nombre-aplicación-trabajador1 | 192.168.77.31 | Trabajador de nodo |
nombre-aplicación-trabajador | 192.168.77.3n | Trabajador de nodo |
Una vez que se complete el vagrant up
, el siguiente comando y el resultado deberían estar visibles en el administrador del clúster ( appname-manager1 ).
Para Docker-swarm
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
Para 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
Se espera para la versión beta:
mi create/delete my_microservice.yml
serverless-playground
).bigdata-playground
). Puedes seguir el desarrollo de Mitosis a través del tablero público de Mitosis en Trello
Pull requests
son bienvenidas;
El generador de mitosis se lanza bajo la versión 2.0 de la licencia Apache.