Un générateur d'infrastructures de microservices. Mitosis s'inspire de solutions telles qu'AWS Cloudformation et Google Cloud Deployment Manager.
Il permet aux développeurs de charger, organiser, exécuter, évoluer, administrer et arrêter des microservices en utilisant quelques lignes de commande mitose.
Et il profite des solutions/technologies suivantes (alpha) :
Vagrant
Ansible
Kubernetes/docker swarm
orchestre et réplique les conteneurs DockerELK Stack
Traefik
Jenkins 2
CI/CD de microservices utilisant Job DSL et Pipeline JobAritfactory
Sonarqube
Pour prouver son efficacité, mitosis génère 2 microservices par défaut, connectés au bus d'un événement via kafka
1 consommateur NodeJS & 1 consommateur Apache Spark & 1 producteur Java
Vous avez besoin des éléments suivants installés pour utiliser ce générateur.
NodeJS
, Node 6 ou supérieur, ainsi que NPM 3 ou supérieur.VirtualBox
(facultatif), testé avec la version 5.1.14 r112924.Vagrant
(facultatif), version 1.9.1 ou supérieure. Les versions antérieures de vagrant peuvent ne pas fonctionner. avec le boitier Vagrant Ubuntu 16.04 et la configuration réseau.Ansible
(facultatif), testé avec la version 2.2.0.Docker registry
(facultatif), au moins un compte Docker Hub. npm install -g yo
npm install -g generator-mitosis
yo mitosis
Le code généré contient un Vagrantfile
et des scripts de playbook Ansible
associés pour provisionner un cluster de nœuds Kubernetes/Docker Swarm à l'aide de VirtualBox
et Ubuntu 16.04
(CentOS7 et CoreOS bientôt).
Vagrant démarrera deux machines. Chaque machine disposera d'une interface réseau NAT, via laquelle elle pourra accéder à Internet, et d'une interface private-network
dans le sous-réseau 192.168.77.0/24. Le réseau privé est utilisé pour la communication intra-cluster.
Les machines créées sont :
NOM | ADRESSE IP | RÔLE |
---|---|---|
nom de l'application-manager1 | 192.168.77.21 | Gestionnaire de cluster |
nom de l'application-worker1 | 192.168.77.31 | Travailleur de nœud |
nom de l'application-travailleur | 192.168.77.3n | Travailleur de nœud |
Une fois le vagrant up
terminé, la commande et le résultat suivants doivent être visibles sur le gestionnaire de cluster ( appname-manager1 ).
Pour 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
Pour 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
Attendu pour la version bêta :
mi create/delete my_microservice.yml
serverless-playground
).bigdata-playground
). Vous pouvez suivre le développement de Mitosis via le tableau public Mitosis sur Trello
Pull requests
sont les bienvenues ;
Le générateur de mitose est publié sous la version 2.0 de la licence Apache.