Um gerador de infra-estrutura de microsserviços. Mitosis é inspirado em soluções como AWS Cloudformation e Google Cloud Deployment Manager.
Ele permite que os desenvolvedores carreguem, organizem, executem, evoluam, administrem e interrompam microsserviços usando poucas linhas de comando de mitose.
E aproveita as seguintes soluções/tecnologias (alfa):
Vagrant
Ansible
Kubernetes/docker swarm
orquestra e replica contêineres dockerELK Stack
Traefik
Jenkins 2
CI/CD de microsserviços usando Job DSL e Pipeline JobAritfactory
Sonarqube
Para comprovar sua eficiência, a mitose gera 2 microsserviços padrão, conectados ao barramento de um evento usando kafka
1 consumidor NodeJS e 1 consumidor Apache Spark e 1 produtor Java
Você precisa do seguinte instalado para usar este gerador.
NodeJS
, Node 6 ou superior, junto com NPM 3 ou superior.VirtualBox
(opcional), testado com versão 5.1.14 r112924.Vagrant
(opcional), versão 1.9.1 ou superior. Versões anteriores do vagrant podem não funcionar. com a caixa Vagrant Ubuntu 16.04 e configuração de rede.Ansible
(opcional), testado com versão 2.2.0.Docker registry
(opcional), pelo menos uma conta do Docker Hub. npm install -g yo
npm install -g generator-mitosis
yo mitosis
O código gerado contém um Vagrantfile
e scripts de playbook Ansible
associados para provisionar um cluster Kubernetes/Docker Swarm de nós usando VirtualBox
e Ubuntu 16.04
(CentOS7 e CoreOS em breve).
O Vagrant iniciará duas máquinas. Cada máquina terá uma interface de rede com NAT, através da qual poderá acessar a Internet, e uma interface private-network
na sub-rede 192.168.77.0/24. A rede privada é usada para comunicação intracluster.
As máquinas criadas são:
NOME | ENDEREÇO IP | PAPEL |
---|---|---|
appname-manager1 | 192.168.77.21 | Gerenciador de clusters |
appname-worker1 | 192.168.77.31 | Trabalhador de nó |
nome do aplicativo-workern | 192.168.77.3n | Trabalhador de nó |
Depois que o vagrant up
for concluído, o comando e a saída a seguir deverão estar visíveis no gerenciador de cluster ( appname-manager1 ).
Para enxame Docker
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
Esperado para a versão beta:
mi create/delete my_microservice.yml
serverless-playground
).bigdata-playground
). Você pode acompanhar o desenvolvimento da Mitose através do quadro público de Mitose no Trello
Pull requests
são bem-vindas;
O gerador de mitose é lançado na versão 2.0 da licença Apache.