環境セットアップ
このページでは、オンプレミスマシン構成向けのマシン準備、Kubernetes インストール、クラスタ設定、インフラサービスデプロイについて説明します。
インフラチームがすでに Kubernetes クラスタとインフラサービスを準備済みの場合は、前提条件 に進んで準備完了を確認し、その後 プラットフォームのインストール に進んでください。
マシン準備
要件 に従ってマシンを用意します。次のノードロールを想定してください。
| ロール | 用途 | 推奨仕様 |
|---|---|---|
| Master node | クラスタ control plane と Ingress 入口 | 安定性のため Kubernetes システムワークロードのみを実行 |
| Infrastructure node | データベース、Kafka、Redis | 一部 DB イメージのため x86 アーキテクチャ必須 |
| Main workload nodes (3) | OpenLM Platform のマイクロサービス | ARM または x86 |
| Reporting nodes (3) | Spark ワークロードと Apache Superset | ARM または x86 |
同じクラスタ内で ARM と x86 を混在させることは可能です。Infrastructure ノードは、すべてのデータベースコンテナイメージとの互換性のため x86 にしてください。
Kubernetes のインストール
CNCF 準拠のディストリビューションであれば、いずれも利用できます。以下の例では、このパスが推奨する RHEL 系 OS にネイティブでインストールできる K3s を使用します。他のディストリビューション(kubeadm、RKE2、MicroK8s)でも、control plane をインストールしてから残りのノードを参加させるという全体の流れは同じです。
このセクションのコマンドは、要件 ページで求めている AlmaLinux 9 / RHEL 9 / Rocky Linux 9 に合わせた RHEL 系のツールを使用しています。Debian 系ディストリビューションおよび apt / snap は、このプラットフォームのサポート対象外です。
Control plane をインストールする
Master node 上で実行します。
curl -sfL https://get.k3s.io | sh -s - server \
--node-ip=<PRIVATE_IP> \
--advertise-address=<PRIVATE_IP>
参加トークンを取得します。他のすべてのノードで必要になります。
sudo cat /var/lib/rancher/k3s/server/node-token
残りのノードを参加させる
Infrastructure、main workload、reporting の各ノードで実行します。
curl -sfL https://get.k3s.io | K3S_URL=https://<PRIMARY_PRIVATE_IP>:6443 \
K3S_TOKEN=<TOKEN> sh -s - agent --node-ip=<PRIVATE_IP>
クラスタを確認する
Master node 上で実行します。
sudo k3s kubectl get nodes
すべてのノードが Ready になっているはずです。ワークステーションから通常の kubectl を使う場合は、Master node から /etc/rancher/k3s/k3s.yaml をコピーし、ファイル内の 127.0.0.1 を到達可能な IP アドレスに置き換えてください。
クラスタトポロジーとノードラベル
Affinity ルールに基づいてワークロードが正しいマシンへ配置されるよう、ノードへラベルを付与します。
kubectl label node <infra-node> openlm.com/role=infrastructure-workload
kubectl label node <worker-node-1> openlm.com/role=main-workload
kubectl label node <worker-node-2> openlm.com/role=main-workload
kubectl label node <worker-node-3> openlm.com/role=main-workload
kubectl label node <report-node-1> openlm.com/role=reporting-workload
kubectl label node <report-node-2> openlm.com/role=reporting-workload
kubectl label node <report-node-3> openlm.com/role=reporting-workload
ラベル確認:
kubectl get nodes --show-labels
インフラのインストール
すべてのノード接続後、専用 namespace にインフラサービスをデプロイします。
kubectl create namespace openlm-infrastructure
サービスのデプロイ
インフラサービス(MongoDB、MariaDB/PostgreSQL、Kafka、Redis)は、デプロイパッケージに含まれる Helm チャートでデプロイします。
各サービスについて:
values.yamlに storage class 名とストレージサイズを設定- 必要に応じて、Infrastructure ノードへ配置するため node selector を追加
- Helm でインストール
helm install <release-name> <chart>.tgz -f values.yaml -n openlm-infrastructure
インフラの確認
すべてのインフラ Pod が起動していることを確認します。
kubectl get pods -n openlm-infrastructure
次へ進む前に、各サービス(MongoDB、SQL database、Kafka、Redis)への接続性を確認してください。
次の手順
クラスタが稼働し、インフラサービスが正常であれば:
- 前提条件 チェックリストを完了
- プラットフォームのインストール に進む