⚒️
Multi Kubernetes ClusterなOperator(改)とCLIを作ったよ
はじめに
以前、Multi Kubernetes Cluster間でレプリケーションするOperatorを実装していました。
今回はこのOperatorの再実装と、新規CLIのご紹介となります。
コードの場所
Operatorの名前をresource-replicatorからplumberに変更しました。
リソースをレプリケーションするのを配管を通す配管工に見立てて、命名してみました。
アーキテクチャ
- plumber-controller-managerが起動すると、ClusterDetector ControllerはServiceAccountの認証情報を元にClientを作成する。その後、Clusterのkubeconfig情報を保管するSecretを作成する。また、PrimaryClusterもClusterDetector Custom Resourceに登録される。
- plumberctl CLIも実装されており、plumberctl CLIで指定されたSecondary Clusterのkubeconfig情報を、CLI実行する端末のkubeconfigファイルから抽出し、Secretに追加する。
- ClusterDetector ControllerはSecretを監視する。Secretに更新があるとリアルタイムに読み込まれ、ClusterDetector Custom Resourceも更新されてSecondary Clusterの追加や削除が行われます。
- Replicator Custom Resourceにはレプリケートされるnamespace名、セカンダリクラスタ名、リソース定義が含まれます。Replicator Custom Resource がデプロイされると、Replicator Controller は .Spec フィールドを読み込み、プライマリクラスタにレプリケーションするnamespaceとリソースを作成します。
- 次に、セカンダリクラスタ用のnamespaceとリソースも作成します。
動作例
上記githubリポジトリのREADMEに動画を貼っていますので、そちらをご確認ください。
機能紹介
前回実装した以下の機能は継承しています。
- 以下の作業を自動化します。
- PrimaryクラスタとSecondaryクラスタの検出
- clusterdetectorリソースがOperatorにより自動作成され、クラスタの検出を行います。
- 以下のkuberndtes Resourceを作成する。
- ConfigMap
- Deployment
- Service
- Ingress
- IngressでSSLを有効にすると、以下のリソースが自動的に作成されます。
- Secret1: IngressのSSL終端に必要なCA証明書、サーバー証明書、サーバー証明書の秘密鍵が含まれる
- Secret2: Ingressへのアクセスに必要なクライアント証明書と秘密鍵が含まれる
- レプリケーション用namespace自動作成/削除
CLIの機能は以降で紹介します。
CLI紹介
今回はOperatorの再実装と同時に、Oepratorと連携するCLIも新規実装しました。
ドキュメントは以下の通りです。 まず、レプリケーションを行うターゲットCluster群専用のkubeconfigファイルがSecretとして、Operator内のControllerから作成されます。このCLIはOperatorがデプロイされているClusterに接続し、以下を行えるようになります。- OperatorがデプロイされているClusterへの接続デフォルト設定(Activation)
- ターゲットClusterの追加
- ターゲットClusterの削除
- ターゲットCluster群の表示
ControllerはSecretを常時監視しているので、リアルタイムでSecretからclusterdetectorリソースの作成と削除を行います。
さいごに
今後も引き続き、機能追加をしていくつもりです。是非是非お手元の環境で動作確認いただけると嬉しいです。
Discussion