Embulkのバッチ処理をGoogle Cloud Platform(GCP)のKubernetes Engine(k8s)に構築する為の雛形です。
KubernetesのCronJobを使って定期的に実行する事を想定しています。
$ gcloud components install kubectl
- gcloud コマンドライン ツールのデフォルトプロジェクト、ゾーンをセット
$ gcloud config set project [GCP_PROJECT_ID]
$ gcloud config set compute/zone asia-northeast1-a
- クラスタを作成
# 数分かかる場合がある
$ gcloud container clusters create [クラスタ名] --num-nodes=3
# 作成したクラスタを確認
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
instance-1 asia-southeast1-b n1-highcpu-16 X.X.X.X X.X.X.X RUNNING
- クラスタの認証情報を取得
gcloud container clusters get-credentials [クラスタ名]
- このリポジトリをダウンロード
$ git clone https://github.com/kosukekurimoto/k8s-cronjob-embulk-blueprint.git
$ cd k8s-cronjob-embulk-blueprint
- cronjob-embulk-example.yamlの修正
image: gcr.io/[GCP_PROJECT_ID]/k8s-cronjob-embulk:v1 # GCP_PROJECT_IDを修正
- コンテナイメージの作成
$ docker build -t gcr.io/[GCP_PROJECT_ID]/k8s-cronjob-embulk:v1 .
# 作成したイメージを確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gcr.io/my-project/hello-app v1 25cfadb1bf28 10 seconds ago 54 MB
- Container Registry にコンテナイメージをプッシュ
$ gcloud docker -- push gcr.io/[GCP_PROJECT_ID]/k8s-cronjob-embulk:v1
- CronJobの登録(更新)
$ kubectl apply -f cronjob-embulk-example.yaml
- gcloud コマンドラインツールのアップデート
$ gcloud components update
- CronJobの確認
$ kubectl get cronjobs
- CronJobの削除
$ kubectl delete cronjobs [CronJob名]