target / strelka

Real-time, container-based file scanning at enterprise scale
Other
877 stars 113 forks source link

[REQUEST] How to update strelka? #439

Closed derfel1989 closed 6 months ago

derfel1989 commented 8 months ago

Is your feature request related to a problem? Please describe. I wish to update Strelka, but for every release, I run the installation process again.

Note: There is no mention of it in the documentation.

Describe the solution you'd like Update automatically via watchtower. (Docker Hub)

Describe alternatives you've considered A script to check weekly, for example, if there is an update available, so start it.

Thank you.

Derekt2 commented 8 months ago

Watchtower does seems to solve this problem of redeploying automatically, since the images are public

docker run -d \
    --name watchtower \
    -v /var/run/docker.sock:/var/run/docker.sock \
    containrrr/watchtower \
    target/strelka-backend target/strelka-frontend target/strelka-manager target/strelka-ui target/strelka-filestream target/strelka-fileshot target/strelka-oneshot

should work depending on which images you're pulling & running

Derekt2 commented 8 months ago

If you're running these images on kubernetes, keel seems a good option too: https://keel.sh/ or flux: https://fluxcd.io/flux/guides/image-update/

But I'm not sure there's anything we can add to the strelka project since these are implementation/deployment specific.

Het-Joshi commented 8 months ago
  1. Watchtower: You can use Watchtower to automatically update your Docker containers, including those running Strelka. This involves running Watchtower as a separate container, which monitors your Docker containers for updates and automatically pulls and restarts them when new versions are available on Docker Hub.

  2. Custom Script: You can write a custom script that checks for updates to Strelka on a regular basis (e.g., weekly) and automatically pulls and restarts the Docker containers if updates are available. This would involve scripting the Docker commands to pull the latest images and restart the containers.

#!/bin/bash

# Function to check for updates and update Docker containers if needed
check_and_update_strelka() {
    local current_version=$(docker image inspect -f '{{ .Created }}' target/strelka-backend | cut -d 'T' -f1)
    local latest_version=$(curl -s https://registry.hub.docker.com/v1/repositories/target/strelka-backend/tags | jq -r 'max_by(.last_updated) | .last_updated')

    if [[ "$current_version" != "$latest_version" ]]; then
        echo "New version of Strelka available. Updating..."
        docker-compose pull
        docker-compose up -d
        echo "Strelka updated successfully!"
    else
        echo "Strelka is already up to date."
    fi
}

# Main function to execute the update check
main() {
    echo "Checking for updates to Strelka..."
    check_and_update_strelka
}

# Execute the main function
main
  1. Keel or Flux (for Kubernetes): If you're using Kubernetes to deploy Strelka, you can consider using tools like Keel or Flux to automate the update process. These tools can monitor container image repositories for new versions and automatically update the deployments in your Kubernetes cluster.

  2. Manual Update: Alternatively, you can continue manually updating Strelka by running the installation process again for each release. While this option requires more manual effort, it may be suitable if you prefer to have more control over the update process.

Derekt2 commented 8 months ago

That's a good summary & script option! Up to @phutelmyer if he wants to consider adding something to the documentation, maybe under FAQ or management?

We also have an entire Kubernetes manifest section here, with no mention of it in the documentation. Including it with a note as to whether or not those resources are maintained/supported could be helpful.

derfel1989 commented 8 months ago

I have faced many problems updating via Watchtower or re-deploying the new docker image. Usually, the stack didn't work after the update, or they lost connection with the database. However, when I reran the installation process it did not happen.

Having a documented process to update the Strelka stack would be good. Watchtower is the best option from my standpoint. We might need to determine permanent volumes to lose data through the updates.

Thank you for your thoughts @Derekt2 @Het-Joshi