Skip to content

Support air-gapped catalogs via a local ConfigMap-mounted index - #16

Open
Anchit-04 wants to merge 1 commit into
openeverest:mainfrom
Anchit-04:air-gapped-catalog-index
Open

Anchit-04 wants to merge 1 commit into
openeverest:mainfrom
Anchit-04:air-gapped-catalog-index

Conversation

@Anchit-04

Copy link
Copy Markdown

Right now plugin-hub always fetches index.json from GitHub, so a cluster with no outbound internet access can never populate its catalog. Add an alternate local-file source, selected by a new HUB_INDEX_PATH env var (or the chart's localIndex.configMapName value), that takes precedence over the existing hubIndexURL fetch.

  • catalogCache now wraps a source-agnostic fetch func instead of owning an *http.Client directly, so both the HTTP path (fetchRemoteIndex) and the new local-file path (fetchLocalIndex) share the same TTL caching and stale-on-error fallback. This also makes the cache unit-testable without a live server.
  • The chart mounts the ConfigMap as a directory rather than a subPath file, so updates propagate on the existing cache TTL without a pod restart.
  • Defaults are unchanged: with localIndex.configMapName empty, no new env var, volume, or mount is rendered.
  • I took help from an agent to work on this PR.

Fixes #12

Right now plugin-hub always fetches index.json from GitHub, so a
cluster with no outbound internet access can never populate its
catalog. Add an alternate local-file source, selected by a new
HUB_INDEX_PATH env var (or the chart's localIndex.configMapName
value), that takes precedence over the existing hubIndexURL fetch.

- catalogCache now wraps a source-agnostic fetch func instead of
  owning an *http.Client directly, so both the HTTP path
  (fetchRemoteIndex) and the new local-file path (fetchLocalIndex)
  share the same TTL caching and stale-on-error fallback. This also
  makes the cache unit-testable without a live server.
- The chart mounts the ConfigMap as a directory rather than a
  subPath file, so updates propagate on the existing cache TTL
  without a pod restart.
- Defaults are unchanged: with localIndex.configMapName empty, no
  new env var, volume, or mount is rendered.

Fixes openeverest#12

Signed-off-by: Anchit-04 <anchit1234deshpande@gmail.com>
@spron-in

Copy link
Copy Markdown
Contributor

@Anchit-04 thanks! did you test it? how does it handle icons of providers?

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.

Support air-gapped environments

2 participants