LoginSignup
3
1

More than 1 year has passed since last update.

CronJobを手軽に修正&再実行する方法

Last updated at Posted at 2022-12-15

このエントリーは GMOアドマーケティングAdvent Calendar 2022 の16日目です。

こんにちは@zakisanbaimanです。

今回はCronJob(or Job)の中身を修正&実行したい場合の方法を記載します。

修正したイメージをビルドし直してJobとして実行するのが一般的かもしれませんが、それだとビルドに時間がかかったりソースの微修正がしづらいと思うので、自分がよく行っている修正手順を共有します。

環境

GKE Version: 1.21.14-gke.8500

手順

1. 修正したいCronJobのimageを取得

-o wideを付けることでIMAGES項目が出現します。

$ kubectl get cj -o wide
NAME              SCHEDULE      SUSPEND   ACTIVE   LAST SCHEDULE   AGE   CONTAINERS       IMAGES                       SELECTOR
cronjobs-daily    0 16 * * *    False     0        <none>          21m   cronjobs-daily   asia.gcr.io/hoge/hoge:hoge   <none>

2. テンポラリのPodを作成

Podとして起動させることで常駐するため、ログインして微修正することが容易になります。

case A. コンテナ実行環境(環境変数やマウントなど)の設定が不要な場合

kubectl run コマンドでPodを作成

$ kubectl run temp01 \
  --image=asia.gcr.io/hoge/hoge:hoge \
  --restart=Never

--restart=Never と指定することによってPodとして起動することができます。

case B. コンテナ実行環境を対象CronJobと同様にしたい場合

Podのマニフェストファイルを作成して kubectl create -f <マニフェストファイル名> を実行。
ここが面倒ですが、環境変数を一致させるにはこの方法が良さそうです。

apiVersion: v1
kind: Pod
metadata:
  name: temp01
spec:
  containers:
  - name: temp01
    image: asia.gcr.io/hoge/hoge:hoge
    env:
      - name: ENV
        value: "hoge"

3. Pod内のコンテナにログイン

$ kubectl exec -it temp01 -- bash

※上記はPod内にコンテナが1つのみのケースですが、Pod内にコンテナが複数存在する場合は --container <コンテナ名> でコンテナを指定する必要があります。

4. 修正&手動実行

実行したいソースが入っているため、修正するなりして何度も直接実行することができます。

5. Pod削除

不要になったPodは削除しておきましょう。

$ kubectl delete pods temp01
pod "temp01" deleted

まとめ

CronJob以前にcrontabを使っていたような方であれば、今回のようにコンテナログインして操作するのが一番馴染みがあるのではないでしょうか。
毎回修正イメージをビルドして実行させても良いのですが、今回の方法のほうが素早くトライアンドエラーができて便利だと思っています。

参考

Kubernetesドキュメント kubectlチートシート
プログラマーの雑記 kubernetesのcronjobをすぐ実行する方法

おわりに

明日は、@y-gさんによる「Googleアナリティクス4(GA4)を使ってみて」です。
引き続き、GMOアドマーケティングAdvent Calendar 2022 をお楽しみください!

3
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
3
1