mirror of
https://github.com/holos-run/holos.git
synced 2026-03-20 09:15:02 +00:00
Previously, the quickstart step of generating the pod info component and generating the platform as a whole left the task of integrating the Component into the Platform as an exercise for the reader. This is a problem because it creates unnecessary friction. This patch addresses the problem by lifting up the Platform concept into the user-facing Schema API. The generated platform includes a top level #Platform definition which exposes the core Platform specification on the Output field. The Platform CUE instance then reduces to a simple `#Platform.Output` which provides the Platform spec to holos for rendering each component for each cluster. The CUE code for the schema.#Platform iterates over each Component to derive the list of components to manage for the Platform. The CUE code for the generated quickstart platform links the definition of StandardFleets, which is a Workload fleet and a Management cluster fleet to the Platform conveninece wrapper. Finally, the generated podinfo component drops a CUE file at the repository root to automatically add the component to every workload cluster. The result is the only task left for the end user is to define at least one workload cluster. Once defined, the component is automatically managed because it is managed on all workload clusters. This approach futher opens the door to allow generated components to define their namespaces and generated secrets on the management cluster separate from their workloads on the workload clusters. This patch includes a behavior change, from now on all generated components should assume they are writing to the root of the user's Git repository so that they can generate files through the whole tree. In the future, we should template output paths for generated components. A simple approach might be to embed a file with a .target suffix, with the contents being a simple Go template of the file path to write to. The holos generate subcommand can then check if any given embedded file foo has a foo.target companion, then write the target to the rendered template value.
Holos Quickstart
Generated from the Holos Quickstart guide.