| local kube = import "../../kube/hscloud.libsonnet"; |
| |
| // NOTE: Run `kubectl -n kasownik delete job/kasownik-clear-lockfile; kubecfg update hswaw/kasownik/clear_lockfile.jsonnet` to clear lockfile |
| // This will not work if cronjob pod is still running (volume won't be mounted) |
| { |
| local top = self, |
| local cfg = self.cfg, |
| |
| cfg:: { |
| name: 'kasownik', |
| namespace: 'kasownik', |
| }, |
| |
| local ns = kube.Namespace(cfg.namespace), |
| |
| clear_lockfile: ns.Contain(kube.Job(cfg.name + '-clear-lockfile')) { |
| spec+: { |
| ttlSecondsAfterFinished: 10, // NOTE: does not work, requires k8s 1.23 |
| template+: { |
| spec+: { |
| containers_: { |
| default: kube.Container("default") { |
| image: 'alpine:3.20.1', |
| volumeMounts_: { |
| data: { mountPath: '/data' }, |
| }, |
| command: ["sh", "-c", ||| |
| set -e -x |
| rm /data/kasownik.lock |
| |||] |
| } |
| }, |
| volumes_: { |
| data: { |
| persistentVolumeClaim: { claimName: cfg.name + '-fetch-data' }, |
| }, |
| } |
| } |
| } |
| } |
| } |
| } |