☆GCP☆ Config Connector で GCP 環境をデプロイする☆技術/サービス紹介

お問い合わせはこちら

ブログ

☆GCP☆ Config Connector で GCP 環境をデプロイする☆技術/サービス紹介

2020/07/06

こんにちは。DOUZO ブログ担当です。
ブログでは業務で触れた技術やサービスについてざっくり紹介しています。今回は GCP の config connector です。

 

config connector は k8s の構成ファイル( yaml ) で GCP リソースを管理できるアドオンです。
アドオンがインストールされた環境であれば、kubectl コマンドで GCP リソースをデプロイ、参照、更新、削除が実行できます。

 

例) kubectl コマンドで gcp リソースを操作する

# デプロイ
$ kubectl --namespace <namespace> apply -f hogehoge.yaml
# 管理対象一覧の確認
$ kubectl --namespace <namespace> get gcp
# 詳細の確認
$ kubectl --namespace <namespace> describe resource.group/resource.name
# 削除
$ kubectl --namespace <namespace> delete resource.group/resource.name

 

terraform 等のツールでは独自の言語や構文がありますが、config connector では k8s の知識があれば学習コストも低く済みますし、構成ファイルも yaml なので比較的読みやすいと感じています。

 

なお、yaml の管理については kustomize を利用することとしました。
ドキュメントでは kpt や helm のサンプルがありこちらが推奨なのかもしれません・・。

 

以下では config connector の導入方法やデプロイ方法についてざっくり説明してみたいと思います。

 

config connector 環境の準備

 

今後、単一のプロジェクトで複数の環境、プロジェクトへデプロイすることを想定して
Google 推奨の Workload Identity で、その拡張タイプを選択しました。
https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall?hl=ja#namespaced-mode

 

Workload Identity に関してはこちらの記事がわかりやすいです。
ざっくりいうと、k8s から GCP リソースへのアクセス制限を GCP のサービスアカウントで実行できる機能です。
https://medium.com/google-cloud-jp/k8s-gcp-access-controle-8d8e92446e84

 

ちなみに、最近アドオンでの導入もできるようになったようなのでこちらの方が簡単なのかもしれません。
https://cloud.google.com/config-connector/docs/how-to/install-upgrade-uninstall?hl=ja#add-on

 

reference

 

対応している GCP リソースと yaml のリファレンスです。
https://cloud.google.com/config-connector/docs/reference/overview?hl=ja

 

ディレクトリ構成( kustomize )

 

ディレクトリ構成は基本的なものだと思います。

 

$ tree 
├── bases
│  └── anyservice
│      ├── anyservice.yaml
│      ├── kustomization.yaml
│      └── varreference.yaml
└── overlays
    ├── cloudbuild_deploy_gcp.yaml
    ├── project
    │   ├── kustomization.yaml
    │   └── anyservice
    │      ├── kustomization.yaml
    │      └── anyservice.yaml
    └── develop
        ├── kustomization.yaml
        └── anyservice
            └── anyservice.yaml

 

デプロイ

 

$ cd /path/to/overlays
$ kustomize build develop | kubectl apply -f -

 

上記のコマンドを cloudbuild で実行させるようにしました。

 

所感

 

GCP リソースを k8s リソースのように扱えて非常に手軽で新鮮でした。
個人的には terraform や AWS の cloudformation などが、どうも使いづらいなと思っていたので config connector は今後も使っていきたいと思っています。ただし、新しいツールですので使いながら改善をしていきたいと思います。

 

いつもざっくりめの説明ですみません。興味のある方は試してみてください。

---------------------------------------------------------------------------------------

DOUZO の営業担当者は全員フリーランスエンジニアの経験があり、私も含め現役のエンジニアだったりします。
なるべく多くをエンジニアへ還元するよう努めていますので、どうぞお気軽にご相談ください!

当店でご利用いただける電子決済のご案内

下記よりお選びいただけます。