EMQXクラスターでのパーシステンス有効化
目的
volumeClaimTemplates フィールドを使用して、EMQXクラスターのコアノード群のパーシステンスを構成します。
EMQXクラスターのパーシステンス設定
EMQX CRD apps.emqx.io/v2 は、.spec.coreTemplate.spec.volumeClaimTemplates を通じて各コアノードのデータパーシステンスを設定することをサポートしています。
.spec.coreTemplate.spec.volumeClaimTemplates フィールドの定義と意味は、Kubernetes APIで定義されている PersistentVolumeClaimSpec と一致しています。
.spec.coreTemplate.spec.volumeClaimTemplates フィールドを指定すると、EMQXオペレーターはEMQXコンテナの /opt/emqx/data ボリュームをPersistent Volume Claim(PVC)でバックアップするように設定します。PVCは指定されたStorageClassを使用してPersistent Volume(PV)をプロビジョニングします。その結果、EMQX Podが削除されても、関連するPVおよびPVCは保持され、EMQXのランタイムデータが保存されます。
PVおよびPVCの詳細については、Persistent Volumesのドキュメントを参照してください。
以下の内容をYAMLファイルとして保存し、
kubectl applyでデプロイします。yamlapiVersion: apps.emqx.io/v2 kind: EMQX metadata: name: emqx spec: image: emqx/emqx:6.2.0 config: data: | license { key = "..." } coreTemplate: spec: volumeClaimTemplates: storageClassName: standard resources: requests: storage: 1Gi accessModes: - ReadWriteOnce replicas: 3 listenersServiceTemplate: spec: type: LoadBalancer dashboardServiceTemplate: spec: type: LoadBalancerTIP
storageClassNameフィールドを使用して、EMQXデータに適したStorageClassを選択してください。kubectl get storageclassを実行すると、Kubernetesクラスター内に既存のStorageClassが一覧表示されます。必要に応じてStorageClassを作成してください。EMQXクラスターが準備完了になるまで待ちます。
kubectl getコマンドでEMQXクラスターのステータスを確認し、STATUSがReadyになっていることを確認してください。準備完了までに時間がかかる場合があります。bash$ kubectl get emqx emqx NAME STATUS AGE emqx Ready 10m
パーシステンスの検証
EMQXダッシュボードでテスト用のルールを作成します。
bashexternal_ip=$(kubectl get svc emqx-dashboard -o json | jq -r '.status.loadBalancer.ingress[0].ip')http://${external_ip}:18083にアクセスしてEMQXダッシュボードにログインします。Integration -> Rules に移動し、新しいルールを作成します。
簡単なアクションをこのルールに追加します。
Save をクリックしてルールを生成します。以下の図のように表示されます。

ルールが正常に作成されると、ページに
emqx-persistent-testIDの対応するレコードが表示されます。以下の図を参照してください。
既存のEMQXクラスターを削除します。
以前にクラスターをデプロイした際に使用したファイル(例:
emqx.yaml)を指定して、以下のコマンドを実行しEMQXクラスターを削除します。bash$ kubectl delete -f emqx.yaml emqx.apps.emqx.io "emqx" deletedEMQXクラスターを再デプロイします。
以下のコマンドを実行してEMQXクラスターを再デプロイします。
bash$ kubectl apply -f emqx.yaml emqx.apps.emqx.io/emqx createdEMQXクラスターが準備完了になるまで待ちます。ブラウザでEMQXダッシュボードにアクセスし、以前作成したルールが残っていることを確認します。以下の図のように表示されます。

古いクラスターで作成した
emqx-persistent-testルールが新しいクラスターにも存在していることから、パーシステンス設定が正しく機能していることが確認できます。