karmada/operator/pkg/tasks/init/apiserver.go

85 lines
2.4 KiB
Go

package tasks
import (
"errors"
"fmt"
"k8s.io/klog/v2"
"github.com/karmada-io/karmada/operator/pkg/constants"
"github.com/karmada-io/karmada/operator/pkg/controlplane/apiserver"
"github.com/karmada-io/karmada/operator/pkg/workflow"
)
// NewKarmadaApiserverTask init apiserver task to install karmada apiserver and
// karmada aggregated apiserver component
func NewKarmadaApiserverTask() workflow.Task {
return workflow.Task{
Name: "apiserver",
Run: runApiserver,
RunSubTasks: true,
Tasks: []workflow.Task{
{
Name: constants.KarmadaAPIserverComponent,
Run: runKarmadaAPIServer,
},
{
Name: constants.KarmadaAggregratedAPIServerComponent,
Run: runKarmadaAggregratedAPIServer,
},
},
}
}
func runApiserver(r workflow.RunData) error {
data, ok := r.(InitData)
if !ok {
return errors.New("apiserver task invoked with an invalid data struct")
}
klog.V(4).InfoS("[apiserver] Running apiserver task", "karmada", klog.KObj(data))
return nil
}
func runKarmadaAPIServer(r workflow.RunData) error {
data, ok := r.(InitData)
if !ok {
return errors.New("karmadaApiserver task invoked with an invalid data struct")
}
cfg := data.Components()
if cfg.KarmadaAPIServer == nil {
klog.V(2).InfoS("[karmadaApiserver] Skip install karmada-apiserver component")
return nil
}
err := apiserver.EnsureKarmadaAPIServer(data.RemoteClient(), cfg, data.GetName(), data.GetNamespace())
if err != nil {
return fmt.Errorf("failed to install karmada apiserver component, err: %w", err)
}
klog.V(2).InfoS("[karmadaApiserver] Successfully installed apiserver component", "karmada", klog.KObj(data))
return nil
}
func runKarmadaAggregratedAPIServer(r workflow.RunData) error {
data, ok := r.(InitData)
if !ok {
return errors.New("karmadaAggregratedApiServer task invoked with an invalid data struct")
}
cfg := data.Components()
if cfg.KarmadaAggregratedAPIServer == nil {
klog.V(2).InfoS("[KarmadaAggregratedApiServer] Skip install karmada-aggregrated-apiserver component")
return nil
}
err := apiserver.EnsureKarmadaAggregratedAPIServer(data.RemoteClient(), cfg, data.GetName(), data.GetNamespace())
if err != nil {
return fmt.Errorf("failed to install karmada aggregrated apiserver, err: %w", err)
}
klog.V(2).InfoS("[KarmadaAggregratedApiServer] Successfully installed karmada apiserve component", "karmada", klog.KObj(data))
return nil
}