Skip to content

Commit e840002

Browse files
Merge pull request #1439 from stlaz/deads2k_featuresets_412
[4.12] OCPBUGS-6789: make the bootstrap kube-apiserver honor cluster-wide featuregates
2 parents a9a4df5 + 613faf7 commit e840002

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

bindata/bootkube/config/bootstrap-config-overrides.yaml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,15 +49,8 @@ apiServerArguments:
4949
- /etc/kubernetes/secrets/etcd-client.key
5050
etcd-servers: {{range .EtcdServerURLs}}
5151
- {{.}}{{end}}
52-
feature-gates:
53-
- "APIPriorityAndFairness=true"
54-
- "RotateKubeletServerCertificate=true"
55-
- "DownwardAPIHugePages=true"
56-
- "CSIMigrationAzureFile=false"
57-
- "CSIMigrationvSphere=false"
58-
{{- if .ServiceCIDR | len | eq 2}}
59-
- "IPv6DualStack=true"
60-
{{- end}}
52+
feature-gates: {{range .FeatureGates}}
53+
- {{.}}{{end}}
6154
kubelet-certificate-authority:
6255
- /etc/kubernetes/secrets/kubelet-client-ca-bundle.crt # this is wired to the KCM CSR, which signs serving and client certs for kubelet
6356
kubelet-client-certificate:

pkg/cmd/render/render.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ type TemplateData struct {
145145
// ClusterCIDR is the IP range for pod IPs.
146146
ClusterCIDR []string
147147

148+
// FeatureGates is list of featuregates to apply
149+
FeatureGates []string
150+
148151
// ServiceClusterIPRange is the IP range for service IPs.
149152
ServiceCIDR []string
150153

@@ -174,6 +177,9 @@ func (r *renderOpts) Run() error {
174177
TerminationGracePeriodSeconds: 135, // bit more than 70s (minimal termination period) + 60s (apiserver graceful termination)
175178
ShutdownDelayDuration: "", // do not override
176179
}
180+
if err := setFeatureGates(&renderConfig, r); err != nil {
181+
return err
182+
}
177183
if len(r.clusterConfigFile) > 0 {
178184
clusterConfigFileData, err := ioutil.ReadFile(r.clusterConfigFile)
179185
if err != nil {
@@ -461,6 +467,22 @@ func discoverCIDRsFromClusterAPI(clusterConfigFileData []byte, renderConfig *Tem
461467
return nil
462468
}
463469

470+
func setFeatureGates(renderConfig *TemplateData, opts *renderOpts) error {
471+
featureSet, ok := configv1.FeatureSets[configv1.FeatureSet(opts.generic.FeatureSet)]
472+
if !ok {
473+
return fmt.Errorf("featureSet %q not found", featureSet)
474+
}
475+
allGates := []string{}
476+
for _, enabled := range featureSet.Enabled {
477+
allGates = append(allGates, fmt.Sprintf("%v=true", enabled))
478+
}
479+
for _, disabled := range featureSet.Disabled {
480+
allGates = append(allGates, fmt.Sprintf("%v=false", disabled))
481+
}
482+
renderConfig.FeatureGates = allGates
483+
return nil
484+
}
485+
464486
func validateBoundSATokensSigningKeys(assetsDir string) error {
465487
boundSAPublicPath := filepath.Join(assetsDir, "bound-service-account-signing-key.pub")
466488
boundSAPrivatePath := filepath.Join(assetsDir, "bound-service-account-signing-key.key")

0 commit comments

Comments
 (0)