Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

GKEクラスタでConfig Connectorのバージョンを自在に管理する

By Eyal ZekariaJun 2, 20224 min read

このページはEnglishDeutschEspañolFrançaisItalianoPortuguêsでもご覧いただけます。

Config Connectorは、KubernetesマニフェストでGoogle Cloudリソースを管理できる便利なツールです。アドオン版のインストールを手動インストールに切り替えることで、バージョンをより柔軟に制御する方法を解説します。

Config-Connector

Config Connectorのバージョンをより柔軟に管理するには、アドオン版のインストールを手動インストールに切り替える

Config Connectorを使えば、KubernetesマニフェストからGCPリソースを管理できます。Googleが開発した優れたツールで、要件を満たすGKEクラスタにはアドオンとして導入できます(要件はこちら)。主な利点とユースケースは次の通りです。

  • GKEにデプロイするサービスの基盤インフラを、同じパイプラインと同じ流儀で構築できる(YAMLマニフェストを追加するだけ)
  • 中央の"コントロール"クラスタから他のクラスタを立ち上げ、KubernetesでInfrastructure as Codeを実現できる
  • kubectl apply 一発で、開発環境や新しい本番クラスタといったインフラを立ち上げられる

Config Connectorは、Operator StatefulSet(configconnector-operator-system/configconnector-operator)をデプロイすることで動作します。このOperatorが、すべてのCustomResourceDefinitionリソース(CRD)と、cnrm-system名前空間内の関連ワークロードを生成します。

Config Connectorは継続的に進化しており、新バージョンのリリースに合わせて新機能(Config Connectorで管理できるリソースタイプの追加や、CRDへのフィールド追加など)が随時加わっています。ただし残念ながら、GKEアドオンでインストールされるConfig Connectorのバージョンは、GKEのマスターバージョンに紐づいています。つまり、アドオン経由のConfig Connectorをアップデートするには、GKEのバージョン自体(少なくとも次のマイナーバージョン)を上げる必要があり、これは必ずしも望ましい選択肢ではありません。さらに、同梱されるバージョンは通常、Config Connectorの最新版から数バージョン遅れているため、たとえアップデートしても最新版の新機能や修正が手に入らない場合があります。

検証したところ、GKEアドオンでインストールされるConfig Connectorのバージョンは以下の通りでした。

  • GKE 1.21.x:v1.69.0
  • GKE 1.22.x:v1.71.0

本記事執筆時点でのConfig Connectorの最新バージョンはv1.83.0です。

手動インストール

GKEクラスタ上のConfig Connectorのバージョンをより柔軟に管理したい場合は、アドオン版のインストールを手動インストール[1]に切り替える方法があります。ただしその場合、GKEクラスタと連動した自動アップデートは行われなくなるため、Config Connectorのアップデート責任はユーザー側に移ります。

アドオン版のインストールを手動インストールに置き換える手順

1. クラスタのアドオンインストールを無効化します。

gcloud container clusters update <CLUSTER_NAME> --update-addons ConfigConnector=DISABLED

2. Config Connector operatorのStatefulSetを削除します。

kubectl -nconfigconnector-operator-system delete statefulset configconnector-operator

  1. 3. ドキュメント[2]に従って、最新版(または任意のバージョン)のConfig Connector operatorをインストールします。

この手順では、すべてのCRDおよびConfigConnectorオブジェクト[3]はそのまま残るため、Config Connectorで作成済みのリソースにも影響はありません。

新しいoperator podが目的のバージョンで稼働していることを確認します。

$ kubectl -nconfigconnector-operator-system get statefulsets configconnector-operator -oyaml |grep operator-version | head -n1

cnrm.cloud.google.com/operator-version: 1.83.0

cnrm-system名前空間のワークロードがすべて再作成されていることも確認します(reconcileに数分かかる場合があります)。

$ kubectl -ncnrm-system get po -oyaml |grep /version

  cnrm.cloud.google.com/version: 1.83.0

  cnrm.cloud.google.com/version: 1.83.0

  cnrm.cloud.google.com/version: 1.83.0

  cnrm.cloud.google.com/version: 1.83.0

以降、Config Connectorをアップグレードする際は、ドキュメント[4]の手順に従って手動で実施してください。

アドオン版に戻す

GKEクラスタを、目的のConfig Connectorバージョンを含むアドオンが提供されているGKEバージョンへアップグレードした場合は、アドオン版に戻して管理をGKEに任せることもできます。

手順は基本的に、先ほどの逆を行うだけです。

  1. クラスタでConfig Connectorアドオンを有効化します。

gcloud container clusters update <CLUSTER_NAME> --update-addons ConfigConnector=ENABLED

  1. Config Connector operatorのStatefulSetを削除します。

kubectl -nconfigconnector-operator-system delete statefulset configconnector-operator

configconnector-operator-system名前空間のpodを監視していると、しばらくしてoperator podが再起動し(StatefulSetがアドオンによって再作成されるため)、アドオン管理下のバージョンで稼働していることが確認できます。cnrm-system名前空間のワークロードも、operatorの最初のreconcileループで置き換えられます。

[1] https://cloud.google.com/config-connector/docs/how-to/advanced-install#manual

[2] https://cloud.google.com/config-connector/docs/how-to/advanced-install#installing_the_operator

[3] https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall#addon-configuring

[4] https://cloud.google.com/config-connector/docs/how-to/advanced-install#upgrading