# $HOME/.k9s/plugin.yml # move selected line to chosen resource in K9s, then: # Shift-T (with confirmation) to toggle helm releases or kustomizations suspend and resume # Shift-R (no confirmation) to reconcile a git source or a helm release or a kustomization plugins: toggle-helmrelease: shortCut: Shift-T confirm: true scopes: - helmreleases description: Toggle to suspend or resume a HelmRelease command: bash background: false args: - -c - >- suspended=$(kubectl --context $CONTEXT get helmreleases -n $NAMESPACE $NAME -o=custom-columns=TYPE:.spec.suspend | tail -1); verb=$([ $suspended = "true" ] && echo "resume" || echo "suspend"); flux $verb helmrelease --context $CONTEXT -n $NAMESPACE $NAME | less -K toggle-kustomization: shortCut: Shift-T confirm: true scopes: - kustomizations description: Toggle to suspend or resume a Kustomization command: bash background: false args: - -c - >- suspended=$(kubectl --context $CONTEXT get kustomizations -n $NAMESPACE $NAME -o=custom-columns=TYPE:.spec.suspend | tail -1); verb=$([ $suspended = "true" ] && echo "resume" || echo "suspend"); flux $verb kustomization --context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-git: shortCut: Shift-R confirm: false description: Flux reconcile scopes: - gitrepositories command: bash background: false args: - -c - >- flux reconcile source git --context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-hr: shortCut: Shift-R confirm: false description: Flux reconcile scopes: - helmreleases command: bash background: false args: - -c - >- flux reconcile helmrelease --context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-helm-repo: shortCut: Shift-Z description: Flux reconcile scopes: - helmrepositories command: bash background: false confirm: false args: - -c - >- flux reconcile source helm --context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-oci-repo: shortCut: Shift-Z description: Flux reconcile scopes: - ocirepositories command: bash background: false confirm: false args: - -c - >- flux reconcile source oci --context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-ks: shortCut: Shift-R confirm: false description: Flux reconcile scopes: - kustomizations command: bash background: false args: - -c - >- flux reconcile kustomization --context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-ir: shortCut: Shift-R confirm: false description: Flux reconcile scopes: - imagerepositories command: sh background: false args: - -c - >- flux reconcile image repository --context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-iua: shortCut: Shift-R confirm: false description: Flux reconcile scopes: - imageupdateautomations command: sh background: false args: - -c - >- flux reconcile image update --context $CONTEXT -n $NAMESPACE $NAME | less -K toggle-rset: shortCut: Shift-T confirm: false scopes: - resourcesets description: Toggle to suspend or resume a ResourceSet command: bash background: false args: - -c - >- reconcile=$(kubectl --context $CONTEXT get resourceset -n $NAMESPACE $NAME -o=custom-columns='TYPE:.metadata.annotations.fluxcd\.controlplane\.io/reconcile' | tail -1); verb=$([ $reconcile = "disabled" ] && echo "resume" || echo "suspend"); flux-operator $verb rset --kube-context $CONTEXT -n $NAMESPACE $NAME | less -K toggle-inputprovider: shortCut: Shift-T confirm: false scopes: - resourcesetinputprovider description: Toggle to suspend or resume an InputProvider command: bash background: false args: - -c - >- reconcile=$(kubectl --context $CONTEXT get resourcesetinputprovider -n $NAMESPACE $NAME -o=custom-columns='TYPE:.metadata.annotations.fluxcd\.controlplane\.io/reconcile' | tail -1); verb=$([ $reconcile = "disabled" ] && echo "resume" || echo "suspend"); flux-operator $verb inputprovider --kube-context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-rset: shortCut: Shift-R confirm: false description: Flux reconcile scopes: - resourcesets command: bash background: false args: - -c - >- flux-operator reconcile rset --kube-context $CONTEXT -n $NAMESPACE $NAME | less -K reconcile-inputprovider: shortCut: Shift-R confirm: false description: Flux reconcile scopes: - resources command: bash background: false args: - -c - >- flux-operator reconcile inputprovider --kube-context $CONTEXT -n $NAMESPACE $NAME | less -K trace: shortCut: Shift-P confirm: false description: Flux trace scopes: - all command: bash background: false args: - -c - >- if [ -n "$RESOURCE_GROUP" ]; then api_endpoint="/apis/$RESOURCE_GROUP/$RESOURCE_VERSION"; else api_endpoint="/api/$RESOURCE_VERSION"; fi; api_resource=$(kubectl get --raw "${api_endpoint}" | jq -r ".resources[] | select(.name==\"$RESOURCE_NAME\")"); kind=$(echo ${api_resource} | jq -r '.kind'); namespace_arg=$(echo ${api_resource} | jq -r "if .namespaced == true then \"--namespace $NAMESPACE\" else \"\" end"); [ -n "$RESOURCE_GROUP" ] && api_version=$RESOURCE_GROUP/; api_version=${api_version}$RESOURCE_VERSION; flux trace --context $CONTEXT --kind ${kind} --api-version ${api_version} ${namespace_arg} $NAME |& less -K # credits: https://github.com/fluxcd/flux2/discussions/2494 get-suspended-helmreleases: shortCut: Shift-S confirm: false description: Suspended Helm Releases scopes: - helmrelease command: sh background: false args: - -c - >- kubectl get --context $CONTEXT --all-namespaces helmreleases.helm.toolkit.fluxcd.io -o json | jq -r '.items[] | select(.spec.suspend==true) | [.metadata.namespace,.metadata.name,.spec.suspend] | @tsv' | less -K get-suspended-kustomizations: shortCut: Shift-S confirm: false description: Suspended Kustomizations scopes: - kustomizations command: sh background: false args: - -c - >- kubectl get --context $CONTEXT --all-namespaces kustomizations.kustomize.toolkit.fluxcd.io -o json | jq -r '.items[] | select(.spec.suspend==true) | [.metadata.name,.spec.suspend] | @tsv' | less -K