@@ -17,15 +17,13 @@ limitations under the License.
1717package apiserver
1818
1919import (
20- "context"
2120 "fmt"
2221
2322 appsv1 "k8s.io/api/apps/v1"
2423 corev1 "k8s.io/api/core/v1"
2524 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2625 "k8s.io/apimachinery/pkg/labels"
2726 kuberuntime "k8s.io/apimachinery/pkg/runtime"
28- "k8s.io/apimachinery/pkg/runtime/schema"
2927 clientset "k8s.io/client-go/kubernetes"
3028 clientsetscheme "k8s.io/client-go/kubernetes/scheme"
3129
@@ -37,6 +35,9 @@ import (
3735 "github.com/karmada-io/karmada/operator/pkg/util/patcher"
3836)
3937
38+ // DeploymentGVK represents the GroupVersionKind (GVK) for a Kubernetes Deployment resource.
39+ var DeploymentGVK = appsv1 .SchemeGroupVersion .WithKind ("Deployment" )
40+
4041// EnsureKarmadaAPIServer creates karmada apiserver deployment and service resource
4142func EnsureKarmadaAPIServer (client clientset.Interface , cfg * operatorv1alpha1.KarmadaComponents , name , namespace string , featureGates map [string ]bool ) error {
4243 if err := installKarmadaAPIServer (client , cfg .KarmadaAPIServer , cfg .Etcd , name , namespace , featureGates ); err != nil {
@@ -88,17 +89,11 @@ func installKarmadaAPIServer(client clientset.Interface, cfg *operatorv1alpha1.K
8889 WithExtraArgs (cfg .ExtraArgs ).WithExtraVolumeMounts (cfg .ExtraVolumeMounts ).
8990 WithExtraVolumes (cfg .ExtraVolumes ).WithSidecarContainers (cfg .SidecarContainers ).WithResources (cfg .Resources ).ForDeployment (apiserverDeployment )
9091
91- if err : = apiclient .CreateOrUpdateDeployment (client , apiserverDeployment ); err != nil {
92+ if apiserverDeployment , err = apiclient .CreateOrUpdateDeployment (client , apiserverDeployment ); err != nil {
9293 return fmt .Errorf ("error when creating deployment for %s, err: %w" , apiserverDeployment .Name , err )
9394 }
9495
95- // Fetch persisted Deployment to get real UID
96- persisted , err := client .AppsV1 ().Deployments (namespace ).Get (context .TODO (), apiserverDeployment .GetName (), metav1.GetOptions {})
97- if err != nil {
98- return fmt .Errorf ("failed to fetch Deployment %s/%s for PDB owner, err: %w" , namespace , apiserverDeployment .GetName (), err )
99- }
100- gvk := schema.GroupVersionKind {Group : "apps" , Version : "v1" , Kind : "Deployment" }
101- ownerRef := * metav1 .NewControllerRef (persisted , gvk )
96+ ownerRef := * metav1 .NewControllerRef (apiserverDeployment , DeploymentGVK )
10297 if err := pdb .EnsurePodDisruptionBudget (client , util .KarmadaAPIServerName (name ), namespace , cfg .CommonSettings .PodDisruptionBudgetConfig , apiserverDeployment .Spec .Template .Labels , []metav1.OwnerReference {ownerRef }); err != nil {
10398 return fmt .Errorf ("failed to ensure PDB for apiserver component %s, err: %w" , util .KarmadaAPIServerName (name ), err )
10499 }
@@ -171,18 +166,12 @@ func installKarmadaAggregatedAPIServer(client clientset.Interface, cfg *operator
171166 WithPriorityClassName (cfg .CommonSettings .PriorityClassName ).
172167 WithExtraArgs (cfg .ExtraArgs ).WithFeatureGates (featureGates ).WithResources (cfg .Resources ).ForDeployment (aggregatedAPIServerDeployment )
173168
174- if err : = apiclient .CreateOrUpdateDeployment (client , aggregatedAPIServerDeployment ); err != nil {
169+ if aggregatedAPIServerDeployment , err = apiclient .CreateOrUpdateDeployment (client , aggregatedAPIServerDeployment ); err != nil {
175170 return fmt .Errorf ("error when creating deployment for %s, err: %w" , aggregatedAPIServerDeployment .Name , err )
176171 }
177172
178- // Fetch persisted Deployment to get real UID
179- persistedAgg , err := client .AppsV1 ().Deployments (namespace ).Get (context .TODO (), aggregatedAPIServerDeployment .GetName (), metav1.GetOptions {})
180- if err != nil {
181- return fmt .Errorf ("failed to fetch Deployment %s/%s for PDB owner, err: %w" , namespace , aggregatedAPIServerDeployment .GetName (), err )
182- }
183- gvk2 := schema.GroupVersionKind {Group : "apps" , Version : "v1" , Kind : "Deployment" }
184- ownerRef2 := * metav1 .NewControllerRef (persistedAgg , gvk2 )
185- if err := pdb .EnsurePodDisruptionBudget (client , util .KarmadaAggregatedAPIServerName (name ), namespace , cfg .CommonSettings .PodDisruptionBudgetConfig , aggregatedAPIServerDeployment .Spec .Template .Labels , []metav1.OwnerReference {ownerRef2 }); err != nil {
173+ ownerRef := * metav1 .NewControllerRef (aggregatedAPIServerDeployment , DeploymentGVK )
174+ if err := pdb .EnsurePodDisruptionBudget (client , util .KarmadaAggregatedAPIServerName (name ), namespace , cfg .CommonSettings .PodDisruptionBudgetConfig , aggregatedAPIServerDeployment .Spec .Template .Labels , []metav1.OwnerReference {ownerRef }); err != nil {
186175 return fmt .Errorf ("failed to ensure PDB for aggregated apiserver component %s, err: %w" , util .KarmadaAggregatedAPIServerName (name ), err )
187176 }
188177
0 commit comments