diff --git a/app/kubernetes/converters/application.js b/app/kubernetes/converters/application.js index 0dc7d3bc9..01b224293 100644 --- a/app/kubernetes/converters/application.js +++ b/app/kubernetes/converters/application.js @@ -284,7 +284,7 @@ class KubernetesApplicationConverter { res.ApplicationType = app.ApplicationType; res.ResourcePool = _.find(resourcePools, ['Namespace.Name', app.ResourcePool]); res.Name = app.Name; - res.Services = KubernetesApplicationHelper.generateServicesFormValuesFromServices(app); + res.Services = KubernetesApplicationHelper.generateServicesFormValuesFromServices(app, ingresses); res.Selector = KubernetesApplicationHelper.generateSelectorFromService(app); res.StackName = app.StackName; res.ApplicationOwner = app.ApplicationOwner; diff --git a/app/kubernetes/helpers/application/index.js b/app/kubernetes/helpers/application/index.js index d4a0f8d43..89e699a63 100644 --- a/app/kubernetes/helpers/application/index.js +++ b/app/kubernetes/helpers/application/index.js @@ -271,7 +271,7 @@ class KubernetesApplicationHelper { /* #endregion */ /* #region SERVICES -> SERVICES FORM VALUES */ - static generateServicesFormValuesFromServices(app) { + static generateServicesFormValuesFromServices(app, ingresses) { let services = []; if (app.Services) { app.Services.forEach(function (service) { @@ -303,7 +303,7 @@ class KubernetesApplicationHelper { svcport.serviceName = service.metadata.name; svcport.ingressPaths = []; - app.Ingresses.value.forEach((ingress) => { + ingresses.forEach((ingress) => { const matchingIngressPaths = ingress.Paths.filter((ingPath) => ingPath.ServiceName === service.metadata.name && ingPath.Port === port.port); // only add ingress info to the port if the ingress serviceport and name matches const newPaths = matchingIngressPaths.map((ingPath) => ({ diff --git a/app/kubernetes/services/applicationService.js b/app/kubernetes/services/applicationService.js index 9b804f986..efd9217a7 100644 --- a/app/kubernetes/services/applicationService.js +++ b/app/kubernetes/services/applicationService.js @@ -125,7 +125,6 @@ class KubernetesApplicationService { const boundScaler = KubernetesHorizontalPodAutoScalerHelper.findApplicationBoundScaler(autoScalers.value, application); const scaler = boundScaler ? await this.KubernetesHorizontalPodAutoScalerService.get(namespace, boundScaler.Name) : undefined; application.AutoScaler = scaler; - application.Ingresses = ingresses; if (service.Yaml) { application.Yaml += '---\n' + service.Yaml; @@ -183,7 +182,6 @@ class KubernetesApplicationService { const boundScaler = KubernetesHorizontalPodAutoScalerHelper.findApplicationBoundScaler(autoScalers, application); const scaler = boundScaler ? await this.KubernetesHorizontalPodAutoScalerService.get(ns, boundScaler.Name) : undefined; application.AutoScaler = scaler; - application.Ingresses = await this.KubernetesIngressService.get(ns); }) ); return applications; @@ -451,7 +449,8 @@ class KubernetesApplicationService { if (application.ServiceType) { // delete headless service && non-headless service await this.KubernetesServiceService.delete(application.Services); - if (application.Ingresses.length) { + const appHasIngressPath = application.PublishedPorts && application.PublishedPorts.flatMap((pp) => pp.IngressRules).length >= 1; + if (appHasIngressPath) { const originalIngresses = await this.KubernetesIngressService.get(payload.Namespace); const formValues = { OriginalIngresses: originalIngresses, diff --git a/app/react/kubernetes/applications/CreateView/application-services/ingress/AppIngressPathsForm.tsx b/app/react/kubernetes/applications/CreateView/application-services/ingress/AppIngressPathsForm.tsx index a8fc2f9f1..e52324646 100644 --- a/app/react/kubernetes/applications/CreateView/application-services/ingress/AppIngressPathsForm.tsx +++ b/app/react/kubernetes/applications/CreateView/application-services/ingress/AppIngressPathsForm.tsx @@ -54,9 +54,10 @@ export function AppIngressPathsForm({ ?.filter((ic) => ic.Availability) .map((ic) => ic.ClassName) || []; const allowedIngresses = - ingresses?.filter((ing) => - allowedIngressClasses.includes(ing.ClassName) - ) || []; + ingresses?.filter((ing) => { + const className = ing.ClassName || 'none'; + return allowedIngressClasses.includes(className); + }) || []; return allowedIngresses.flatMap((ing) => ing.Hosts?.length ? ing.Hosts.map((host) => ({