feat(helm): add nodeport access type support to Helm chart#2401
feat(helm): add nodeport access type support to Helm chart#2401styx0r wants to merge 2 commits intoskupperproject:mainfrom
Conversation
Expose three new controller configuration values in the Skupper Helm
chart so that nodeport (and other non-default access types) can be
configured at install time:
clusterHost - IP/hostname of any cluster node; required
when nodeport is in enabledAccessTypes
enabledAccessTypes - comma-separated list of access types to enable
(defaults to local,loadbalancer,route when empty)
defaultAccessType - default access type for sites that don't specify
one; controller auto-selects when empty
The chart generator script injects these values into values.yaml and
uses awk to add Helm conditional blocks immediately before the
SKUPPER_KUBE_ADAPTOR_IMAGE env var in both cluster and namespace
deployment templates, so users who do not set these values see no
change in behaviour.
Also fixes a pre-existing macOS BSD sed incompatibility: replace all
`sed -i 'pattern' file` calls (GNU-only) with the portable tmp-file
pattern `sed 'pattern' file > file.tmp && mv file.tmp file`.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Tested end-to-end on a real Kubernetes cluster:
|
fgiorgetti
left a comment
There was a problem hiding this comment.
A couple of minor suggestions. But overall, it looks good to me.
Correct the default value for enabledAccessTypes in the Helm chart generator script to "local,loadbalancer,route". Update the README to reflect the change in the Helm install command and add a note clarifying that defaultAccessType is optional, with the controller auto-selecting the default when omitted.
fgiorgetti
left a comment
There was a problem hiding this comment.
Thank you for your contribution!
It looks good to me.
@ajssmith @AryanP123 @JPadovano1483 @nluaces I would like to get your thoughts here as well,
Thanks.
|
Thank you very much for your efforts. I hope this small addition helps others as well. |
|
LGTM. One note: the README says Let me know what you think. |
Actually, if the |
Summary
The Skupper controller already has full support for
nodeportas aRouterAccessaccess type (including validation,SKUPPER_CLUSTER_HOSTenv var reading, etc.), but the Helm chart had no way to configure the required controller env vars. This PR closes that gap.Changes:
scripts/skupper-helm-chart-generator.sh: adds three new values to the generatedvalues.yaml(clusterHost,enabledAccessTypes,defaultAccessType) and injects Helm conditional env-var blocks into both the cluster and namespace deployment templates, immediately before theSKUPPER_KUBE_ADAPTOR_IMAGEenv var (used as a stable anchor).charts/skupper/README.md: documents the three new values in a new "Access Type Configuration" section, with a concrete "Using NodePort" example.sed -i 'pattern'calls (GNU-only) with the portablesed 'pattern' file > file.tmp && mv file.tmp filepattern, fixing a pre-existing breakage on macOS where BSD sed requiressed -i ''.Behaviour
Users who do not set any of the new values see zero change — the controller's own defaults apply as before (
local,loadbalancer,route).To deploy with nodeport:
Test plan
make generate-skupper-helm-chartand verifycharts/skupper/values.yamlcontains the three new values{{- if .Values.clusterHost }}, etc.)helm lint charts/skupperpasses--set clusterHost=... --set enabledAccessTypes=... --set defaultAccessType=nodeportrenders env vars in the deploymentSite+RouterAccesswithaccessType: nodeport, verifyRouterAccessstatus shows the node IP and high portsAssisted by Claude Code