마이크로서비스 인프라 여맨 생성기입니다. Mitosis는 AWS Cloudformation 및 Google Cloud 배포 관리자와 같은 솔루션에서 영감을 받았습니다.
이를 통해 개발자는 몇 가지 유사분열 명령줄을 사용하여 마이크로서비스를 로드, 구성, 실행, 발전, 관리 및 중지할 수 있습니다.
또한 다음 솔루션/기술(알파)을 활용합니다.
Vagrant
개발 모드Ansible
프로비저닝Kubernetes/docker swarm
docker 컨테이너를 조정하고 복제합니다.ELK Stack
로그 분석Traefik
HTTP 역방향 프록시Jenkins 2
CI/CDAritfactory
인공물 배포Sonarqube
품질효율성을 입증하기 위해 유사분열은 kafka를 사용하여 이벤트 버스에 연결된 2개의 기본 마이크로서비스를 생성합니다.
소비자 NodeJS 1개 및 소비자 Apache Spark 1개 및 생산자 Java 1개
이 생성기를 사용하려면 다음이 설치되어 있어야 합니다.
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 허브 계정. npm install -g yo
npm install -g generator-mitosis
yo mitosis
생성된 코드에는 VirtualBox
및 Ubuntu 16.04
(CentOS7 및 CoreOS 곧)를 사용하여 노드 Kubernetes/Docker Swarm 클러스터를 프로비저닝하기 위한 Vagrantfile
및 관련 Ansible
플레이북 스크립트가 포함되어 있습니다.
Vagrant는 두 개의 머신을 시작합니다. 각 시스템에는 인터넷에 액세스할 수 있는 NAT 네트워크 인터페이스와 서브넷 192.168.77.0/24의 private-network
인터페이스가 있습니다. 개인 네트워크는 클러스터 내 통신에 사용됩니다.
생성된 머신은 다음과 같습니다.
이름 | IP 주소 | 역할 |
---|---|---|
앱 이름-manager1 | 192.168.77.21 | 클러스터 관리자 |
앱 이름-worker1 | 192.168.77.31 | 노드 작업자 |
앱 이름-작업자 | 192.168.77.3n | 노드 작업자 |
vagrant up
이 완료되면 다음 명령과 출력이 클러스터 관리자( appname-manager1 )에 표시되어야 합니다.
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
쿠버네티스의 경우
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
). Trello
의 공개 Mitosis 보드를 통해 Mitosis의 개발을 따라갈 수 있습니다.
Pull requests
환영합니다.
유사분열 생성기는 Apache 라이센스 버전 2.0에 따라 출시됩니다.