⚒️

Multi Kubernetes ClusterなOperator(改)とCLIを作ったよ

2023/07/16に公開

はじめに

以前、Multi Kubernetes Cluster間でレプリケーションするOperatorを実装していました。
今回はこのOperatorの再実装と、新規CLIのご紹介となります。
https://zenn.dev/ap_com/articles/e88942c0658b2c

コードの場所

Operatorの名前をresource-replicatorからplumberに変更しました。
リソースをレプリケーションするのを配管を通す配管工に見立てて、命名してみました。
https://github.com/jnytnai0613/plumber

アーキテクチャ

  1. plumber-controller-managerが起動すると、ClusterDetector ControllerはServiceAccountの認証情報を元にClientを作成する。その後、Clusterのkubeconfig情報を保管するSecretを作成する。また、PrimaryClusterもClusterDetector Custom Resourceに登録される。
  2. plumberctl CLIも実装されており、plumberctl CLIで指定されたSecondary Clusterのkubeconfig情報を、CLI実行する端末のkubeconfigファイルから抽出し、Secretに追加する。
  3. ClusterDetector ControllerはSecretを監視する。Secretに更新があるとリアルタイムに読み込まれ、ClusterDetector Custom Resourceも更新されてSecondary Clusterの追加や削除が行われます。
  4. Replicator Custom Resourceにはレプリケートされるnamespace名、セカンダリクラスタ名、リソース定義が含まれます。Replicator Custom Resource がデプロイされると、Replicator Controller は .Spec フィールドを読み込み、プライマリクラスタにレプリケーションするnamespaceとリソースを作成します。
  5. 次に、セカンダリクラスタ用のnamespaceとリソースも作成します。

動作例

上記githubリポジトリのREADMEに動画を貼っていますので、そちらをご確認ください。

機能紹介

前回実装した以下の機能は継承しています。

  • 以下の作業を自動化します。
  1. PrimaryクラスタとSecondaryクラスタの検出
    • clusterdetectorリソースがOperatorにより自動作成され、クラスタの検出を行います。
  2. 以下のkuberndtes Resourceを作成する。
    • ConfigMap
    • Deployment
    • Service
    • Ingress
      • IngressでSSLを有効にすると、以下のリソースが自動的に作成されます。
        • Secret1: IngressのSSL終端に必要なCA証明書、サーバー証明書、サーバー証明書の秘密鍵が含まれる
        • Secret2: Ingressへのアクセスに必要なクライアント証明書と秘密鍵が含まれる
  3. レプリケーション用namespace自動作成/削除

CLIの機能は以降で紹介します。

CLI紹介

今回はOperatorの再実装と同時に、Oepratorと連携するCLIも新規実装しました。
https://github.com/jnytnai0613/plumber/tree/main/cmd/plumberctl
ドキュメントは以下の通りです。
https://github.com/jnytnai0613/plumber/blob/main/docs/plumberctl.md
まず、レプリケーションを行うターゲットCluster群専用のkubeconfigファイルがSecretとして、Operator内のControllerから作成されます。このCLIはOperatorがデプロイされているClusterに接続し、以下を行えるようになります。

  • OperatorがデプロイされているClusterへの接続デフォルト設定(Activation)
  • ターゲットClusterの追加
  • ターゲットClusterの削除
  • ターゲットCluster群の表示

ControllerはSecretを常時監視しているので、リアルタイムでSecretからclusterdetectorリソースの作成と削除を行います。

さいごに

今後も引き続き、機能追加をしていくつもりです。是非是非お手元の環境で動作確認いただけると嬉しいです。

株式会社エーピーコミュニケーションズ

Discussion