Support advanced Kubernetes control plane configuration - #2368
Conversation
Optional list and string inputs are now typed Input<T | undefined> rather than Input<T> | undefined, so the surrounding signatures no longer accept them. Widen the affected signatures and guard the resolved values instead of casting. The one behaviour change is in getRecommendedAMI: version now falls back with `version ?? clusterVersion`. Previously an args.version that resolved to undefined was passed straight into ssmParameterName, producing a malformed SSM parameter path.
The EKS control plane configuration types were added in 7.42.0.
Adds kubeSchedulerConfig, kubeApiServerConfig and kubeControllerManagerConfig to eks.Cluster, passed through to aws.eks.Cluster. All three are optional with no default, so unset means AWS's defaults. Regenerates the schema and SDKs; the schema's aws refs move from v7.14.0 to v7.43.0 as a result of the dependency bump.
|
PR is now waiting for a maintainer to run the acceptance tests. |
|
@pose @guineveresaenger — could you take a look when you get a chance? Thanks! |
|
@iwahbe — I know you're an active maintainer across the Pulumi repos, and I saw your recent contributions here too. Could you take a look as well? Thanks! |
|
@Frassle is there any chance that u can take a look ? |
|
EKS falls under the @pulumi/providers team, and they’ll review this PR when they have capacity. Please don’t ping individual maintainers directly to request attention on a PR. That creates unnecessary pressure on contributors and maintainers, and is not an appropriate way to expedite review. The owning team will triage the PR through the normal process. |
Proposed changes
Adds
kubeSchedulerConfig,kubeApiServerConfigandkubeControllerManagerConfigtoeks.Cluster, passed straight through toaws.eks.Cluster. This exposes AWS's advanced Kubernetes control plane configuration to clusters created through this component.All three are optional with no default, so leaving them unset sends nothing and AWS's own defaults apply — no change for existing users. I followed
upgradePolicy(#1787) file-for-file, including exposing them onClusterResult.These types only exist in
@pulumi/aws7.42.0+, so this bumpsnodejs/eksfrom 7.25.0 to 7.43.0 (andsdk/go.modto match, or the Go SDK doesn't compile). That bump surfaces 7 pre-existing type errors innodegroup.ts, because optional list and string inputs are now typedInput<T | undefined>rather thanInput<T> | undefined. This is the same breakage currently blocking #2209, so this PR should unblock that too. I fixed them by widening the affected signatures and guarding the resolved values rather than casting, so runtime behaviour is unchanged — with one deliberate exception, called out in its own commit: ingetRecommendedAMI,versionnow falls back withversion ?? clusterVersion. Previously anargs.versionthat resolved toundefinedwas passed straight intossmParameterName, producing a malformed SSM parameter path.Regenerating the schema also flips 57
/aws/v7.14.0refs tov7.43.0. That's pre-existing drift the regen picks up, purely mechanical.The example sets
kubeSchedulerConfigonly.kubeControllerManagerConfigrequires EKS Provisioned Control Plane, so it would fail on the test cluster.Split into three commits — the
nodegroup.tstype fixes, the dependency bump, then the feature plus regenerated schema and SDKs — in case you'd rather take them separately.Verified locally:
tscclean, 417/417 unit tests with snapshots,make build_nodejs,go build ./go/...,make providerand the provider tests. dotnet, java and python SDKs are regenerated but I can't build those here. I did not run the integration tests, since they create real EKS clusters.One thing to watch: regenerating the nodejs SDK on my machine rewrites the
sdk/nodejs/types/*.tsimports from../utilitiesto./utilities, which doesn't compile. I reproduced that on an unmodifiedmaster, so it isn't coming from this change, and I reverted those files (along withsdk/java/settings.gradleand the version stamp inbuild.gradle) to keep the diff to what this change actually needs. Ifbuild_sdk (nodejs)disagrees, take CI's version of those files.Related issues
Fixes #2367