はじめに
v0.9.1で検証済み。コマンドは稼働中の Kubernetes クラスタと、それを指すkubectl、加えて手元のhelmv3 とgitを想定。
前提
kubectlで到達できる Kubernetes クラスタ (Clusterpedia を動かすホスト)。- ローカルにインストールした
helmv3、git、kubectl。 - インポートしたいメンバークラスタ 1 つ以上の認証情報 (kubeconfig、または apiserver URL とトークンかクライアント証明書)。
インストール
公式のインストール経路は Helm チャートを使う。これは Bitnami の PostgreSQL サブチャートに依存する。まずチャートを clone して依存を解決する。
bash
git clone https://github.com/clusterpedia-io/clusterpedia-helm.git
helm dependency build ./clusterpedia-helm最初の動く構成
デフォルトの PostgreSQL ストレージで Clusterpedia をインストールする。
PediaClusterCRD を作成するためinstallCRDs=trueを指定し、PersistentVolume がバインドするよう DB をノードに固定する。bashhelm install clusterpedia ./clusterpedia-helm \ --namespace clusterpedia-system \ --create-namespace \ --set installCRDs=true \ --set persistenceMatchNode=<your-node-name>コンポーネントの起動を待つ。apiserver、clustersynchro-manager、controller-manager、PostgreSQL pod が見えるはず。
bashkubectl -n clusterpedia-system get podsメンバークラスタを
PediaClusterとして記述する。これをpediacluster.yamlとして保存し、インポートするクラスタの apiserver アドレスと認証情報を埋める。yamlapiVersion: cluster.clusterpedia.io/v1alpha2 kind: PediaCluster metadata: name: cluster-example spec: apiserver: "https://10.30.43.43:6443" caData: tokenData: syncResources: - group: apps resources: - deployments - group: "" resources: - pods適用してクラスタを登録し、同期を開始する。
bashkubectl apply -f pediacluster.yamlクラスタが同期されていることを確認する。
STATUS列に synchro の稼働が表示されるはず。bashkubectl get pediaclusters
動作確認
Clusterpedia は Aggregated API として登録されるので、既存の kubeconfig を通じてクエリできる。提供するリソース API グループを一覧する:
bash
kubectl get --raw "/apis/clusterpedia.io/v1beta1/resources/apis/apps" | jqインポート済みの全クラスタを横断して Deployment を検索するには、Clusterpedia のリソースエンドポイントにクエリを投げ、返る items を読む:
bash
kubectl get --raw "/apis/clusterpedia.io/v1beta1/resources/apis/apps/v1/deployments" | jq '.items | length'次に読むもの
- Installation: 本番向けストレージの選択肢と高可用性。
- Import Clusters: 認証オプションと、Karmada などのプラットフォームからの自動インポート。
- Sync Cluster Resources: 収集するリソースの選択方法 (
syncAllCustomResourcesを含む)。