2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GKEのCronJobでバッチを回そうとしたらハマった話

Posted at

はじめに

GKEでCronJobを使おうとしたのですが、接続用のCloudSQLProxyのコンテナがうまく落ちなくてこまっていました。
そもそも1バッチ動かすためのpodの中にバッチを動かすアプリケーションコンテナと、CloudSQLProxyコンテナが動いていたため、podの使用cupリクエストは200mとなかなかかさむなぁとおもっていたのです。

そこでGCPの人とちょっと話たところ、CloudSQLはプライベートIPに対応したとのことで、GKEからCloudSQLへプライベートIPで接続を試してみたところだいぶスッキリしたので記載しておきます。

CloudSQLのプライベートIPは2018/12/12現在ベータ版です
ご了承の上お使いください

CloudSQLのプライベートIPを有効にする

181212-0001.png

プライベートIPにチェックをつけて自動割り当てボタンをおします。
それが終わったら保存します。完了までに数分かかります。

※1 プライベートIPはCloudSQL第二世代じゃないと使えません
※2 GKEのリージョンと同じリージョンである必要があります。
※3 GKEのバージョンは1.8以上である必要があります。

参照
https://cloud.google.com/sql/docs/mysql/private-ip

出来上がったプライベートIPをメモっておきます

181212-0002-2.png

アプリ側の接続をCloudSQLProxy経由からプライベートIPに変更します

deploy.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cron-batch
spec:
  schedule: "*/5 * * * *"     # <=テストのため5分ごとに走らせる
  failedJobsHistoryLimit: 1
  successfulJobsHistoryLimit: 1
  jobTemplate:
    spec:
      template:
        metadata:
        spec:
          containers:
            - name: cron-batch
              image: [イメージ名]
              command: [コマンドは適当にSQLへの接続があるものを指定]
              env:
              - name: MYSQL_DSN
                value: [プライベートIP] # <= 元はプロキシ接続だったので、127.0.0.1だったはず!これをプライベートIPに変更
              - name: MYSQL_USER
                valueFrom:
                  secretKeyRef:
                    name: cloudsql-db-credentials
                    key: username
              - name: MYSQL_PASSWORD
                valueFrom:
                  secretKeyRef:
                    name: cloudsql-db-credentials
                    key: password
              - name: MYSQL_DATABASE
                value: ******

アプリケーション側へのホストの渡し方はこれに限ったことではないので、ご自身のプロジェクトに合わせてください

これで繋がるかとおもったらSQLSTATE[HY000] [2002] Operation timed out"といわれた

なぜか、、

181212-0003-2.png

VPCネイティブはGKEクラスタの作成時にチェックをつけることで有効にできます。
181212-0004.png

私は無効で作成してしまっていたので、クラスタを作り直しました
これで無事CronJobがSuccessedになりました。めでたしめでたし

181212-0005-2.png

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?