マイクロサービス インフラストラクチャのヨーマン ジェネレーター。 Mitosis は、AWS Cloudformation や Google Cloud Deployment Manager などのソリューションからインスピレーションを得ています。
これにより、開発者は、少数の有糸分裂コマンド ラインを使用して、マイクロサービスの読み込み、編成、実行、進化、管理、停止を行うことができます。
また、次のソリューション/テクノロジー (アルファ版) を利用します。
Vagrant
開発モードAnsible
プロビジョニングKubernetes/docker swarm
Docker コンテナをオーケストレーションおよびレプリケートしますELK Stack
ログ分析Traefik
HTTP リバース プロキシJenkins 2
CI/CDAritfactory
アーティファクトの展開Sonarqube
品質効率性を証明するために、有糸分裂は、kafka を使用してイベントのバスに接続された 2 つのデフォルトのマイクロサービスを生成します。
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
生成されたコードには、 VirtualBox
およびUbuntu 16.04
(CentOS7 および CoreOS 近日公開) を使用してノード Kubernetes/Docker Swarm クラスターをプロビジョニングするためのVagrantfile
および関連するAnsible
Playbook スクリプトが含まれています。
Vagrant は 2 台のマシンを起動します。各マシンには、インターネットにアクセスできる NAT ネットワーク インターフェイスと、サブネット 192.168.77.0/24 のprivate-network
インターフェイスがあります。プライベート ネットワークはクラスター内通信に使用されます。
作成されたマシンは次のとおりです。
名前 | IPアドレス | 役割 |
---|---|---|
アプリ名-マネージャー1 | 192.168.77.21 | クラスターマネージャー |
アプリ名-worker1 | 192.168.77.31 | ノードワーカー |
アプリ名-workern | 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
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
歓迎です。
有糸分裂ジェネレーターは、Apache ライセンスのバージョン 2.0 に基づいてリリースされています。