aion-core-manifests は aion-core および 関連リソース のデプロイ・稼働を行うために必要不可欠なマニフェストファイル群です。
aion-core および 関連リソース についてはこちらをご覧ください。
aion-coreのセットアップで作成したDocker Imagesからこれらのマニフェストファイルを元にaion-core および関連リソースを構成します。
AIONプラットフォームのあるエッジデバイス内において、Kubernetes Yaml ファイルは、次の領域に分かれています。
-
AION-Core のYamlファイル
-
主要なオープンソースリソース のYamlファイル
-
個別マイクロサービス のYamlファイル
-
Kubernetes 生成 Yamlファイル
それぞれの Yamlファイルは、以下のレポジトリにあります。
-
AION-Core のYamlファイル >>> aion-core-manifests
-
主要なオープンソースリソース のYamlファイル >>> aion-core-manifests
-
個別マイクロサービス のYamlファイル >>> aion-service-definitions
-
Kubernetes 生成 Yamlファイル >>> aion-core-manifests
template/bases は、(エッジ)Kubernetes環境を前提とした aion-core および 関連リソース の Kubernetes 定義ファイル群です。
AION および 関連リソース をデプロイ・稼働するために必要なリソースが定義されます。
定義されているリソースは、下記の通りです。
- authorization
- rabbitmq
- service-broker
- statuskanban
- kanban-replicator
- sendanything
- fluentd
- redis-cluster
- mongo
- mongo-express
また、template overlays 下に、overlaysとして(エッジコンピューティング環境のために必要な)yamlファイルが配置されています。(ほとんどが最低限必要な初期値で構成されています。その理由は、エッジコンピューティング環境のデバイス内では通常、複雑な設定は必要ないからです)
template/overlays/init_default には、AIONアーキテクチャ構成リソースの初期立ち上げとして必要なリソース(RabbitMQ) の 特別な init_default.yamlファイル が含まれています。
AION において RabbitMQ を初期立ち上げすることが必要な理由は、aion-core および関連リソースの RabbitMQ への 依存度 が重要であるためです。
なお、AION では、まず、init_default.yml の定義により、Rabbit-MQ が立ち上がります。その後、default.ymlの定義により、Rabbit MQ 以外の 各リソース が立ち上がります。
init_default.yml の生成ソース行は、 Makefile 内の 下記の箇所です。
kubectl kustomize template/overlays/init_default > generated/init_default.yml
参考として、default.yml の生成ソース行は、Makefile 内の 下記の箇所です。
kubectl kustomize template/overlays/default > generated/default.yml
以下のコマンドで、generated/yamlファイル(init_default.yml、default.yml、等)が生成されます。
make build
上記の通り、AION では、まず、init_default.yml の定義により、Rabbit-MQ が立ち上がります。その後、default.ymlの定義により、Rabbit MQ 以外の 各リソース が立ち上がります。
aion-core-manifests の generated 下の default.yml に、サンプルとして、yamlファイルが配置されています。
生成後の サンプル default.yml 内のリソースは、下記の通りです。(template の定義ファイルに基づいて生成されます)
- ServiceAccount
- ClusterRoleBinding
- PersistentVolume
- PersistentVolumeClaim
- aion-servicebroker
- aion-statuskanban
- aion-kanban-replicator
- aion-sendanything
- Fluentd
- Rediscluster
- Envoy/Configmap
- MongoDB
- 各Deployment
(※RabbitMQ のリソース は init_default.yml 内にあります)
aion-core-manifests の使用には aion-core のクローンが必要です。また Kubernetes が動作する必要があります。
- aion-core
- OS: Linux
- CPU: ARM/AMD/Intel
- Kubernetes
kubectl get node -o wide
make build
sh aion-start.sh
sh aion-stop.sh
hostname
には配備するnodeのホスト名を使用してください
# master
make build-master HOST=$(hostname)
# worker
make build-worker HOST=$(hostname)
# master
make apply-master
# worker
make apply-worker HOST=$(hostname)
# master
make delete-master
# worker
make delete-worker HOST=$(hostname)
AIONプラットフォーム における Port 番号 の適用方針は、以下の通りです。
AIONプラットフォームでは、Kubernetes の yml ファイルにおいてポート番号が定義されます。
AION では、以下の通りに、マイクロサービス毎に Port番号 が定義されています。
type | Port固定の主要リソース | aion-core / 個別のマイクロサービス(MS) |
---|---|---|
Envoy | Redis -> 6379 | aion-core -> 10000(grpc) / 10001(admin) |
個別MS -> 必要な場合、適宜Port番号を設定 | ||
NodePort | RabbitMQ -> 5672 | aion-core -> NodePort 利用なし |
RabbitMQ(外部)->32094/32095 | 個別MS ->:50500~50999をMS毎に分けて設定 | |
Cassandra -> 9042 | 個別MS(外部) ->:30500~30999を設定 | |
Cassandra(外部) -> 32100/32101 | ||
MySQL -> 3306 | ||
MySQL(外部) -> 30000 | ||
ClusterIP | Redis(envoyless) -> 6379 | aion-core -> ClusterIP 利用なし |
MongoDB -> 27017 | 個別MS ->:50500~50999をMS毎に分けて設定 | |
Localhost | ReactJS/Public -> 3000 | - |
ReactJS/API -> 30080 | - | |
ReactJS/Websocket -> 30099 | - | |
ReactJS/ImagePath -> 30080 | - | |
ReactJS/Grpc -> 30050 | - |