Skip to content

feat: byo catalog#2901

Merged
ferruhcihan merged 34 commits into
mainfrom
APL-1458
Feb 4, 2026
Merged

feat: byo catalog#2901
ferruhcihan merged 34 commits into
mainfrom
APL-1458

Conversation

@ferruhcihan
Copy link
Copy Markdown
Contributor

@ferruhcihan ferruhcihan commented Feb 2, 2026

📌 Summary

This PR introduces support for Bring Your Own (BYO) catalog functionality, allowing users to configure custom Helm chart repositories instead of relying solely on the default APL charts repository.

🔍 Reviewer Notes

The related apl-api branch was created only for testing purposes and not to break cluster creation. The api and console changes will be implemented later.

🧹 Checklist

  • Code is readable, maintainable, and robust.
  • Unit tests added/updated

@svcAPLBot
Copy link
Copy Markdown
Contributor

Comparison of Helm chart templating output:

@@ data @@
! - one map entry removed:
- HELM_CHART_CATALOG: "https://gitea.dev.linode-apl.net/otomi/charts.git"

@@ data.VERSIONS @@
! ± value change in multiline text (one insert, one deletion)
  
- {"api":"main","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":48,"tasks":"main","tools":"main"}
+ {"api":"APL-1458","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":50,"tasks":"main","tools":"main"}


@@ spec.template.spec.containers.otomi-api.image @@
! ± value change
- docker.io/linode/apl-api:main
+ docker.io/linode/apl-api:APL-1458



@@ (root level) @@
! + one map entry added:
+ catalogs:
+   default:
+     name: default
+     url: "https://github.com/linode/apl-charts.git"
+     branch: main
+     enabled: true

@@ versions.specVersion @@
! ± value change
- 48
+ 50

Comment thread versions.yaml Outdated
@svcAPLBot
Copy link
Copy Markdown
Contributor

Comparison of Helm chart templating output:

@@ data @@
! - one map entry removed:
- HELM_CHART_CATALOG: "https://gitea.dev.linode-apl.net/otomi/charts.git"

@@ data.VERSIONS @@
! ± value change in multiline text (one insert, one deletion)
  
- {"api":"main","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":48,"tasks":"main","tools":"main"}
+ {"api":"APL-1458","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":50,"tasks":"main","tools":"main"}


@@ spec.template.spec.containers.otomi-api.image @@
! ± value change
- docker.io/linode/apl-api:main
+ docker.io/linode/apl-api:APL-1458



@@ (root level) @@
! + one map entry added:
+ catalogs:
+   default:
+     name: default
+     url: "https://github.com/linode/apl-charts.git"
+     branch: main
+     enabled: true

@@ versions.specVersion @@
! ± value change
- 48
+ 50

@svcAPLBot
Copy link
Copy Markdown
Contributor

Comparison of Helm chart templating output:

@@ data @@
! - one map entry removed:
- HELM_CHART_CATALOG: "https://gitea.dev.linode-apl.net/otomi/charts.git"

@@ data.VERSIONS @@
! ± value change in multiline text (one insert, one deletion)
  
- {"api":"main","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":48,"tasks":"main","tools":"main"}
+ {"api":"APL-1458","console":"main","consoleLogin":"main","core":"main","specVersion":50,"tasks":"main","tools":"main"}


@@ spec.template.spec.containers.otomi-api.image @@
! ± value change
- docker.io/linode/apl-api:main
+ docker.io/linode/apl-api:APL-1458



@@ (root level) @@
! + one map entry added:
+ catalogs:
+   default:
+     name: default
+     url: "https://github.com/linode/apl-charts.git"
+     branch: main
+     enabled: true

@@ versions.specVersion @@
! ± value change
- 48
+ 50

@ferruhcihan ferruhcihan requested a review from Copilot February 2, 2026 14:44
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces support for Bring Your Own (BYO) catalog functionality, allowing users to configure custom Helm chart repositories instead of relying solely on the default APL charts repository. The implementation includes a migration strategy that automatically sets up a default catalog configuration, with optional private repository support via sealed secrets.

Changes:

  • Adds AplCatalog resource type with schema validation for catalog configuration
  • Removes OTOMI_CHARTS_URL environment variable and the cloneOtomiChartsInGitea function
  • Implements migration function to create default catalog configuration with Gitea integration when available
  • Updates API version from 48 to 50 with catalog-related schema changes

Reviewed changes

Copilot reviewed 21 out of 22 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
versions.yaml Updates API version to branch APL-1458 and removes aplCharts version reference
values/otomi-api/otomi-api.gotmpl Removes hardcoded HELM_CHART_CATALOG environment variable
values-schema.yaml Adds catalog schema definition with git URL, branch, and credentials support
values-changes.yaml Registers setDefaultAplCatalog migration function for version 50
tests/fixtures/env/settings/versions.yaml Updates specVersion to 50
tests/fixtures/env/catalogs/default.yaml Adds default catalog fixture configuration
src/operator/EXECUTION_FLOW.md Removes cloneOtomiChartsInGitea step from installation flow
src/common/repo.ts Adds AplCatalog kind and platformCatalogs resource group handling
src/common/repo.test.ts Adds comprehensive test coverage for AplCatalog resource operations
src/common/k8s.ts Adds getSealedSecretsPEM function to retrieve sealed secrets public key
src/common/k8s.test.ts Adds test coverage for getSealedSecretsPEM function
src/common/envalid.ts Removes OTOMI_CHARTS_URL environment variable
src/cmd/migrate.ts Implements setDefaultAplCatalog migration with sealed secret creation
src/cmd/migrate.test.ts Adds test coverage for catalog migration scenarios
src/cmd/install.ts Removes cloneOtomiChartsInGitea call from installation flow
src/cmd/install.test.ts Removes cloneOtomiChartsInGitea mock
src/cmd/commit.ts Removes cloneOtomiChartsInGitea function and unused imports
package.json Adds @linode/kubeseal-encrypt dependency
helmfile.d/snippets/defaults.yaml Updates specVersion to 50
helmfile.d/snippets/defaults.gotmpl Adds default catalog configuration to defaults
.env.sample Removes OTOMI_CHARTS_URL environment variable

