Add frank-gateway Helm chart wrapping the official apisix chart - #39
Add frank-gateway Helm chart wrapping the official apisix chart#39jjansenvr wants to merge 16 commits into
Conversation
Wraps apache/apisix-helm-chart 2.14.0 as a dependency with our own defaults: standalone/yaml deployment mode, no etcd/ingress-controller, custom GHCR image. Includes a weekly GH Action that checks for new apisix chart releases and opens a PR to bump the dependency. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds a new frank-gateway Helm chart that wraps the upstream apache/apisix-helm-chart as a dependency and provides opinionated defaults for running APISIX in standalone/YAML mode, plus automation to detect and propose dependency bumps.
Changes:
- Introduces
charts/frank-gatewayas a wrapper chart depending onapisixchart2.14.0. - Sets default subchart overrides for standalone/YAML mode, disables etcd and ingress-controller, and configures a custom GHCR image.
- Adds a scheduled GitHub Actions workflow to check for new APISIX chart releases and open an automated bump PR.
Reviewed changes
Copilot reviewed 4 out of 5 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| charts/frank-gateway/values.yaml | Adds default apisix subchart overrides (standalone/YAML mode, no etcd/ingress-controller, custom image). |
| charts/frank-gateway/readme.md | Documents dependency-update troubleshooting and value nesting gotchas. |
| charts/frank-gateway/Chart.yaml | Defines the new wrapper chart and pins the apisix chart dependency. |
| charts/frank-gateway/Chart.lock | Locks the dependency resolution for the pinned apisix chart. |
| .github/workflows/check-apisix-update.yaml | Adds weekly automation to detect new apisix chart versions and open a bump PR. |
Suppressed comments (1)
charts/frank-gateway/readme.md:17
- De README verwijst naar
./scripts/update-deps.sh, maar dat script bestaat nergens in deze repository. Dat maakt de troubleshooting-instructie onbruikbaar/verwarrend; ofwel het script toevoegen, of de verwijzing verwijderen.
Of draai `./scripts/update-deps.sh`, die dit automatisch afhandelt.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Rename readme.md -> README.md to match this repo's chart convention. - Drop dead reference to a non-existent ./scripts/update-deps.sh. - Pin azure/setup-helm and yq to specific versions instead of latest, avoiding unreviewed breaking changes in the weekly update workflow. - Make charts.apiseven.com the primary apisix dependency repo instead of apache.github.io: the shared release.yml runs `helm dependency update` for every chart with no fallback logic, so DNS flakiness on the ASF domain could block releases for the whole repo, not just this chart. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
| working-directory: charts/frank-gateway | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@v4 |
There was a problem hiding this comment.
All GitHub actions should be pinned on commit hash instead of tag. This is to harden against supply-chain attacks. Tags can be overwritten with malicious code; Commit hashes are immutable.
philipsens
left a comment
There was a problem hiding this comment.
The chart looks fine. It sets few default so people can configure it further themselves.
For documentation we use the readme-generator-for-helm, which will add the documentation to the README that is visible on GitHub and the GitHub Pages. You could look at Frank2Example values.yaml for an example.
|
Copy/Paste of relevant part of values.yaml. I think the Kustomize examples can be in there as comments, but the chart should not rely on using this method as default. apisix:
# Do not return the APISIX version in the response header for security reasons.
enableServerTokens: false
deployment:
mode: standalone
role: data_plane
standalone:
# Recommended to create apisix.yaml configmap via Kustomize. Helps with readability and allows for syntax validation in IDEs.
# Recommended to also not use "apisix.yaml" as the name of the configmap, as it can be confused with the default configmap name used by APISIX.
# Example of how to create the configmap via Kustomize:
# kustomization.yaml:
# ```yaml
# configMapGenerator:
# - name: apisix-yaml
# files:
# - apisix.yaml=./apisix.yaml
#
# generatorOptions:
# disableNameSuffixHash: true
# ````
existingConfigMap: apisix-yaml
nginx:
logs:
errorLogLevel: info
luaSharedDicts:
- name: prometheus-cache
size: 10m
customLuaSharedDicts:
- name: openid-connect-client-cache
size: 1m
ssl:
enabled: true
sslProtocols: "TLSv1.2 TLSv1.3"
# Smaller list of supported TLSv1.2 ciphers that are still considered secure. The default list will trip security scanners and is not recommended for production use.
sslCiphers: "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256"
prometheus:
enabled: true
enableIPv6: false
admin:
enabled: false
plugins:
- basic-auth
- key-auth
- consumer-restriction
- proxy-rewrite
- openid-connect-client
- cors
- openid-connect
- cert-auth
- ip-restriction
customPlugins:
enabled: true
luaPath: "/usr/local/apisix/custom-plugins/?.lua"
plugins:
- name: plugin-name
attrs: {}
configMap:
# Needs a dummy configmap to be able to mount the configmap volume, otherwise the pod will not start
# Example of how to create to create a dummy configmap via Kustomize:
# kustomization.yaml:
# ```yaml
# configMapGenerator:
# - name: custom-plugins-dummy
# literals: []
# files: []
#
# generatorOptions:
# disableNameSuffixHash: true
# ```
name: custom-plugins-dummy |
…nk/charts into add-frank-gateway-chart
| | `apisix.ingress-controller.enabled` | Enable the bundled APISIX ingress-controller subchart | `false` | | ||
|
|
||
| ## Troubleshooting: `helm dependency update` faalt | ||
|
|
||
| De chart hangt af van de officiële `apisix` chart via `https://apache.github.io/apisix-helm-chart`. |
There was a problem hiding this comment.
The documentation is both in Dutch and English. Why is it the way it is?
I'd rather only have it in English.
| ## @section etcd | ||
| ## We use standalone/yaml mode and don't talk to etcd at all (internal or external). | ||
| ## |
There was a problem hiding this comment.
I think this needs the @descriptionStart and end.
| mounts: [] | ||
|
|
||
| ## @param apisix.apisix.plugins Enabled APISIX plugin list; custom plugins (see `customPlugins.plugins` above) must also be listed here, or APISIX won't load them | ||
| # Custom plugins currently are required to be listed here as well |
There was a problem hiding this comment.
This comment is not used in the generated readme, is that intended?
| # Plugin code is baked into the Frank Gateway image under: | ||
| # /usr/local/apisix/custom-plugins/apisix/plugins | ||
| luaPath: "/usr/local/apisix/custom-plugins/?.lua" | ||
| ## @skip apisix.apisix.customPlugins.plugins | ||
| # Custom plugin definitions: each entry has `name` (must match its Lua module name), | ||
| # `attrs` (passed through to the APISIX plugin config), and an optional `configMap` | ||
| # (`name`/`mounts`) to mount plugin config from an existing ConfigMap. |
There was a problem hiding this comment.
These comment is not used in the generated readme, is that intended?
| # Plugin code is baked into the Frank Gateway image under: | ||
| # /usr/local/apisix/custom-plugins/apisix/plugins |
There was a problem hiding this comment.
This could be moved to the section or the the property with @extra
| # Let op: dit zijn allemaal overrides voor de `apisix` subchart-dependency, dus | ||
| # alles moet genest staan onder de `apisix:` key (anders komt het nooit aan bij | ||
| # de subchart, zie apache/apisix-helm-chart values.yaml). Er is in chart-versie | ||
| # 2.14.0 geen aparte dashboard-subchart/dependency (meer), dus daar is geen key voor. | ||
| # | ||
| # Extra addertje: de subchart heeft zelf ook weer een top-level `apisix:` key | ||
| # (een 1-op-1 spiegel van de APISIX config.yaml `apisix:`-sectie, met daaronder | ||
| # o.a. `deployment:`). Om daar iets in te overriden moet je dus `apisix.apisix.*` | ||
| # gebruiken vanuit onze values.yaml — de eerste `apisix:` is de dependency, de | ||
| # tweede is hun eigen config-sectie. |
There was a problem hiding this comment.
Shouldn't this be a section too?
Frank gateway is now on semver and starts at this version
fix repo link
…nk/charts into add-frank-gateway-chart
philipsens
left a comment
There was a problem hiding this comment.
Except for the one comment I, think it's all good!
Thank for contributing to the Charts repository!
| # Primaire repo: door API7.ai gehoste mirror, stabieler dan het ASF-officiele | ||
| # apache.github.io (dat af en toe DNS-resolutieproblemen heeft, zie README | ||
| # §Troubleshooting en apache/apisix-helm-chart#959). Onze release.yml draait | ||
| # `helm dependency update` zonder fallback-logica, dus een flaky primaire repo | ||
| # kan releases voor alle charts in deze repo blokkeren. | ||
| repository: "https://charts.apiseven.com" | ||
| # Fallback/alternatief: het ASF-officiele adres (1-op-1 met apache/apisix-helm-chart source): | ||
| # repository: "https://apache.github.io/apisix-helm-chart" No newline at end of file |
Wraps apache/apisix-helm-chart 2.14.0 as a dependency with our own defaults: standalone/yaml deployment mode, no etcd/ingress-controller, custom GHCR image. Includes a weekly GH Action that checks for new apisix chart releases and opens a PR to bump the dependency.