git.iko.soy/typeable/octopod
on latest help sign in
typeable/octopod/README.md
146 lines 8.3 kB history raw
1<p align="center">
2 <a href="#"><img src="img/logo.svg" width="500"></img></a>
3</p>
5<p align="center">
6 <a href="https://github.com/typeable/octopod/actions?query=workflow%3ABuild"><img src="https://github.com/typeable/octopod/workflows/Build/badge.svg?branch=master" alt="Build"></a>
7 <a href="https://github.com/typeable/octopod/actions?query=workflow%3ADocumentation+branch%3Amaster"><img src="https://github.com/typeable/octopod/workflows/Documentation/badge.svg?branch=master" alt="Documentation"></a>
8</p>
10_Octopod_ is a fully open-source self-service portal which empowers your team to leverage the full power of Helm without the need for technical expertise.
12Octopod is a way for you to provide a self-service portal for managing instances of a service in your cluster. Anything you can describe in a Helm Chart, any member of team can deploy. No matter how complex the deployment process is.
14The recipe is simple: you provide a url to your Helm repo, Octopod then automatically extracts the possible configuration that the Chart can have, and automatically manages the lifecycle of the services. What users see is just a simple web interface:
16## ๐Ÿ–ฅ Demo
18<p align="center"><img src="img/demo.gif"></img></p>
20## ๐Ÿง‘โ€๐Ÿ”ฌ Try it out for yourself
22You can have the installation from the demo above running on your local machine in minutes by running the following command:
24```bash
25/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/typeable/octopod/master/octopod_local_install.sh)"
26```
28You can dive deeper into the installation process in our [deployment guide](docs/en/Octopod_deployment_guide.md).
30<details>
31<summary>You can remove everything the command above installs by running the following command:</summary>
33```bash
34kind delete cluster --name octopod
35```
37</details>
39## Motivation
41We created _Octopod_ because we believe that everything we release should be rigorously tested, however, such desires greatly [complicate the development workflow](docs/en/PM_case_study.md) leading to longer release cycles.
43The members of our team that facilitate rigorously testing are also the member that require the most attention from our DevOps engineers to manage the many staging environments required for a proper testing cycle.
45With Octopod we were able to reduce the reliance on our DevOps teams for testing to practically zero, while increasing the DevOps maneuverability of our QA engineers and process.
47## ๐Ÿ“‘ Documentation
49### ๐Ÿ”ญ High-level notes
50- [๐Ÿ™ Overview](docs/en/Overview.md)
51- [๐Ÿง‘โ€๐Ÿ”ฌ Project management case study](docs/en/PM_case_study.md)
52- [๐Ÿง‘โ€๐Ÿ’ป Technical case study](docs/en/Tech_case_study.md)
54### ๐Ÿ› ๏ธ Technical documentation
55- [๐Ÿ— Technical architecture](docs/en/Technical_architecture.md)
56- [โš™๏ธ Control script guide][cs]
57- [๐Ÿ”ง๐Ÿ™ Octopod deployment guide](docs/en/Octopod_deployment_guide.md)
58- [๐Ÿ”ง๐Ÿš€ Helm-based Octopod project setup](docs/en/Helm-based_deployment_guide.md)
59- [๐Ÿ™๐ŸŽ› octo CLI user guide][octo]
60- [๐Ÿค– CI integration](docs/en/Integration.md)
61- [๐Ÿ”’ Octopod security model](docs/en/Security_model.md)
63## โ„น๏ธ FAQ
65### How long does it take to set up _Octopod_?
67Deploying Octopod itself can be done in a matter of minutes if you have a Kubernetes cluster at hand. If you want to deploy it locally we have [a handy script](docs/en/Octopod_deployment_guide.md#if-you-want-to-try-it-locally) that sets everything up automatically.
69After you have Octopod up and running the only thing you need is a Helm Chart that your team might want to deploy. That's it.
71### Will _Octopod_ work with my project if it uses X?
73Yes. _Octopod_ is project-agnostic. If you can run your project in a Docker container, then you can use _Octopod_ with that project.
75### Does _Octopod_ work with "vanilla" Kubernetes projects that don't use Helm?
77If you do not have Helm Charts for your projects, you will not be able to leverage the simple Octopod installation procedure we have developed.
79To use _Octopod_ with your project will need to either:
81- Write Helm Charts for your project
82- Write a set of [_control scripts_][cs] that deploy "vanilla" Kubernetes services
84You can always contact us if you need help. A good first place to ask questions is [Octopod Discussions](https://github.com/typeable/octopod/discussions).
86### What do I need to know to set up Octopod?
88You need to understand the basics of _Kubernetes_ and be familiar with whatever hosting provider you will be using.
90### What separates Octopod from exiting solutions like Gitlab Dynamic Environments?
92Most existing solutions like Gitlab Dynamic Environments offer you an extension of CI/CD pipelines. All they do is allow you to run bash scripts.
94This has several drawback the main of which is the fact that you need to understand the under-the-hood details of the deployment process to use them. Existing solutions don't abstract the deployment process. They package up steps of deployment. The user is still responsible for coordinating the steps. You still need to manually manage the state of your deployed services.
96Observability and transparency of the deployment management process is another drawback. To inspect the state of a deployed system you need to drop down to the Kubernetes level. At that point you alienate anyone without DevOps expertise. This is the problem Octopod solves.
98Octopod _actually_ abstracts the under-the-hood detail like Helm, Kubernetes and Docker from the user into an intuitive and easy to understand model. This allows anyone to manage and deploy services.
100### Octopod is great, but my service deployment lifecycle is slightly different.
102Octopod was developed in a modular way from the very start. It offers specific extension points called _control scripts_ that allow you to modify the behavior of Octopod. The _control scripts_ can be implemented in any programming language, even Bash. You can read more about _control scripts_ in our [_control script guide_][cs].
104We have developed [a generic set of _control scripts_](helm-control-scripts/) that should work great with any Helm Chart. You can use them as a base for your custom _control scripts_.
106### Does _Octopod_ work with my CI?
108Yes. 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](docs/en/Integration.md) doc.
110### How come I can't see the deployment logs in Octopod web app?
112It's been excluded from the GUI because we don't have a good security story to accompany this feature yet. Some secrets and credentials may leak to the project team using Octopod and, potentially, not everyone should have access to this data.
114### Octopod says "Failure" next to my deployment. Why is it not working?
116There are several places where things can go wrong:
1181. Your DevOps engineer could have made mistakes in one of the [_Control Scripts_][cs] leading to an improper deployment process.
120 To fix this the DevOps engineer can use the [_octo CLI_][octo] to see detailed logs collected during the deployment process and diagnose the issue.
1212. You could have one of the steps of your deployment failing (for example, a failing database migration).
123 If you have supplied a [_Kubernetes Dashboard_](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/) URL to _Octopod_ during deployment, then you will have a "Details" button in the _Web UI_. You can click that button to get a filtered view of the _Kubernetes Dashboard_ where you can see what could have gone wrong and diagnose the issue.
126## Quotations
128> Typeable team envisioned an insightful approach to CI/CD, which managed to help us cut the delivery time for new features and projects with Octopod
130โ€” Wes Iwanski โ€“ VP Technology, Downtown Travel
132## โ“ Still have questions?
134If you still have questions, be sure to ask them in our [Octopod Discussions](https://github.com/typeable/octopod/discussions).
137<br />
139<p align="center">
140 <i>Star the project of you like it</i>
141</p>
143<p align="center"><a href="https://typeable.io"><img src="img/typeable_logo.svg" width="177px"></img></a></p>
145[cs]: docs/en/Control_scripts.md
146[octo]: docs/en/Octo_user_guide.md