Issue running helm command on a schedule

7/13/2019

I am trying to delete temporary pods and other artifacts using helm delete. I am trying to run this helm delete to run on a schedule. Here is my stand alone command which works

helm delete --purge $(helm ls -a -q temppods.*)

However if i try to run this on a schedule as below i am running into issues.

Here is what mycron.yaml looks like:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: cronbox
spec:
  serviceAccount: cron-z
  successfulJobsHistoryLimit: 1
  schedule: "*/5 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: cronbox
            image: alpine/helm:2.9.1
            args:
            - delete
            - --purge
            - $(helm ls -a -q temppods.*)
          restartPolicy: OnFailure

I ran

oc create -f ./mycron.yaml

This created the cronjob

Every 5th minute a pod is getting created and the helm command that is part of the cron job runs.

I am expecting the artifacts/pods name beginning with temppods* to be deleted.

What i get is:

Error: pods is forbidden: User "system:serviceacount:myproject:default" cannot list pods in the namespace "kube-system": no RBAC policy matched

i then created a service account cron-z and gave edit access to it. I added this serviceAccount to my yaml thinking when my pod will be created it will have the service account cron-z associated to it. Still no luck. I see the cron-z is not getting assoicated with the pod that gets created every 5 minutes and i still see default as the service name associated with the pod.

-- lr-pal
kubernetes-helm
openshift
openshift-client-tools

1 Answer

7/15/2019

You'll need to have a service account for helm to use tiller with as well as an actual tiller service account github.com/helm/helm/blob/master/docs/rbac.md

-- Rick Rackow
Source: StackOverflow