Comment thread src/cmd/migrate.ts
Comment thread src/common/k8s.ts
Comment thread src/common/k8s.ts
Comment thread src/cmd/migrate.test.ts
@ferruhcihan ferruhcihan marked this pull request as ready for review February 2, 2026 14:57
@svcAPLBot
Copy link
Copy Markdown
Contributor

Comparison of Helm chart templating output:

@@ data @@
! - one map entry removed:
- HELM_CHART_CATALOG: "https://gitea.dev.linode-apl.net/otomi/charts.git"

@@ data.VERSIONS @@
! ± value change in multiline text (one insert, one deletion)
  
- {"api":"main","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":50,"tasks":"main","tools":"main"}
+ {"api":"APL-1458","console":"main","consoleLogin":"main","core":"main","specVersion":52,"tasks":"main","tools":"main"}


@@ spec.template.spec.containers.otomi-api.image @@
! ± value change
- docker.io/linode/apl-api:main
+ docker.io/linode/apl-api:APL-1458



@@ (root level) @@
! + one map entry added:
+ catalogs:
+   default:
+     name: default
+     url: "https://github.com/linode/apl-charts.git"
+     branch: main
+     enabled: true

@@ versions.specVersion @@
! ± value change
- 50
+ 52

Comment thread helmfile.d/snippets/defaults.gotmpl Outdated
Comment thread helmfile.d/snippets/defaults.yaml Outdated
Comment thread values-schema.yaml Outdated
Comment thread src/cmd/migrate.ts Outdated
Comment thread src/cmd/migrate.ts
Copy link
Copy Markdown
Contributor

@ElderMatt ElderMatt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, when the comments from Cas are fixed I think it can be approved

@svcAPLBot
Copy link
Copy Markdown
Contributor

Comparison of Helm chart templating output:

@@ data @@
! - one map entry removed:
- HELM_CHART_CATALOG: "https://gitea.dev.linode-apl.net/otomi/charts.git"

@@ data.VERSIONS @@
! ± value change in multiline text (one insert, one deletion)
  
- {"api":"main","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":52,"tasks":"main","tools":"main"}
+ {"api":"APL-1458","console":"main","consoleLogin":"main","core":"main","specVersion":53,"tasks":"main","tools":"main"}


@@ spec.template.spec.containers.otomi-api.image @@
! ± value change
- docker.io/linode/apl-api:main
+ docker.io/linode/apl-api:APL-1458



@@ (root level) @@
! + one map entry added:
+ catalogs:
+   default:
+     name: default
+     url: "https://github.com/linode/apl-charts.git"
+     branch: main
+     enabled: true

@@ versions.specVersion @@
! ± value change
- 52
+ 53

@svcAPLBot
Copy link
Copy Markdown
Contributor

Comparison of Helm chart templating output:

@@ data @@
! - one map entry removed:
- HELM_CHART_CATALOG: "https://gitea.dev.linode-apl.net/otomi/charts.git"

@@ data.VERSIONS @@
! ± value change in multiline text (one insert, one deletion)
  
- {"api":"main","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":52,"tasks":"main","tools":"main"}
+ {"api":"APL-1458","console":"main","consoleLogin":"main","core":"main","specVersion":53,"tasks":"main","tools":"main"}


@@ spec.template.spec.containers.otomi-api.image @@
! ± value change
- docker.io/linode/apl-api:main
+ docker.io/linode/apl-api:APL-1458



@@ (root level) @@
! + one map entry added:
+ catalogs:
+   default:
+     name: default
+     url: "https://github.com/linode/apl-charts.git"
+     branch: main
+     enabled: true

@@ versions.specVersion @@
! ± value change
- 52
+ 53

@ferruhcihan ferruhcihan enabled auto-merge (squash) February 4, 2026 12:37
@svcAPLBot
Copy link
Copy Markdown
Contributor

Comparison of Helm chart templating output:

@@ data @@
! - one map entry removed:
- HELM_CHART_CATALOG: "https://gitea.dev.linode-apl.net/otomi/charts.git"

@@ data.VERSIONS @@
! ± value change in multiline text (one insert, one deletion)
  
- {"api":"main","aplCharts":"main","console":"main","consoleLogin":"main","core":"main","specVersion":52,"tasks":"main","tools":"main"}
+ {"api":"main","console":"main","consoleLogin":"main","core":"main","specVersion":53,"tasks":"main","tools":"main"}




@@ (root level) @@
! + one map entry added:
+ catalogs:
+   default:
+     name: default
+     url: "https://github.com/linode/apl-charts.git"
+     branch: main
+     enabled: true

@@ versions.specVersion @@
! ± value change
- 52
+ 53

@ferruhcihan ferruhcihan merged commit 0c7aa04 into main Feb 4, 2026
15 checks passed
@ferruhcihan ferruhcihan deleted the APL-1458 branch February 4, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants