Review - DebianOS Install (w/k8s)
Opened this issue · 5 comments
Given a clean DebianOS image, install and setup FlowFuse using k8s. k8s currently represented just shy of 60% of our EE deployments in self-hosted environments, and 12% of CE deployments
Considerations
- Each step taken should be recorded
- Any frustrations/friction should be highlighted and documented
- The full process should be timed, ideally with rough timestamps along the too so that we understand where time is being spent.
Areas for Improvement
- #4572
- Insert other ideas here from this investigation
I don't think the Kubernetes approach should be considered as an installation method for a single server.
The Kubernetes approach is not ideal for a single server installation. While it is technically possible to run Kubernetes on a single-node cluster, it is excessive and does not leverage the key benefits Kubernetes was designed for.
IMO for a single node we should consider a Docker install approach while the installation method on a Kubernetes cluster should be a separate one.
I don't think the Kubernetes approach should be considered as an installation method for a single server.
Thanks Piotr. In that case, why would users choose this route in our documentation? We should make this clearer in that opening documentation, we drive users towards Docker.
As discussed:
- for quick product evaluation I will go with docker
- maybe this could apply to small production deployments where high availability and scalability are not the case
- for production-ready environments, Kubernetes installation is a way to go
- I can also imagine, that in bigger enterprises Kubernetes cluster is more likely to be available than a single docker server - in that case IT team will use existing resources for product evaluation instead of creating a new server for this purpose
FlowFuse platform installation timeline using Kubernetes approach
Installation prerequisites:
- kubernetes cluster installed, including ingress controller
- kubectl, helm tools available
- domain configured via external local dns server before installation
Installation timeline:
- Intro to documentation (time spent on reading before I reach ‘actions’ steps): 1m30s
- Add helm repository: 8s
- Configure FlowFuse installation:
- use built-in database: 2m4s
- own database: 6m57s
- Installation: 11m36s
- veery long helm install time, probably due to the need of pulling postgres and FF images
Total time:
- with built-in database: 15m 18s
- using own database: 20m 11s
timeline
title Setup Task Durations with Time in Seconds (in seconds)
section Intro to Documentation
Intro to documentation : 90s
section Add Helm Repo
Add helm repo : 8s
section Configure FlowFuse
Use built-in database : 124s
Own database : 420s
section Installation
Installation : 696s
My thoughts:
- I made couple of typos during configuration preparation, finding the root cause required digging into the pod logs
- documentation is chaotic
- some information about possible configuration is showed after installation is made (enabling mqtt and file-store), this is confusing
- some very specific configurations examples are mentioned which may increase the confusion
- kubernetes node labeling - be default we should disable it to make installation easier
- Configuring Flowfuse/First Run Setup - we should consider moving it to the same level as
Installing Flowfuse
andUpgrading Flowfuse
and use it as a starting point for configuration-related FAQ - typo in
forge.localPostrgresql
- FlowFuse first setup - while creating admin user I cannot confirm the form by hitting
Enter
This is done by creating a **customization.yml** file in the **helm** directory
- there is no need to createhelm
directory and keepcustomization.yml
there.- Installation process took vast amount of time. This should be investigated further to determine the root cause. For sure pulling images took some time, although I didn’t investigate which one.
Like with Docker setup, I would aim to make installation as simple as possible. I would hide stuff related to more specific configuration behind drop-down FAQ or dedicated configuration-related page.
FlowFuse platform installation timeline using Kubernetes approach - evaluation for changes introduced in PR 4704
Installation prerequisites:
- kubernetes cluster installed, including ingress controller
- kubectl, helm tools available
- domain configured via external local dns server before installation
Installation timeline:
- Intro to documentation (time spent on reading before I reach ‘actions’ steps): 45s
- Add helm repository: 8s
- Configure FlowFuse installation:
- use built-in database: 55s
- own database: 2m30s
- label nodes: 40s
- Installation: 1m 15s
Total time:
- with built-in database: 3m 33s
- using own database: 5m 8s
timeline
title Setup Task Durations with Time in Seconds (in seconds)
section Intro to Documentation
Intro to documentation : 45s
section Add Helm Repo
Add helm repo : 8s
section Configure FlowFuse
Use built-in database : 55s
Own database : 150s
label cluster nodes: 40s
section Installation
Installation : 75s
My comment:
I couldn't reproduce the long installation time I faced on the first run. Due to this, the installation time change looks like a huge improvement when it is not - an installation process depends on factors on which we don't have any influence (cluster resources, network bandwidth, external database performance).
The most important conclusion from this evaluation run is the fact that the configuration step seems to be simpler (copy-paste + small adjustments). Documentation itself seems to be cleaner and 'to-the-point'.