GCPのConfig Controllerを使ってみた

JCBデジタルソリューション開発部、アーキテクトチームの長沼です。
アーキテクトチームでは、開発しているプラットフォーム・アプリケーションの設計開発支援や新技術の先行評価といったことを行っています。

この活動の一環として、GCPプロダクトの1つであるConfig Controllerを実際に動かしてみました。
Config Controllerは、Google Cloudのドキュメントによると「AnthosリソースとGoogle Cloudリソースのプロビジョニングとオーケストレーションを行うホスト型サービスです。」とのことです。
今回は、Config Controllerの準備とこれによるGCPリソース管理の例をご紹介します。

※以下は2021年7月時点のものとなります。Config Controllerのステータスは「プレビュー」であり、仕様は今後変更される可能性があります。

TL;DR

  • Config Controllerは、Config Sync +Policy Controller +Config Connector 等が入ったGKEクラスタを提供するもの
  • Git Repository -> Config Sync -> GKE上のリソース -> Config Connector -> GCPリソースという流れにより、 Git Repository上で宣言したリソース定義とGCPの実体リソースを紐付けて管理

Confg Controllerの準備

Config Controllerの概要および設定手順は以下で公開されています。

まず設定ドキュメント「Config Controller を設定する」に従い、Config Controllerを準備します。 具体的なコマンドについては前述の設定ドキュメントを参照いただければと思いますが、大まかな流れは以下となります。

設定手順:

  1. 管理クライアントへのCLI(gcloudやkubectl)のインストール
  2. デフォルトネットワーク(VPC)の作成
  3. 関連APIの有効化
  4. Config Controllerの作成
  5. Config Controllerに管理クライアントからアクセスするためのCredentialの取得
  6. Config ControllerからGCPリソースを管理するためのIAM設定(権限付与)
  7. Git Repositoryの準備、およびConfig Controller(内で動作するConfig Sync)との紐付け

以上の設定手順を行うと、以下のようなGKEクラスタが自動的に作成されているのが確認できます。 クラスタ名はConfig Controller名称の前に「krmapihost-」というプレフィックスが付いた形となるようです。 図の例ではConfig Controllerの名称を「testctrl」とした場合の表示となります。

また、このGKEクラスタの中を覗いてみると、以下のようなnamespaceが作成されています。

このことからConfig Controllerの構成、およびConfig ControllerによるGCPリソースの管理は以下の流れになると考えられます。
以降では図に示した流れでCloud PubSubのTopicを作成する例を紹介します。

Config ControllerによるGCPリソース作成例

実際にConfig Controllerを使って、Cloud PubSubのTopicを作成してみました。
まずConfig Controllerと連携したGit Repository (今回はCloud Source Repositories)に対して以下をPushします。
設定ドキュメントの記述によるとプロジェクト内リソースの管理には「config-control」namespaceを使用とのことで、このnamespaceにリソースを作成します。

apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
kind: PubSubTopic
metadata:
   labels:
      environment: test
   name: test-topic
   namespace: config-control

するとConfig ControllerのGKEクラスタ内「config-control」namespaceに同様のリソースが作成されます。 さらにPubSubの管理Consoleを見ると、以下のように新しく「test-topic」というトピックが作成されていることが確認できました。

気づき・注意点・補足

  • 調査時点でConfig Controllerは限られたリージョン(us-central1)での提供となり、東京リージョンでは利用できませんでした。
  • 設定手順5のCredential取得において、調査環境ではgcloud alpha anthos config controller get-credentials $CONFIG_CLUSTER_NAMEによるCredential取得は実施できませんでした。
    このため代わりにgcloud container clusters get-credentials krmapihost-$CONFIG_CLUSTER_NAMEで取得しています。
  • 設定ドキュメントに記述がありますが、Config Controller削除時は、まずConfig Controllerのクラスタ内にあるリソース削除が推奨されます。
    同クラスタ内のリソース削除後にConfig Controller本体を削除しないと、Config Controller経由で作成したGCPリソースは作成されたままとなる点に注意が必要です。
    例えば、前述の作成例でkrmapihost-testctrlクラスタ上のPubSubTopicリソースを削除せずConfig Controllerを削除すると、実際に作られたPubSubのTopicは残ったままとなります。

以上、実際に触ってみたConfig Controllerの紹介でした。KubernetesのリソースでGCPリソースを管理できるのは面白いですね!

最後になりますが、JCBでは我々と一緒に働きたいという人材を募集しています。 詳しい募集要項等については採用ページをご覧下さい。


本文および図表中では、「™」、「®」を明記しておりません。
Google Cloud, GCPならびにすべてのGoogleの商標およびロゴはGoogle LLCの商標または登録商標です。
記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。

©JCB Co., Ltd. 2021︎