Генератор микросервисной инфраструктуры. Mitosis создан на основе таких решений, как AWS Cloudformation и Google Cloud Deployment Manager.
Он позволяет разработчикам загружать, организовывать, выполнять, развивать, администрировать и останавливать микросервисы, используя несколько командных строк митоза.
И он использует следующие решения/технологии (альфа):
Vagrant
режим разработкиAnsible
подготовкаKubernetes/docker swarm
оркестрирует и реплицирует докер-контейнерыELK Stack
Traefik
Jenkins 2
CI/CD микросервисов с использованием Job DSL и Pipeline JobAritfactory
Sonarqube
Чтобы доказать свою эффективность, митоз генерирует 2 микросервиса по умолчанию, подключенных к шине событий с помощью Kafka.
1 потребитель NodeJS и 1 потребитель Apache Spark и 1 производитель Java
Для использования этого генератора вам необходимо установить следующее.
NodeJS
, Node 6 или выше, вместе с NPM 3 или выше.VirtualBox
(дополнительно), протестировано с версией 5.1.14 r112924.Vagrant
(необязательно), версия 1.9.1 или выше. Более ранние версии vagrant могут не работать. с коробкой Vagrant Ubuntu 16.04 и конфигурацией сети.Ansible
(необязательно), протестировано с версией 2.2.0.Docker registry
(необязательно), как минимум учетная запись Docker Hub. npm install -g yo
npm install -g generator-mitosis
yo mitosis
Сгенерированный код содержит Vagrantfile
и связанные сценарии Ansible
playbook для подготовки узлов кластера Kubernetes/Docker Swarm с использованием VirtualBox
и Ubuntu 16.04
(скоро CentOS7 и CoreOS).
Vagrant запустит две машины. Каждая машина будет иметь сетевой интерфейс с поддержкой NAT, через который она сможет получить доступ к Интернету, а также интерфейс private-network
в подсети 192.168.77.0/24. Частная сеть используется для внутрикластерной связи.
Созданные машины:
ИМЯ | IP-АДРЕС | РОЛЬ |
---|---|---|
имя-приложения-manager1 | 192.168.77.21 | Менеджер кластера |
имя приложения-worker1 | 192.168.77.31 | Узел Рабочий |
имя_приложения-работника | 192.168.77.3н | Узел Рабочий |
После завершения vagrant up
следующая команда и выходные данные должны быть видны в диспетчере кластера ( имя_приложения-manager1 ).
Для 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
Для Кубернетеса
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
Ожидается в бета-версии:
mi create/delete my_microservice.yml
serverless-playground
).bigdata-playground
). Вы можете следить за развитием Mitosis через общедоступную доску Mitosis в Trello
Pull requests
приветствуются;
Генератор митоза выпущен под лицензией Apache версии 2.0.