Search code examples
kubernetes-helm

Delete specific revision from release made with helm


I'm searching for a way with helm v3 to delete certain revision from given release.

Let's say that I got my-release with revision 1,2,2,4 that are automatically created on running helm upgrade and deploy new revisions. I can use helm rollback my-release 3 if I got issues with version 4.

Is there a way to delete specific revision - lets say 1 and 2

helm uninstall my-release 1 is not working unfortunately.


Solution

  • I just have a usecase where deleting a revision makes sense in my eyes:

    There are 4 revisions:

    $ helm history rocketchat-b '--namespace' 'rocketchat-b'
    REVISION        UPDATED                         STATUS          CHART                   APP VERSION     DESCRIPTION
    40              Fri Nov  3 12:16:38 2023        superseded      rocketchat-1.0.0                        Rollback to 38
    43              Tue Nov  7 15:19:02 2023        superseded      rocketchat-6.4.5-1      6.4.5           Upgrade "rocketchat-b" failed: failed to create resource: Ingress.extensions "rocketchat-b-rocketchat" is invalid: spec.rules[0].http.paths[0].path: Invalid value: "": must be an absolute path
    44              Tue Nov  7 15:19:05 2023        failed          rocketchat-6.4.5-1      6.4.5           Rollback "rocketchat-b" failed: failed to create resource: Ingress.extensions "rocketchat-b-rocketchat" is invalid: spec.rules[0].http.paths[0].path: Invalid value: "": must be an absolute path
    45              Tue Nov  7 15:47:31 2023        deployed        rocketchat-6.4.5-1      6.4.5           Upgrade complete
    

    There was also a release 39, that one was actually the last one which worked, but it is already deleted automatically (this is what a user potentially wants to avoid). 40 is a deployment of the wrong version, it partially worked, 43 and 44 are complete garbage because port numbers of pod and service don't match. I want to keep 40 now, even when I do some more upgrades (would prefer 39, but that one is gone). I assume, helm always keeps 4 revisions. maybe not the newest, but chances that 40 stays in my system is bigger if I delete 43 and 44.

    I delete these releases by deleting their secret:

    $ kubectl -n rocketchat-b get secret
    NAME                                           TYPE                                  DATA   AGE
    sh.helm.release.v1.rocketchat-b.v40            helm.sh/release.v1                    1      4d22h
    sh.helm.release.v1.rocketchat-b.v43            helm.sh/release.v1                    1      19h
    sh.helm.release.v1.rocketchat-b.v44            helm.sh/release.v1                    1      19h
    sh.helm.release.v1.rocketchat-b.v45            helm.sh/release.v1                    1      18h
    
    $ kubectl -n rocketchat-b delete secret sh.helm.release.v1.rocketchat-b.v43
    secret "sh.helm.release.v1.rocketchat-b.v43" deleted
    
    $ kubectl -n rocketchat-b delete secret sh.helm.release.v1.rocketchat-b.v44
    secret "sh.helm.release.v1.rocketchat-b.v44" deleted
    
    $ kubectl -n rocketchat-b get secret
    NAME                                           TYPE                                  DATA   AGE
    sh.helm.release.v1.rocketchat-b.v40            helm.sh/release.v1                    1      4d22h
    sh.helm.release.v1.rocketchat-b.v45            helm.sh/release.v1                    1      18h
    

    What's left is exactly what I want:

    $ helm history rocketchat-b '--namespace' 'rocketchat-b'
    REVISION        UPDATED                         STATUS          CHART                   APP VERSION     DESCRIPTION
    40              Fri Nov  3 12:16:38 2023        superseded      rocketchat-1.0.0                        Rollback to 38
    45              Tue Nov  7 15:47:31 2023        deployed        rocketchat-6.4.5-1      6.4.5           Upgrade complete