diff --git a/manifests/charts/fleet-manager/values.yaml b/manifests/charts/fleet-manager/values.yaml index e91a688a..2d904ea5 100644 --- a/manifests/charts/fleet-manager/values.yaml +++ b/manifests/charts/fleet-manager/values.yaml @@ -6,7 +6,7 @@ image: tag: latest logging: - level: 0 + level: 5 webhook: port: 9443 diff --git a/pkg/apis/fleet/v1alpha1/types.go b/pkg/apis/fleet/v1alpha1/types.go index 54e57f60..1a426ffe 100644 --- a/pkg/apis/fleet/v1alpha1/types.go +++ b/pkg/apis/fleet/v1alpha1/types.go @@ -583,17 +583,17 @@ type SubMarinerConfig struct { // targetNamespace: submariner // ``` // + // +optional + Chart *ChartConfig `json:"chart,omitempty"` + // ExtraArgs is the set of extra arguments for submariner, and example will be provided in the future. + // // ```yaml // extraArgs: // operator: // image: // pullPolicy: "IfNotPresent" // ``` - - // +optional - Chart *ChartConfig `json:"chart,omitempty"` - // ExtraArgs is the set of extra arguments for submariner, and example will be provided in the future. // // +optional ExtraArgs apiextensionsv1.JSON `json:"extraArgs,omitempty"` diff --git a/pkg/fleet-manager/fleet_plugin_submariner.go b/pkg/fleet-manager/fleet_plugin_submariner.go index 5a21158e..f8ec45ba 100644 --- a/pkg/fleet-manager/fleet_plugin_submariner.go +++ b/pkg/fleet-manager/fleet_plugin_submariner.go @@ -15,6 +15,7 @@ package fleet import ( "context" + "errors" "time" "helm.sh/helm/v3/pkg/kube" @@ -45,46 +46,58 @@ func (f *FleetManager) reconcileSubmarinerPlugin(ctx context.Context, fleet *fle fleetOwnerRef := ownerReference(fleet) var resources kube.ResourceList - var b []byte - var err error - exist_broker := false + // Install broker in the first member cluster + if len(fleetClusters) < 2 { + return nil, ctrl.Result{}, errors.New("fleetClusters number < 2") + } for key, cluster := range fleetClusters { - if !exist_broker { - b, err = plugin.RenderSubmarinerBroker(f.Manifests, fleetNN, fleetOwnerRef, plugin.KubeConfigSecretRef{ - Name: key.Name, - SecretName: cluster.Secret, - SecretKey: cluster.SecretKey, - }, submarinerCfg) - exist_broker = true - if err != nil { - return nil, ctrl.Result{}, err - } - - submarinerResources, err := util.PatchResources(b) - if err != nil { - return nil, ctrl.Result{}, err - } - resources = append(resources, submarinerResources...) - } - b, err = plugin.RenderSubmarinerOperator(f.Manifests, fleetNN, fleetOwnerRef, plugin.KubeConfigSecretRef{ + b, err := plugin.RenderSubmarinerBroker(f.Manifests, fleetNN, fleetOwnerRef, plugin.KubeConfigSecretRef{ Name: key.Name, SecretName: cluster.Secret, SecretKey: cluster.SecretKey, }, submarinerCfg) + if err != nil { + return nil, ctrl.Result{}, err + } + + brokerResources, err := util.PatchResources(b) + if err != nil { + return nil, ctrl.Result{}, err + } + resources = append(resources, brokerResources...) + log.V(4).Info("broker will be installed in " + key.Name) + break + } + log.V(4).Info("wait for submariner broker helm release to be reconciled") + if !f.helmReleaseReady(ctx, fleet, resources) { + // wait for HelmRelease to be ready + return nil, ctrl.Result{ + // HelmRelease check interval is 1m, so we set 30s here + RequeueAfter: 30 * time.Second, + }, nil + } + + // Install operator in all member clusters + for key, cluster := range fleetClusters { + b, err := plugin.RenderSubmarinerOperator(f.Manifests, fleetNN, fleetOwnerRef, plugin.KubeConfigSecretRef{ + Name: key.Name, + SecretName: cluster.Secret, + SecretKey: cluster.SecretKey, + }, submarinerCfg) if err != nil { return nil, ctrl.Result{}, err } - submarinerResources, err := util.PatchResources(b) + operatorResources, err := util.PatchResources(b) if err != nil { return nil, ctrl.Result{}, err } - resources = append(resources, submarinerResources...) + resources = append(resources, operatorResources...) } - log.V(4).Info("wait for submariner helm release to be reconciled") + log.V(4).Info("wait for submariner operator helm release to be reconciled") if !f.helmReleaseReady(ctx, fleet, resources) { // wait for HelmRelease to be ready return nil, ctrl.Result{ diff --git a/pkg/fleet-manager/manifests/plugins/submariner-k8s-broker.yaml b/pkg/fleet-manager/manifests/plugins/submariner-k8s-broker.yaml index 637eff67..be6b7b0a 100644 --- a/pkg/fleet-manager/manifests/plugins/submariner-k8s-broker.yaml +++ b/pkg/fleet-manager/manifests/plugins/submariner-k8s-broker.yaml @@ -4,10 +4,10 @@ name: submariner-k8s-broker version: 0.18.0 targetNamespace: submariner values: - crd: - create: true rbac: create: true + crd: + create: true serviceAccounts: client: create: true