> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kubestacks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upgrade KubeStacks in your cluster

> Move to a new version of KubeStacks by upgrading its Helm chart, and roll back if you need to.

The desktop app updates itself. In a cluster, KubeStacks is upgraded like anything else Helm installed: you upgrade its chart. The chart is released with KubeStacks itself, so the chart's version is the app's.

## Upgrade

<Steps>
  <Step title="See what's new">
    Each version's changes are in the [changelog](/changelog) and on [GitHub releases](https://github.com/KubeStacks/KubeStacks/releases).
  </Step>

  <Step title="Upgrade the chart">
    <CodeGroup>
      ```bash With your values file theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
      helm upgrade kubestacks oci://ghcr.io/kubestacks/charts/kubestacks \
        --namespace kubestacks --values values.yaml
      ```

      ```bash To a particular version theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
      helm upgrade kubestacks oci://ghcr.io/kubestacks/charts/kubestacks \
        --namespace kubestacks --values values.yaml --version 1.2.0
      ```

      ```bash Keeping the values you set before theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
      helm upgrade kubestacks oci://ghcr.io/kubestacks/charts/kubestacks \
        --namespace kubestacks --reuse-values
      ```
    </CodeGroup>

    Without `--version`, Helm installs the latest. The image's tag follows the chart unless you set `image.tag`.
  </Step>

  <Step title="Check it started">
    ```bash theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
    kubectl rollout status --namespace kubestacks deployment/kubestacks
    kubectl logs --namespace kubestacks deployment/kubestacks
    ```

    The first line of the log names the version that's running.
  </Step>
</Steps>

## What people see

Sessions live in KubeStacks' memory, so a new pod signs everyone out. Open pages reconnect to the new pod by themselves, and show the sign-in page. With single sign-on, signing in again is a click; with tokens, people paste one again. Behind an [authenticating proxy](/server/auth/proxy), KubeStacks keeps no sessions of its own, so nobody notices more than a reconnect.

The same goes for any change that replaces the pod: changing a setting, or the [views everyone sees](/server/views).

<Note>
  For the same reason the chart runs one replica. More than one would need sticky sessions, and each replica would still keep its own sessions.
</Note>

## Roll back

Helm keeps the previous revision, so going back is one command:

```bash theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
helm rollback kubestacks --namespace kubestacks
```

`helm history kubestacks --namespace kubestacks` lists the revisions, and `helm rollback kubestacks <revision> --namespace kubestacks` goes back to a particular one.

<Columns cols={2}>
  <Card title="Changelog" icon="book-open" href="/changelog">
    What changed in each version.
  </Card>

  <Card title="Helm values" icon="sliders-horizontal" href="/server/helm-values">
    Every setting the chart has.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.