Merge pull request #6111 from zhzhuang-zju/priorityclass-addon

Add Support for Component Priority Class Configuration in karmadactl addon
This commit is contained in:
karmada-bot 2025-02-19 11:41:15 +08:00 committed by GitHub
commit b763c681d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 94 additions and 60 deletions

View File

@ -63,6 +63,7 @@ var enableDescheduler = func(opts *addoninit.CommandAddonsEnableOption) error {
Namespace: opts.Namespace, Namespace: opts.Namespace,
Replicas: &opts.KarmadaDeschedulerReplicas, Replicas: &opts.KarmadaDeschedulerReplicas,
Image: addoninit.KarmadaDeschedulerImage(opts), Image: addoninit.KarmadaDeschedulerImage(opts),
PriorityClassName: opts.KarmadaDeschedulerPriorityClass,
}) })
if err != nil { if err != nil {
return fmt.Errorf("error when parsing karmada descheduler deployment template :%v", err) return fmt.Errorf("error when parsing karmada descheduler deployment template :%v", err)

View File

@ -39,6 +39,7 @@ import (
func TestStatus(t *testing.T) { func TestStatus(t *testing.T) {
name, namespace := names.KarmadaDeschedulerComponentName, "test" name, namespace := names.KarmadaDeschedulerComponentName, "test"
var replicas int32 = 2 var replicas int32 = 2
var priorityClass = "system-node-critical"
tests := []struct { tests := []struct {
name string name string
listOpts *addoninit.CommandAddonsListOption listOpts *addoninit.CommandAddonsListOption
@ -80,7 +81,7 @@ func TestStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaDeschedulerDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaDeschedulerDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClass); err != nil {
return fmt.Errorf("failed to create karmada descheduler deployment, got error: %v", err) return fmt.Errorf("failed to create karmada descheduler deployment, got error: %v", err)
} }
return addonutils.SimulateDeploymentUnready(listOpts.KubeClientSet, name, listOpts.Namespace) return addonutils.SimulateDeploymentUnready(listOpts.KubeClientSet, name, listOpts.Namespace)
@ -96,7 +97,7 @@ func TestStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaDeschedulerDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaDeschedulerDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClass); err != nil {
return fmt.Errorf("failed to create karmada descheduler deployment, got error: %v", err) return fmt.Errorf("failed to create karmada descheduler deployment, got error: %v", err)
} }
return nil return nil
@ -246,10 +247,11 @@ func TestDisableDescheduler(t *testing.T) {
// createKarmadaDeschedulerDeployment creates or updates a Deployment for the Karmada descheduler // createKarmadaDeschedulerDeployment creates or updates a Deployment for the Karmada descheduler
// in the specified namespace with the provided number of replicas. // in the specified namespace with the provided number of replicas.
// It parses and decodes the template for the Deployment before applying it to the cluster. // It parses and decodes the template for the Deployment before applying it to the cluster.
func createKarmadaDeschedulerDeployment(c clientset.Interface, replicas int32, namespace string) error { func createKarmadaDeschedulerDeployment(c clientset.Interface, replicas int32, namespace, priorityClass string) error {
karmadaDeschedulerDeploymentBytes, err := addonutils.ParseTemplate(karmadaDeschedulerDeployment, DeploymentReplace{ karmadaDeschedulerDeploymentBytes, err := addonutils.ParseTemplate(karmadaDeschedulerDeployment, DeploymentReplace{
Namespace: namespace, Namespace: namespace,
Replicas: ptr.To[int32](replicas), Replicas: ptr.To[int32](replicas),
PriorityClassName: priorityClass,
}) })
if err != nil { if err != nil {
return fmt.Errorf("error when parsing karmada descheduler deployment template: %v", err) return fmt.Errorf("error when parsing karmada descheduler deployment template: %v", err)

View File

@ -38,6 +38,7 @@ spec:
- key: node-role.kubernetes.io/master - key: node-role.kubernetes.io/master
operator: Exists operator: Exists
automountServiceAccountToken: false automountServiceAccountToken: false
priorityClassName: {{ .PriorityClassName }}
containers: containers:
- name: karmada-descheduler - name: karmada-descheduler
image: {{ .Image }} image: {{ .Image }}
@ -86,4 +87,5 @@ type DeploymentReplace struct {
Namespace string Namespace string
Replicas *int32 Replicas *int32
Image string Image string
PriorityClassName string
} }

View File

@ -84,16 +84,28 @@ func NewCmdAddonsEnable(parentCommand string) *cobra.Command {
flags.StringVarP(&opts.ImageRegistry, "private-image-registry", "", "", "Private image registry where pull images from. If set, all required images will be downloaded from it, it would be useful in offline installation scenarios.") flags.StringVarP(&opts.ImageRegistry, "private-image-registry", "", "", "Private image registry where pull images from. If set, all required images will be downloaded from it, it would be useful in offline installation scenarios.")
flags.IntVar(&opts.WaitComponentReadyTimeout, "pod-timeout", options.WaitComponentReadyTimeout, "Wait pod ready timeout.") flags.IntVar(&opts.WaitComponentReadyTimeout, "pod-timeout", options.WaitComponentReadyTimeout, "Wait pod ready timeout.")
flags.IntVar(&opts.WaitAPIServiceReadyTimeout, "apiservice-timeout", 30, "Wait apiservice ready timeout.") flags.IntVar(&opts.WaitAPIServiceReadyTimeout, "apiservice-timeout", 30, "Wait apiservice ready timeout.")
flags.Int32Var(&opts.KarmadaSearchReplicas, "karmada-search-replicas", 1, "Karmada-search replica set")
flags.StringVar(&opts.KarmadaSearchImage, "karmada-search-image", addoninit.DefaultKarmadaSearchImage, "karmada-search image")
flags.Int32Var(&opts.KarmadaMetricsAdapterReplicas, "karmada-metrics-adapter-replicas", 1, "karmada-metrics-adapter replica set")
flags.StringVar(&opts.KarmadaMetricsAdapterImage, "karmada-metrics-adapter-image", addoninit.DefaultKarmadaMetricsAdapterImage, "karmada-metrics-adapter image")
flags.StringVar(&opts.KarmadaDeschedulerImage, "karmada-descheduler-image", addoninit.DefaultKarmadaDeschedulerImage, "karmada-descheduler image")
flags.Int32Var(&opts.KarmadaDeschedulerReplicas, "karmada-descheduler-replicas", 1, "karmada descheduler replica set")
flags.StringVar(&opts.KarmadaSchedulerEstimatorImage, "karmada-scheduler-estimator-image", addoninit.DefaultKarmadaSchedulerEstimatorImage, "karmada-scheduler-estimator image")
flags.Int32Var(&opts.KarmadaEstimatorReplicas, "karmada-estimator-replicas", 1, "karmada-scheduler-estimator replica set")
flags.StringVar(&opts.MemberKubeConfig, "member-kubeconfig", "", "Member cluster's kubeconfig which to deploy scheduler estimator") flags.StringVar(&opts.MemberKubeConfig, "member-kubeconfig", "", "Member cluster's kubeconfig which to deploy scheduler estimator")
flags.StringVar(&opts.MemberContext, "member-context", "", "Member cluster's context which to deploy scheduler estimator") flags.StringVar(&opts.MemberContext, "member-context", "", "Member cluster's context which to deploy scheduler estimator")
flags.StringVar(&opts.HostClusterDomain, "host-cluster-domain", globaloptions.DefaultHostClusterDomain, "The cluster domain of karmada host cluster. (e.g. --host-cluster-domain=host.karmada)") flags.StringVar(&opts.HostClusterDomain, "host-cluster-domain", globaloptions.DefaultHostClusterDomain, "The cluster domain of karmada host cluster. (e.g. --host-cluster-domain=host.karmada)")
// Karmada-descheduler config
flags.StringVar(&opts.KarmadaDeschedulerImage, "karmada-descheduler-image", addoninit.DefaultKarmadaDeschedulerImage, "karmada-descheduler image")
flags.Int32Var(&opts.KarmadaDeschedulerReplicas, "karmada-descheduler-replicas", 1, "karmada descheduler replica set")
flags.StringVar(&opts.KarmadaDeschedulerPriorityClass, "descheduler-priority-class", "system-node-critical", "The priority class name for the component karmada-descheduler.")
// Karmada-estimator config
flags.StringVar(&opts.KarmadaSchedulerEstimatorImage, "karmada-scheduler-estimator-image", addoninit.DefaultKarmadaSchedulerEstimatorImage, "karmada-scheduler-estimator image")
flags.Int32Var(&opts.KarmadaEstimatorReplicas, "karmada-estimator-replicas", 1, "karmada-scheduler-estimator replica set")
flags.StringVar(&opts.EstimatorPriorityClass, "estimator-priority-class", "system-node-critical", "The priority class name for the component karmada-scheduler-estimator.")
// Karmada-metrics-adapter config
flags.Int32Var(&opts.KarmadaMetricsAdapterReplicas, "karmada-metrics-adapter-replicas", 1, "karmada-metrics-adapter replica set")
flags.StringVar(&opts.KarmadaMetricsAdapterImage, "karmada-metrics-adapter-image", addoninit.DefaultKarmadaMetricsAdapterImage, "karmada-metrics-adapter image")
flags.StringVar(&opts.KarmadaMetricsAdapterPriorityClass, "metrics-adapter-priority-class", "system-node-critical", "The priority class name for the component karmada-metrics-adaptor.")
// Karmada-search config
flags.Int32Var(&opts.KarmadaSearchReplicas, "karmada-search-replicas", 1, "Karmada-search replica set")
flags.StringVar(&opts.KarmadaSearchImage, "karmada-search-image", addoninit.DefaultKarmadaSearchImage, "karmada-search image")
flags.StringVar(&opts.SearchPriorityClass, "search-priority-class", "system-node-critical", "The priority class name for the component karmada-search.")
return cmd return cmd
} }

View File

@ -114,6 +114,7 @@ var enableEstimator = func(opts *addoninit.CommandAddonsEnableOption) error {
Replicas: &opts.KarmadaEstimatorReplicas, Replicas: &opts.KarmadaEstimatorReplicas,
Image: addoninit.KarmadaSchedulerEstimatorImage(opts), Image: addoninit.KarmadaSchedulerEstimatorImage(opts),
MemberClusterName: opts.Cluster, MemberClusterName: opts.Cluster,
PriorityClassName: opts.EstimatorPriorityClass,
}) })
if err != nil { if err != nil {
return fmt.Errorf("error when parsing karmada scheduler estimator deployment template :%v", err) return fmt.Errorf("error when parsing karmada scheduler estimator deployment template :%v", err)

View File

@ -40,6 +40,7 @@ spec:
- key: node-role.kubernetes.io/master - key: node-role.kubernetes.io/master
operator: Exists operator: Exists
automountServiceAccountToken: false automountServiceAccountToken: false
priorityClassName: {{ .PriorityClassName }}
containers: containers:
- name: karmada-scheduler-estimator - name: karmada-scheduler-estimator
image: {{ .Image }} image: {{ .Image }}
@ -108,6 +109,7 @@ type DeploymentReplace struct {
Replicas *int32 Replicas *int32
Image string Image string
MemberClusterName string MemberClusterName string
PriorityClassName string
} }
// ServiceReplace is a struct to help to concrete // ServiceReplace is a struct to help to concrete

View File

@ -36,21 +36,25 @@ import (
type CommandAddonsEnableOption struct { type CommandAddonsEnableOption struct {
GlobalCommandOptions GlobalCommandOptions
// Karmada-search config
KarmadaSearchImage string KarmadaSearchImage string
KarmadaSearchReplicas int32 KarmadaSearchReplicas int32
SearchPriorityClass string
// Karmada-descheduler config
KarmadaDeschedulerImage string KarmadaDeschedulerImage string
KarmadaDeschedulerReplicas int32 KarmadaDeschedulerReplicas int32
KarmadaDeschedulerPriorityClass string
// Karmada-metrics-adapter config
KarmadaMetricsAdapterImage string KarmadaMetricsAdapterImage string
KarmadaMetricsAdapterReplicas int32 KarmadaMetricsAdapterReplicas int32
KarmadaMetricsAdapterPriorityClass string
// Karmada-estimator config
KarmadaSchedulerEstimatorImage string KarmadaSchedulerEstimatorImage string
KarmadaEstimatorReplicas int32 KarmadaEstimatorReplicas int32
EstimatorPriorityClass string
KarmadaKubeClientSet *kubernetes.Clientset KarmadaKubeClientSet *kubernetes.Clientset

View File

@ -33,7 +33,7 @@ type GlobalCommandOptions struct {
KubeConfig string KubeConfig string
Context string Context string
// KubeConfig holds karmada control plane KUBECONFIG file path. // KarmadaConfig holds karmada control plane KUBECONFIG file path.
KarmadaConfig string KarmadaConfig string
KarmadaContext string KarmadaContext string

View File

@ -39,6 +39,7 @@ spec:
apiserver: "true" apiserver: "true"
spec: spec:
automountServiceAccountToken: false automountServiceAccountToken: false
priorityClassName: {{ .PriorityClassName }}
containers: containers:
- name: karmada-metrics-adapter - name: karmada-metrics-adapter
image: {{ .Image }} image: {{ .Image }}
@ -144,6 +145,7 @@ type DeploymentReplace struct {
Namespace string Namespace string
Replicas *int32 Replicas *int32
Image string Image string
PriorityClassName string
} }
// ServiceReplace is a struct to help to concrete // ServiceReplace is a struct to help to concrete

View File

@ -157,6 +157,7 @@ func installComponentsOnHostCluster(opts *addoninit.CommandAddonsEnableOption) e
Namespace: opts.Namespace, Namespace: opts.Namespace,
Replicas: &opts.KarmadaMetricsAdapterReplicas, Replicas: &opts.KarmadaMetricsAdapterReplicas,
Image: addoninit.KarmadaMetricsAdapterImage(opts), Image: addoninit.KarmadaMetricsAdapterImage(opts),
PriorityClassName: opts.KarmadaMetricsAdapterPriorityClass,
}) })
if err != nil { if err != nil {
return fmt.Errorf("error when parsing karmada metrics adapter deployment template :%v", err) return fmt.Errorf("error when parsing karmada metrics adapter deployment template :%v", err)

View File

@ -42,6 +42,7 @@ import (
func TestStatus(t *testing.T) { func TestStatus(t *testing.T) {
name, namespace := names.KarmadaMetricsAdapterComponentName, "test" name, namespace := names.KarmadaMetricsAdapterComponentName, "test"
var replicas int32 = 2 var replicas int32 = 2
var priorityClassName = "system-node-critical"
tests := []struct { tests := []struct {
name string name string
listOpts *addoninit.CommandAddonsListOption listOpts *addoninit.CommandAddonsListOption
@ -83,7 +84,7 @@ func TestStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClassName); err != nil {
return fmt.Errorf("failed to create karmada metrics deployment, got error: %v", err) return fmt.Errorf("failed to create karmada metrics deployment, got error: %v", err)
} }
return addonutils.SimulateDeploymentUnready(listOpts.KubeClientSet, name, listOpts.Namespace) return addonutils.SimulateDeploymentUnready(listOpts.KubeClientSet, name, listOpts.Namespace)
@ -100,7 +101,7 @@ func TestStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
return createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace) return createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClassName)
}, },
wantStatus: addoninit.AddonDisabledStatus, wantStatus: addoninit.AddonDisabledStatus,
}, },
@ -114,7 +115,7 @@ func TestStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClassName); err != nil {
return fmt.Errorf("failed to create karmada metrics deployment, got error: %v", err) return fmt.Errorf("failed to create karmada metrics deployment, got error: %v", err)
} }
@ -136,7 +137,7 @@ func TestStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaMetricsDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClassName); err != nil {
return fmt.Errorf("failed to create karmada metrics deployment, got error: %v", err) return fmt.Errorf("failed to create karmada metrics deployment, got error: %v", err)
} }
return createAndMarkAAAPIServicesAvailable(listOpts.KarmadaAggregatorClientSet) return createAndMarkAAAPIServicesAvailable(listOpts.KarmadaAggregatorClientSet)
@ -169,10 +170,11 @@ func TestStatus(t *testing.T) {
// createKarmadaMetricsDeployment creates or updates a Deployment for the Karmada metrics adapter // createKarmadaMetricsDeployment creates or updates a Deployment for the Karmada metrics adapter
// in the specified namespace with the provided number of replicas. // in the specified namespace with the provided number of replicas.
// It parses and decodes the template for the Deployment before applying it to the cluster. // It parses and decodes the template for the Deployment before applying it to the cluster.
func createKarmadaMetricsDeployment(c clientset.Interface, replicas int32, namespace string) error { func createKarmadaMetricsDeployment(c clientset.Interface, replicas int32, namespace, priorityClass string) error {
karmadaMetricsAdapterDeploymentBytes, err := addonutils.ParseTemplate(karmadaMetricsAdapterDeployment, DeploymentReplace{ karmadaMetricsAdapterDeploymentBytes, err := addonutils.ParseTemplate(karmadaMetricsAdapterDeployment, DeploymentReplace{
Namespace: namespace, Namespace: namespace,
Replicas: ptr.To[int32](replicas), Replicas: ptr.To[int32](replicas),
PriorityClassName: priorityClass,
}) })
if err != nil { if err != nil {
return fmt.Errorf("error when parsing karmada metrics adapter deployment template :%v", err) return fmt.Errorf("error when parsing karmada metrics adapter deployment template :%v", err)

View File

@ -38,6 +38,7 @@ spec:
app: karmada-search app: karmada-search
apiserver: "true" apiserver: "true"
spec: spec:
priorityClassName: {{ .PriorityClassName }}
automountServiceAccountToken: false automountServiceAccountToken: false
containers: containers:
- name: karmada-search - name: karmada-search
@ -143,6 +144,7 @@ type DeploymentReplace struct {
Image string Image string
ETCDSevers string ETCDSevers string
KeyPrefix string KeyPrefix string
PriorityClassName string
} }
// ServiceReplace is a struct to help to concrete // ServiceReplace is a struct to help to concrete

View File

@ -170,6 +170,7 @@ func installComponentsOnHostCluster(opts *addoninit.CommandAddonsEnableOption) e
ETCDSevers: etcdServers, ETCDSevers: etcdServers,
KeyPrefix: keyPrefix, KeyPrefix: keyPrefix,
Image: addoninit.KarmadaSearchImage(opts), Image: addoninit.KarmadaSearchImage(opts),
PriorityClassName: opts.SearchPriorityClass,
}) })
if err != nil { if err != nil {
return fmt.Errorf("error when parsing karmada search deployment template :%v", err) return fmt.Errorf("error when parsing karmada search deployment template :%v", err)

View File

@ -41,6 +41,7 @@ import (
func TestKarmadaSearchAddonStatus(t *testing.T) { func TestKarmadaSearchAddonStatus(t *testing.T) {
name, namespace := names.KarmadaSearchComponentName, "test" name, namespace := names.KarmadaSearchComponentName, "test"
var replicas int32 = 2 var replicas int32 = 2
var priorityClass = "system-node-critical"
tests := []struct { tests := []struct {
name string name string
listOpts *addoninit.CommandAddonsListOption listOpts *addoninit.CommandAddonsListOption
@ -82,7 +83,7 @@ func TestKarmadaSearchAddonStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClass); err != nil {
return fmt.Errorf("failed to create karmada search deployment, got error: %v", err) return fmt.Errorf("failed to create karmada search deployment, got error: %v", err)
} }
return addonutils.SimulateDeploymentUnready(listOpts.KubeClientSet, name, listOpts.Namespace) return addonutils.SimulateDeploymentUnready(listOpts.KubeClientSet, name, listOpts.Namespace)
@ -100,7 +101,7 @@ func TestKarmadaSearchAddonStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
return createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace) return createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClass)
}, },
wantStatus: addoninit.AddonDisabledStatus, wantStatus: addoninit.AddonDisabledStatus,
}, },
@ -114,7 +115,7 @@ func TestKarmadaSearchAddonStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClass); err != nil {
return fmt.Errorf("failed to create karmada search deployment, got error: %v", err) return fmt.Errorf("failed to create karmada search deployment, got error: %v", err)
} }
@ -136,7 +137,7 @@ func TestKarmadaSearchAddonStatus(t *testing.T) {
}, },
}, },
prep: func(listOpts *addoninit.CommandAddonsListOption) error { prep: func(listOpts *addoninit.CommandAddonsListOption) error {
if err := createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace); err != nil { if err := createKarmadaSearchDeployment(listOpts.KubeClientSet, replicas, listOpts.Namespace, priorityClass); err != nil {
return fmt.Errorf("failed to create karmada search deployment, got error: %v", err) return fmt.Errorf("failed to create karmada search deployment, got error: %v", err)
} }
return createAndMarkAAAPIServiceAvailable(listOpts.KarmadaAggregatorClientSet) return createAndMarkAAAPIServiceAvailable(listOpts.KarmadaAggregatorClientSet)
@ -169,10 +170,11 @@ func TestKarmadaSearchAddonStatus(t *testing.T) {
// createKarmadaSearchDeployment creates or updates a Deployment for the Karmada search deployment // createKarmadaSearchDeployment creates or updates a Deployment for the Karmada search deployment
// in the specified namespace with the provided number of replicas. // in the specified namespace with the provided number of replicas.
// It parses and decodes the template for the Deployment before applying it to the cluster. // It parses and decodes the template for the Deployment before applying it to the cluster.
func createKarmadaSearchDeployment(c clientset.Interface, replicas int32, namespace string) error { func createKarmadaSearchDeployment(c clientset.Interface, replicas int32, namespace, priorityClass string) error {
karmadaSearchDeploymentBytes, err := addonutils.ParseTemplate(karmadaSearchDeployment, DeploymentReplace{ karmadaSearchDeploymentBytes, err := addonutils.ParseTemplate(karmadaSearchDeployment, DeploymentReplace{
Namespace: namespace, Namespace: namespace,
Replicas: ptr.To(replicas), Replicas: ptr.To(replicas),
PriorityClassName: priorityClass,
}) })
if err != nil { if err != nil {
return fmt.Errorf("error when parsing karmada search deployment template :%v", err) return fmt.Errorf("error when parsing karmada search deployment template :%v", err)