เครื่องกำเนิดโครงสร้างพื้นฐานไมโครเซอร์วิส Mitosis ได้รับแรงบันดาลใจจากโซลูชัน เช่น AWS Cloudformation และ Google Cloud Deployment Manager
ช่วยให้นักพัฒนาสามารถโหลด จัดระเบียบ ดำเนินการ พัฒนา บริหารจัดการ และหยุดไมโครเซอร์วิสได้โดยใช้คำสั่งไมโทซีสเพียงไม่กี่บรรทัด
และใช้ประโยชน์จากโซลูชัน/เทคโนโลยีต่อไปนี้ (อัลฟ่า):
Vagrant
Ansible
Kubernetes/docker swarm
ประสานและจำลองคอนเทนเนอร์ dockerELK Stack
Traefik
HTTPJenkins 2
CI/CD ของไมโครเซอร์วิสโดยใช้ Job DSL และ Pipeline JobAritfactory
Sonarqube
เพื่อพิสูจน์ประสิทธิภาพ ไมโทซิสจะสร้างไมโครเซอร์วิสเริ่มต้น 2 รายการ ซึ่งเชื่อมต่อกับบัสของเหตุการณ์โดยใช้คาฟคา
1 ผู้บริโภค NodeJS และ 1 ผู้บริโภค Apache Spark และ 1 ผู้ผลิต Java
คุณต้องติดตั้งสิ่งต่อไปนี้เพื่อใช้ตัวสร้างนี้
NodeJS
, Node 6 หรือสูงกว่า ร่วมกับ NPM 3 หรือสูงกว่าVirtualBox
(เป็นทางเลือก) ทดสอบกับเวอร์ชัน 5.1.14 r112924Vagrant
(เป็นทางเลือก) เวอร์ชัน 1.9.1 หรือดีกว่า คนจรจัดเวอร์ชันก่อนหน้าอาจไม่ทำงาน ด้วยกล่อง Vagrant Ubuntu 16.04 และการกำหนดค่าเครือข่ายAnsible
(เป็นทางเลือก) ทดสอบกับเวอร์ชัน 2.2.0Docker registry
(ไม่บังคับ) อย่างน้อยก็มีบัญชีฮับนักเทียบท่า npm install -g yo
npm install -g generator-mitosis
yo mitosis
รหัสที่สร้างขึ้นประกอบด้วย Vagrantfile
และสคริปต์ Playbook Ansible
ที่เกี่ยวข้องเพื่อจัดเตรียมคลัสเตอร์โหนด Kubernetes/Docker Swarm โดยใช้ VirtualBox
และ Ubuntu 16.04
(CentOS7 & CoreOS เร็วๆ นี้)
คนเร่ร่อนจะสตาร์ทเครื่องสองเครื่อง แต่ละเครื่องจะมีอินเทอร์เฟซเครือข่าย NAT-ed ซึ่งสามารถเข้าถึงอินเทอร์เน็ตได้ และอินเทอร์เฟ private-network
ในซับเน็ต 192.168.77.0/24 เครือข่ายส่วนตัวใช้สำหรับการสื่อสารภายในคลัสเตอร์
เครื่องจักรที่สร้างขึ้นคือ:
ชื่อ | ที่อยู่ IP | บทบาท |
---|---|---|
ชื่อแอป-ผู้จัดการ1 | 192.168.77.21 | ผู้จัดการคลัสเตอร์ |
ชื่อแอป-คนงาน1 | 192.168.77.31 | ผู้ปฏิบัติงานโหนด |
ชื่อแอป-คนงาน | 192.168.77.3n | ผู้ปฏิบัติงานโหนด |
หลังจากที่ vagrant up
เสร็จสมบูรณ์ คำสั่งและเอาต์พุตต่อไปนี้ควรมองเห็นได้บนตัวจัดการคลัสเตอร์ ( appname-manager1 )
สำหรับนักเทียบท่าฝูง
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
สำหรับ 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
คาดว่าจะเป็นรุ่นเบต้า:
mi create/delete my_microservice.yml
serverless-playground
)bigdata-playground
) คุณสามารถติดตามการพัฒนาของไมโทซิสได้ผ่านทางกระดานไมโทซิสสาธารณะบน Trello
ยินดีต้อนรับ Pull requests
ตัวสร้าง Mitosis เปิดตัวภายใต้เวอร์ชัน 2.0 ของ Apache License