in cmd/memberagent/main.go [106:182]
func main() {
flag.Parse()
utilrand.Seed(time.Now().UnixNano())
defer klog.Flush()
flag.VisitAll(func(f *flag.Flag) {
klog.InfoS("flag:", "name", f.Name, "value", f.Value)
})
// Validate flags
if !*enableV1Alpha1APIs && !*enableV1Beta1APIs {
klog.ErrorS(errors.New("either enable-v1alpha1-apis or enable-v1beta1-apis is required"), "Invalid APIs flags")
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
}
hubURL := os.Getenv("HUB_SERVER_URL")
if hubURL == "" {
klog.ErrorS(errors.New("hub server api cannot be empty"), "Failed to read URL for the hub cluster")
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
}
hubConfig, err := buildHubConfig(hubURL, *useCertificateAuth, *tlsClientInsecure)
if err != nil {
klog.ErrorS(err, "Failed to build Kubernetes client configuration for the hub cluster")
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
}
mcName := os.Getenv("MEMBER_CLUSTER_NAME")
if mcName == "" {
klog.ErrorS(errors.New("member cluster name cannot be empty"), "Failed to read name for the member cluster")
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
}
mcNamespace := fmt.Sprintf(utils.NamespaceNameFormat, mcName)
memberConfig := ctrl.GetConfigOrDie()
// we place the leader election lease on the member cluster to avoid adding load to the hub
hubOpts := ctrl.Options{
Scheme: scheme,
Metrics: metricsserver.Options{
BindAddress: *hubMetricsAddr,
},
WebhookServer: webhook.NewServer(webhook.Options{
Port: 8443,
}),
HealthProbeBindAddress: *hubProbeAddr,
LeaderElection: *enableLeaderElection,
LeaderElectionNamespace: *leaderElectionNamespace,
LeaderElectionConfig: memberConfig,
LeaderElectionID: "136224848560.hub.fleet.azure.com",
Cache: cache.Options{
DefaultNamespaces: map[string]cache.Config{
mcNamespace: {},
},
},
}
memberOpts := ctrl.Options{
Scheme: scheme,
Metrics: metricsserver.Options{
BindAddress: *metricsAddr,
},
WebhookServer: webhook.NewServer(webhook.Options{
Port: 9443,
}),
HealthProbeBindAddress: *probeAddr,
LeaderElection: hubOpts.LeaderElection,
LeaderElectionNamespace: *leaderElectionNamespace,
LeaderElectionID: "136224848560.member.fleet.azure.com",
}
//+kubebuilder:scaffold:builder
if err := Start(ctrl.SetupSignalHandler(), hubConfig, memberConfig, hubOpts, memberOpts); err != nil {
klog.ErrorS(err, "Failed to start the controllers for the member agent")
klog.FlushAndExit(klog.ExitFlushTimeout, 1)
}
}