85 lines
2.4 KiB
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
|
|
}
|