@@ -205,22 +205,30 @@ func (r *ResourceRender) stableSelector() *metav1.LabelSelector {
205205 return resource .GetSelector (envoyLabels (labels ))
206206}
207207
208- // Deployment returns the expected Deployment based on the provided infra .
209- func (r * ResourceRender ) Deployment () (* appsv1. Deployment , error ) {
208+ // DeploymentSpec returns the ` Deployment` sets spec .
209+ func (r * ResourceRender ) DeploymentSpec () (* egv1a1. KubernetesDeploymentSpec , error ) {
210210 proxyConfig := r .infra .GetProxyConfig ()
211211
212212 // Get the EnvoyProxy config to configure the deployment.
213213 provider := proxyConfig .GetEnvoyProxyProvider ()
214214 if provider .Type != egv1a1 .ProviderTypeKubernetes {
215215 return nil , fmt .Errorf ("invalid provider type %v for Kubernetes infra manager" , provider .Type )
216216 }
217+
217218 deploymentConfig := provider .GetEnvoyProxyKubeProvider ().EnvoyDeployment
218219
219- // If deployment config is nil, it's not Deployment installation.
220+ return deploymentConfig , nil
221+ }
222+
223+ // Deployment returns the expected Deployment based on the provided infra.
224+ func (r * ResourceRender ) Deployment () (* appsv1.Deployment , error ) {
225+ deploymentConfig , er := r .DeploymentSpec ()
226+ // If deployment config is nil,ignore Deployment.
220227 if deploymentConfig == nil {
221- return nil , nil
228+ return nil , er
222229 }
223230
231+ proxyConfig := r .infra .GetProxyConfig ()
224232 // Get expected bootstrap configurations rendered ProxyContainers
225233 containers , err := expectedProxyContainers (r .infra , deploymentConfig .Container , proxyConfig .Spec .Shutdown , r .ShutdownManager )
226234 if err != nil {
@@ -286,6 +294,8 @@ func (r *ResourceRender) Deployment() (*appsv1.Deployment, error) {
286294 deployment .ObjectMeta .Name = r .Name ()
287295 }
288296
297+ provider := proxyConfig .GetEnvoyProxyProvider ()
298+
289299 // omit the deployment replicas if HPA is being set
290300 if provider .GetEnvoyProxyKubeProvider ().EnvoyHpa != nil {
291301 deployment .Spec .Replicas = nil
@@ -299,7 +309,8 @@ func (r *ResourceRender) Deployment() (*appsv1.Deployment, error) {
299309 return deployment , nil
300310}
301311
302- func (r * ResourceRender ) DaemonSet () (* appsv1.DaemonSet , error ) {
312+ // DaemonSetSpec returns the `DaemonSet` sets spec.
313+ func (r * ResourceRender ) DaemonSetSpec () (* egv1a1.KubernetesDaemonSetSpec , error ) {
303314 proxyConfig := r .infra .GetProxyConfig ()
304315
305316 // Get the EnvoyProxy config to configure the daemonset.
@@ -308,13 +319,18 @@ func (r *ResourceRender) DaemonSet() (*appsv1.DaemonSet, error) {
308319 return nil , fmt .Errorf ("invalid provider type %v for Kubernetes infra manager" , provider .Type )
309320 }
310321
311- daemonSetConfig := provider .GetEnvoyProxyKubeProvider ().EnvoyDaemonSet
322+ return provider .GetEnvoyProxyKubeProvider ().EnvoyDaemonSet , nil
323+ }
312324
313- // If daemonset config is nil, it's not DaemonSet installation.
325+ func (r * ResourceRender ) DaemonSet () (* appsv1.DaemonSet , error ) {
326+ daemonSetConfig , err := r .DaemonSetSpec ()
327+ // If daemonset config is nil, ignore DaemonSet.
314328 if daemonSetConfig == nil {
315- return nil , nil
329+ return nil , err
316330 }
317331
332+ proxyConfig := r .infra .GetProxyConfig ()
333+
318334 // Get expected bootstrap configurations rendered ProxyContainers
319335 containers , err := expectedProxyContainers (r .infra , daemonSetConfig .Container , proxyConfig .Spec .Shutdown , r .ShutdownManager )
320336 if err != nil {
@@ -369,7 +385,8 @@ func (r *ResourceRender) DaemonSet() (*appsv1.DaemonSet, error) {
369385 return daemonSet , nil
370386}
371387
372- func (r * ResourceRender ) PodDisruptionBudget () (* policyv1.PodDisruptionBudget , error ) {
388+ // PodDisruptionBudgetSpec returns the `PodDisruptionBudget` sets spec.
389+ func (r * ResourceRender ) PodDisruptionBudgetSpec () (* egv1a1.KubernetesPodDisruptionBudgetSpec , error ) {
373390 provider := r .infra .GetProxyConfig ().GetEnvoyProxyProvider ()
374391 if provider .Type != egv1a1 .ProviderTypeKubernetes {
375392 return nil , fmt .Errorf ("invalid provider type %v for Kubernetes infra manager" , provider .Type )
@@ -380,6 +397,16 @@ func (r *ResourceRender) PodDisruptionBudget() (*policyv1.PodDisruptionBudget, e
380397 return nil , nil
381398 }
382399
400+ return podDisruptionBudget , nil
401+ }
402+
403+ func (r * ResourceRender ) PodDisruptionBudget () (* policyv1.PodDisruptionBudget , error ) {
404+ podDisruptionBudget , er := r .PodDisruptionBudgetSpec ()
405+ // If podDisruptionBudget config is nil or MinAvailable is nil, ignore PodDisruptionBudget.
406+ if podDisruptionBudget == nil {
407+ return nil , er
408+ }
409+
383410 return & policyv1.PodDisruptionBudget {
384411 ObjectMeta : metav1.ObjectMeta {
385412 Name : r .Name (),
@@ -396,15 +423,22 @@ func (r *ResourceRender) PodDisruptionBudget() (*policyv1.PodDisruptionBudget, e
396423 }, nil
397424}
398425
399- func (r * ResourceRender ) HorizontalPodAutoscaler () (* autoscalingv2.HorizontalPodAutoscaler , error ) {
426+ // HorizontalPodAutoscalerSpec returns the `HorizontalPodAutoscaler` sets spec.
427+ func (r * ResourceRender ) HorizontalPodAutoscalerSpec () (* egv1a1.KubernetesHorizontalPodAutoscalerSpec , error ) {
400428 provider := r .infra .GetProxyConfig ().GetEnvoyProxyProvider ()
401429 if provider .Type != egv1a1 .ProviderTypeKubernetes {
402430 return nil , fmt .Errorf ("invalid provider type %v for Kubernetes infra manager" , provider .Type )
403431 }
404432
405433 hpaConfig := provider .GetEnvoyProxyKubeProvider ().EnvoyHpa
434+ return hpaConfig , nil
435+ }
436+
437+ func (r * ResourceRender ) HorizontalPodAutoscaler () (* autoscalingv2.HorizontalPodAutoscaler , error ) {
438+ hpaConfig , err := r .HorizontalPodAutoscalerSpec ()
439+ // If hpa config is nil, ignore HorizontalPodAutoscaler.
406440 if hpaConfig == nil {
407- return nil , nil
441+ return nil , err
408442 }
409443
410444 hpa := & autoscalingv2.HorizontalPodAutoscaler {
@@ -430,6 +464,8 @@ func (r *ResourceRender) HorizontalPodAutoscaler() (*autoscalingv2.HorizontalPod
430464 },
431465 }
432466
467+ provider := r .infra .GetProxyConfig ().GetEnvoyProxyProvider ()
468+
433469 // set deployment target ref name
434470 deploymentConfig := provider .GetEnvoyProxyKubeProvider ().EnvoyDeployment
435471 if deploymentConfig .Name != nil {
0 commit comments