linode / linode/apl-api

/v2/settings

Open
#1,070 0 comments 0 reactions 0 assignees View on GitHub
Not yet refined
Dominant language
TypeScript
Stars
2
Forks
1
Avg merge
6d 2h
Merged PRs (30d)
8

Description

Platform settings by definition should impact configuration of the **whole platform** (e.g.: useORCS, nodeSelector, version, globalPullSecret.

Currently many platform settings are wrappers for just few applications. Such a settings should be available at application level.
Moreover some **feature flags are immutable** changing them could cause service disruption and require further manual steps.
These flags are used to decide how to bootstrap core application, thus should not be visible are configurable settings.

The proposed API changes enforce new bootstrap process where certain configurations provided on helm install are stored as user defined app settings. Those are usually credentials for 3rd system integrations (e.g. per app object storage settings, dns tokens for cert-manager, external-dns, alert manager config).

It is worth noting that users will still be able to install apl with the old legacy values.yaml. The proposed change impacts how those settings are manage in the post install stage.

## Data model changes
### Changed or Moved

| Previous property | New property | Change |
|---|---|---|
| `Settings.otomi.git` | `Settings.git` | Git configuration moved to the top level. |
| `Settings.otomi.isPreInstalled` | `Settings.cluster.isPreInstalled` | Consolidate under cluster endpoint |
| `Settings.otomi.nodeSelector` | `Settings.cluster.nodeSelector` | Consolidate under cluster endpoint |
| `Settings.otomi.useORCS` | `Settings.cluster.useORCS` | Consolidate under cluster endpoint |
| `Settings.otomi.version` | `Settings.cluster.version ` | Consolidate under cluster endpoint |

### Added
| New property | Rationale |
|---|---|
| `Settings.cluster.globalPullSecretName` | reference to secret in the apl-secrets ns|

### Removed

| Removed property | Notes | Rationale|
|---|---|---|
| `Cluster.k8sContext` | Removed from `cluster.yaml`. | not used |
| `Settings.alerts` | Entire alert configuration removed. | only used during bootstrap, later managed in alert manager app settings|
| `Settings.platformBackups` | Split per app | add new endpoint to manage database configuration /v2/apps/databases |
| `Settings.obj` | Object Storage wizard and Linode credentials/buckets removed. | only used during bootstrap per app |
| `Settings.dns` | DNS configuration removed. | only used during bootstrap per app (external-dns and cert-manager |
| `Settings.kms` | KMS/SOPS configuration removed. | not used|
| `Settings.otomi.adminPassword` | Removed. | only used during bootstrap later managed via /users API|
| `Settings.otomi.aiEnabled` | Removed. | not used |
| `Settings.otomi.globalPullSecret` | only used during bootstrap, later managed as `Settings.cluster.globalPullSecretName` |
| `Settings.otomi.hasExternalDNS` | Removed. | only used during bootstrap, later managed per app (external-dns and cert-manager |
| `Settings.otomi.hasExternalIDP` | Removed. | only used during bootstrap, later managed per app (external-dns and cert-manager |
| `Settings.otomi.isMultitenant` | Removed. | always set to true|

## Endpoints
That will leaves us with the following API endpoints:

- `/v2/settings/cluster`
- `/v2/settings/git`
- `/v2/settings/oidc`
- `/v2/settings/ingress`
- /v2/apps/databases

All other /v1/settings are removed.

Contributor guide

Open the contributing guide

Research direction

Start with the listed /v2/settings/cluster, /v2/settings/git, /v2/settings/oidc, /v2/settings/ingress, and /v2/apps/databases endpoints, then compare them with the proposed data-model changes. Verify which legacy /v1/settings endpoints and properties are removed or moved, and confirm that bootstrap-provided values remain manageable after installation. Done means the endpoint set and property layout match the proposal while legacy values.yaml installation remains supported.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.