Octopod is a fully open-source self-hosted solution for managing multiple deployments in a Kubernetes cluster with a user-friendly web interface. Managing deployments does not require any technical expertise.
We created Octopod because we believe that everything we release should be rigorously tested, however, such desires greatly complicate the development workflow leading to longer release cycles. We use Octopod to mitigate the downsides of rigorously testing each feature by deploying every single change we make to a separate staging environment allowing QA to investigate each feature independently and in parallel.
- π Technical architecture [RU]
- βοΈ Control script guide [RU]
- π§π Octopod deployment guide [RU]
- π§π Helm-based Octopod project setup [RU]
- ππ octo CLI user guide [RU]
- π€ CI integration
- π Octopod security model [RU]
The longest part of setting up Octopod for your project will probably be writing Control Scripts. In total you should be able to get things running in about a day.
Yes. Octopod is project-agnostic. If you can run your project in a Docker container, then you can use Octopod with that project.
You need to understand the basics of Kubernetes and be familiar with whatever hosting provider you will be using. There is no need to know any special language β you can write Control Scripts in whatever language you like.
Yes. If you can run arbitrary executables in your CI, then you will be able to integrate it with Octopod. Integration basically consists of calling our octo CLI tool to perform desired actions. You can find more detail in the CI integration doc.
It's been excluded from the GUI because we don't have a good security story to accompany this feature yet. Some secret and credentials may leak to the project team using Octopod and, potentially, not everyone should have access to this data.
We believe that there is a lot to be gained in programming in general by being able to statically ensure invariants in your code. One of the most practical ways of ensuring invariants is a good static type system. Haskell and Rust are both languages that have very strong type systems. This allows us to move fast without breaking things in the process.