Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion assets/controller.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ spec:
- --output-file-path=/etc/merged-cloud-config/cloud.conf
# Force disable node's managed identity, azure-disk-credentials Secret should be used.
- --disable-identity-extension-auth
- --enable-azure-workload-identity=${ENABLE_AZURE_WORKLOAD_IDENTITY}
- --enable-azure-workload-identity=true
env:
- name: AZURE_CLIENT_ID
valueFrom:
Expand Down
2 changes: 1 addition & 1 deletion assets/node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ spec:
- --output-file-path=/etc/merged-cloud-config/cloud.conf
# Force disable node's managed identity, azure-disk-credentials Secret should be used.
- --disable-identity-extension-auth
- --enable-azure-workload-identity=${ENABLE_AZURE_WORKLOAD_IDENTITY}
- --enable-azure-workload-identity=true
env:
- name: AZURE_CLIENT_ID
valueFrom:
Expand Down
66 changes: 10 additions & 56 deletions pkg/operator/starter.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,10 @@ package operator

import (
"context"
"fmt"
"os"
"strings"
"time"

configv1 "github.com/openshift/api/config/v1"

"k8s.io/client-go/dynamic"
kubeclient "k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
Expand All @@ -27,22 +24,19 @@ import (
"github.com/openshift/library-go/pkg/operator/csi/csidrivernodeservicecontroller"
goc "github.com/openshift/library-go/pkg/operator/genericoperatorclient"
"github.com/openshift/library-go/pkg/operator/v1helpers"

"github.com/openshift/library-go/pkg/operator/configobserver/featuregates"
)

const (
defaultNamespace = "openshift-cluster-csi-drivers"
operatorName = "azure-file-csi-driver-operator"
operandName = "azure-file-csi-driver"
openShiftConfigNamespace = "openshift-config"
cloudCredSecretName = "azure-file-credentials"
metricsCertSecretName = "azure-file-csi-driver-controller-metrics-serving-cert"
tokenFileKey = "azure_federated_token_file"
ccmOperatorImageEnvName = "CLUSTER_CLOUD_CONTROLLER_MANAGER_OPERATOR_IMAGE"
trustedCAConfigMap = "azure-file-csi-driver-trusted-ca-bundle"
resync = 20 * time.Minute
operatorImageVersionEnvVarName = "OPERATOR_IMAGE_VERSION"
defaultNamespace = "openshift-cluster-csi-drivers"
operatorName = "azure-file-csi-driver-operator"
operandName = "azure-file-csi-driver"
openShiftConfigNamespace = "openshift-config"
cloudCredSecretName = "azure-file-credentials"
metricsCertSecretName = "azure-file-csi-driver-controller-metrics-serving-cert"
tokenFileKey = "azure_federated_token_file"
ccmOperatorImageEnvName = "CLUSTER_CLOUD_CONTROLLER_MANAGER_OPERATOR_IMAGE"
trustedCAConfigMap = "azure-file-csi-driver-trusted-ca-bundle"
resync = 20 * time.Minute
)

func RunOperator(ctx context.Context, controllerConfig *controllercmd.ControllerContext) error {
Expand Down Expand Up @@ -73,31 +67,8 @@ func RunOperator(ctx context.Context, controllerConfig *controllercmd.Controller
return err
}

desiredVersion := os.Getenv(operatorImageVersionEnvVarName)
missingVersion := "0.0.1-snapshot"

featureGateAccessor := featuregates.NewFeatureGateAccess(
desiredVersion,
missingVersion,
configInformers.Config().V1().ClusterVersions(),
configInformers.Config().V1().FeatureGates(),
controllerConfig.EventRecorder,
)
go featureGateAccessor.Run(ctx)
go configInformers.Start(ctx.Done())

select {
case <-featureGateAccessor.InitialFeatureGatesObserved():
featureGates, _ := featureGateAccessor.CurrentFeatureGates()
klog.Info("FeatureGates initialized", "knownFeatures", featureGates.KnownFeatures())
case <-time.After(1 * time.Minute):
klog.Error(nil, "timed out waiting for FeatureGate detection")
return fmt.Errorf("timed out waiting for FeatureGate detection")
}

replacedAssets := &assetWithReplacement{}
replacedAssets.Replace("${CLUSTER_CLOUD_CONTROLLER_MANAGER_OPERATOR_IMAGE}", os.Getenv(ccmOperatorImageEnvName))
replaceWorkloadIdentityConfig(replacedAssets, featureGateAccessor)

csiControllerSet := csicontrollerset.NewCSIControllerSet(
operatorClient,
Expand Down Expand Up @@ -224,20 +195,3 @@ func (r *assetWithReplacement) GetAssetFunc() func(name string) ([]byte, error)
return []byte(asset), nil
}
}

func replaceWorkloadIdentityConfig(assets *assetWithReplacement, fg featuregates.FeatureGateAccess) error {
workloadIdentity := "false"

featureGates, err := fg.CurrentFeatureGates()
if err != nil {
return err
}

if featureGates.Enabled(configv1.FeatureGateAzureWorkloadIdentity) {
workloadIdentity = "true"
}

assets.Replace("${ENABLE_AZURE_WORKLOAD_IDENTITY}", workloadIdentity)

return nil
}