mirror of
https://github.com/fosrl/pangolin.git
synced 2026-05-08 13:49:15 -05:00
[GH-ISSUE #1438] Headless/declarative setup (no dashboard) #6706
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @oschwartz10612 on GitHub (Sep 8, 2025).
Original GitHub issue: https://github.com/fosrl/pangolin/issues/1438
Originally assigned to: @oschwartz10612 on GitHub.
Discussed in https://github.com/orgs/fosrl/discussions/952
Originally posted by dystopiandev June 20, 2025
I've noticed the recommended way to programmatically setup pangolin is via the integration api, and that works with an api key, which one must logon to the admin dash to create. If it were possible to provide some init/seed data for sites, resources, etc, that would make it easier to provision in IaC.
Is it possible or planned to have pangolin setup entirely with no usage of the web ui, or have I missed a guide in the docs for achieving exactly this?
@oschwartz10612 commented on GitHub (Sep 8, 2025):
Also discussed in:
https://github.com/orgs/fosrl/discussions/108
https://github.com/orgs/fosrl/discussions/182
@marcschaeferger commented on GitHub (Sep 8, 2025):
@oschwartz10612 Thanks for moving this forward!
To make Pangolin future-proof and seamlessly integrable into CI/CD and IaC deployment workflows and to align with industry best practices, I suggest we combine the following approaches:
1. Kubernetes Operator for Declarative Management
I’ve already opened Issue #1439 for this.
A Kubernetes Operator would allow full management of Pangolin through CRDs (Custom Resources):
As discussed, only alignment/agreements and some optimizations plus documentation remain. Before that, I would also like to complete full OTEL integration, security hardening, and further Docker image improvements.
2. Bootstrap and Seed Config for Docker & Traditional Deployments
For non-Kubernetes environments, a declarative configuration approach should also be possible:
bootstrap.yaml: One-time initialization for admin account and API key (run only at first startup).seed.yaml: Idempotent application of initial resources.Example:
Example: Docker Compose
3. CLI Tool (
pangolinctl) for Declarative ManagementAfter the bootstrap process, a dedicated CLI tool (similar to
ceph,calicoctl,grafanactlor evenkubectl) could provide:→ Ideally, both the Operator and CLI provide the same capabilities, ensuring parity between Kubernetes, Docker, and VM installations. They could both call a REST API for the Configuration. One Example: https://grafana.com/docs/grafana/latest/observability-as-code/grafana-cli/
4. Advantages of This Approach
Tasks
bootstrap.yamlandseed.yaml.I’d be happy to contribute by helping draft a design document, creating sample manifests/configs, and assisting with implementation.