diff --git a/data/data/bootstrap/files/usr/local/bin/bootkube.sh.template b/data/data/bootstrap/files/usr/local/bin/bootkube.sh.template index a166bc9d52e..d64ffd3ea5a 100755 --- a/data/data/bootstrap/files/usr/local/bin/bootkube.sh.template +++ b/data/data/bootstrap/files/usr/local/bin/bootkube.sh.template @@ -78,6 +78,43 @@ then record_service_stage_success fi +if [ ! -f config-bootstrap.done ] +then + record_service_stage_start "config-bootstrap" + echo "Rendering cluster config manifests..." + + rm --recursive --force config-bootstrap + + ADDITIONAL_FLAGS=() + if [ -f "$PWD/manifests/cloud-provider-config.yaml" ]; then + ADDITIONAL_FLAGS+=("--cloud-provider-config-input-file=/assets/manifests/cloud-provider-config.yaml") + fi + {{- if .FeatureSet }} + ADDITIONAL_FLAGS+=("--feature-set={{.FeatureSet}}") + {{- end}} + VERSION="$(oc adm release info -o 'jsonpath={.metadata.version}' "${RELEASE_IMAGE_DIGEST}")" + + bootkube_podman_run \ + --name config-render \ + --volume "$PWD:/assets:z" \ + "${CONFIG_OPERATOR_IMAGE}" \ + /usr/bin/cluster-config-operator render \ + --cluster-infrastructure-input-file=/assets/manifests/cluster-infrastructure-02-config.yml \ + --cloud-provider-config-output-file=/assets/config-bootstrap/cloud-provider-config-generated.yaml \ + --config-output-file=/assets/config-bootstrap/config \ + --asset-input-dir=/assets/tls \ + --asset-output-dir=/assets/config-bootstrap \ + --featuregate-manifest=/assets/manifests/99_feature-gate.yaml \ + --rendered-manifest-files=/assets/manifests \ + --payload-version=$VERSION \ + "${ADDITIONAL_FLAGS[@]}" + + cp config-bootstrap/manifests/* manifests/ + + touch config-bootstrap.done + record_service_stage_success +fi + if [ ! -f cvo-bootstrap.done ] then record_service_stage_start "cvo-bootstrap" @@ -135,39 +172,6 @@ then record_service_stage_success fi -if [ ! -f config-bootstrap.done ] -then - record_service_stage_start "config-bootstrap" - echo "Rendering cluster config manifests..." - - rm --recursive --force config-bootstrap - - ADDITIONAL_FLAGS=() - if [ -f "$PWD/manifests/cloud-provider-config.yaml" ]; then - ADDITIONAL_FLAGS+=("--cloud-provider-config-input-file=/assets/manifests/cloud-provider-config.yaml") - fi - {{- if .FeatureSet }} - ADDITIONAL_FLAGS+=("--feature-set={{.FeatureSet}}") - {{- end}} - - bootkube_podman_run \ - --name config-render \ - --volume "$PWD:/assets:z" \ - "${CONFIG_OPERATOR_IMAGE}" \ - /usr/bin/cluster-config-operator render \ - --cluster-infrastructure-input-file=/assets/manifests/cluster-infrastructure-02-config.yml \ - --cloud-provider-config-output-file=/assets/config-bootstrap/cloud-provider-config-generated.yaml \ - --config-output-file=/assets/config-bootstrap/config \ - --asset-input-dir=/assets/tls \ - --asset-output-dir=/assets/config-bootstrap \ - "${ADDITIONAL_FLAGS[@]}" - - cp config-bootstrap/manifests/* manifests/ - - touch config-bootstrap.done - record_service_stage_success -fi - if [ ! -f kube-apiserver-bootstrap.done ] then record_service_stage_start "kube-apiserver-bootstrap" diff --git a/pkg/asset/manifests/featuregate.go b/pkg/asset/manifests/featuregate.go index 40fd4d8dd56..93dc95b6067 100644 --- a/pkg/asset/manifests/featuregate.go +++ b/pkg/asset/manifests/featuregate.go @@ -40,38 +40,33 @@ func (f *FeatureGate) Generate(dependencies asset.Parents) error { installConfig := &installconfig.InstallConfig{} dependencies.Get(installConfig) - // A FeatureGate could be populated on every install, - // even for those using the default feature set, but for - // continuity let's only create a cluster feature gate - // when non-default feature gates are enabled. - if installConfig.Config.FeatureSet != configv1.Default { - f.Config = configv1.FeatureGate{ - TypeMeta: metav1.TypeMeta{ - APIVersion: configv1.SchemeGroupVersion.String(), - Kind: "FeatureGate", + f.Config = configv1.FeatureGate{ + TypeMeta: metav1.TypeMeta{ + APIVersion: configv1.SchemeGroupVersion.String(), + Kind: "FeatureGate", + }, + ObjectMeta: metav1.ObjectMeta{ + Name: "cluster", + }, + Spec: configv1.FeatureGateSpec{ + FeatureGateSelection: configv1.FeatureGateSelection{ + FeatureSet: installConfig.Config.FeatureSet, }, - ObjectMeta: metav1.ObjectMeta{ - Name: "cluster", - }, - Spec: configv1.FeatureGateSpec{ - FeatureGateSelection: configv1.FeatureGateSelection{ - FeatureSet: installConfig.Config.FeatureSet, - }, - }, - } + }, + } - configData, err := yaml.Marshal(f.Config) - if err != nil { - return errors.Wrapf(err, "failed to create %s manifests from InstallConfig", f.Name()) - } + configData, err := yaml.Marshal(f.Config) + if err != nil { + return errors.Wrapf(err, "failed to create %s manifests from InstallConfig", f.Name()) + } - f.FileList = []*asset.File{ - { - Filename: fgFileName, - Data: configData, - }, - } + f.FileList = []*asset.File{ + { + Filename: fgFileName, + Data: configData, + }, } + return nil }