mirror of
https://github.com/holos-run/holos.git
synced 2026-03-19 16:54:58 +00:00
The first thing most platforms need to do is come up with a strategy for managing namespaces across multiple clusters. This patch defines #Namespaces in the holos platform and adds a namespaces component which loops over all values in the #Namespaces struct and manages a kubernetes Namespace object. The platform resource itself loops over all clusters in the platform to manage all namespaces across all clusters. From a blank slate: ``` ❯ holos generate platform holos 4:26PM INF platform.go:79 wrote platform.metadata.json version=0.82.0 platform_id=018fa1cf-a609-7463-aa6e-fa53bfded1dc path=/home/jeff/workspace/holos-run/holos-infra/saas/platform.metadata.json 4:26PM INF platform.go:91 generated platform holos version=0.82.0 platform_id=018fa1cf-a609-7463-aa6e-fa53bfded1dc path=/home/jeff/workspace/holos-run/holos-infra/saas ❯ holos pull platform config . 4:26PM INF pull.go:64 pulled platform model version=0.82.0 server=https://jeff.app.dev.k2.holos.run:443 platform_id=018fa1cf-a609-7463-aa6e-fa53bfded1dc 4:26PM INF pull.go:75 saved platform config version=0.82.0 server=https://jeff.app.dev.k2.holos.run:443 platform_id=018fa1cf-a609-7463-aa6e-fa53bfded1dc path=platform.config.json ❯ (cd components && holos generate component cue namespaces) 4:26PM INF component.go:147 generated component version=0.82.0 name=namespaces path=/home/jeff/workspace/holos-run/holos-infra/saas/components/namespaces ❯ holos render platform ./platform/ 4:26PM INF platform.go:29 ok render component version=0.82.0 path=components/namespaces cluster=management num=1 total=2 duration=464.055541ms 4:26PM INF platform.go:29 ok render component version=0.82.0 path=components/namespaces cluster=aws1 num=2 total=2 duration=467.978499ms ``` The result: ```sh cat deploy/clusters/management/components/namespaces/namespaces.gen.yaml ``` ```yaml --- metadata: name: holos labels: kubernetes.io/metadata.name: holos kind: Namespace apiVersion: v1 ```