--- # yaml-language-server: $schema=https://taskfile.dev/schema.json version: "3" vars: KUBECONFORM_SCRIPT: "{{.TASKFILE_DIR}}/.taskfiles/Kubernetes/kubeconform.sh" tasks: mount: desc: Mount a PersistentVolumeClaim to a temporary pod for a cluster summary: | Args: ns: Namespace the PVC is in (default: default) claim: PVC to mount (required) interactive: true cmd: | kubectl run -n {{.ns}} debug-{{.claim}} -i --tty --rm --image=null --privileged --overrides=' { "apiVersion": "v1", "spec": { "containers": [ { "name": "debug", "image": "ghcr.io/onedr0p/alpine:rolling", "command": ["/bin/bash"], "stdin": true, "stdinOnce": true, "tty": true, "volumeMounts": [ { "name": "config", "mountPath": "/config" } ] } ], "volumes": [ { "name": "config", "persistentVolumeClaim": { "claimName": "{{.claim}}" } } ], "restartPolicy": "Never" } }' vars: ns: '{{.ns | default "default"}}' claim: '{{ or .claim (fail "Argument (claim) is required") }}' preconditions: - sh: kubectl -n {{.ns}} get persistentvolumeclaim {{.claim}} resources: desc: Gather common resources in your cluster, useful when asking for support cmds: - for: { var: RESOURCES } cmd: kubectl get {{.ITEM}} {{.CLI_ARGS | default "-A"}} vars: RESOURCES: >- nodes gitrepositories kustomizations helmrepositories helmreleases certificates certificaterequests ingresses pods kubeconform: desc: Validate Kubernetes manifests with kubeconform cmd: bash {{.KUBECONFORM_SCRIPT}} {{.KUBERNETES_DIR}} preconditions: - sh: command -v kubeconform - sh: command -v kustomize - sh: test -f {{.KUBECONFORM_SCRIPT}}