diff --git a/src/common/k8s-api/endpoints/service.api.ts b/src/common/k8s-api/endpoints/service.api.ts index e5af9de828..f78d8e6be8 100644 --- a/src/common/k8s-api/endpoints/service.api.ts +++ b/src/common/k8s-api/endpoints/service.api.ts @@ -53,7 +53,7 @@ export interface Service { clusterIP: string; clusterIPs?: string[]; externalTrafficPolicy?: string; - externalName: string; + externalName?: string; loadBalancerIP?: string; loadBalancerSourceRanges?: string[]; sessionAffinity: string; @@ -100,11 +100,15 @@ export class Service extends KubeObject { getExternalIps() { const lb = this.getLoadBalancer(); - if (lb && lb.ingress) { + if (lb?.ingress) { return lb.ingress.map(val => val.ip || val.hostname); } - return this.spec.externalIPs || []; + if (Array.isArray(this.spec?.externalIPs)) { + return this.spec.externalIPs; + } + + return []; } getType() { diff --git a/src/renderer/components/+network-services/service-details.tsx b/src/renderer/components/+network-services/service-details.tsx index 5948765089..d247e7908c 100644 --- a/src/renderer/components/+network-services/service-details.tsx +++ b/src/renderer/components/+network-services/service-details.tsx @@ -67,6 +67,11 @@ export class ServiceDetails extends React.Component { const { spec } = service; const endpoint = endpointStore.getByName(service.getName(), service.getNs()); + const externalIps = service.getExternalIps(); + + if (externalIps.length === 0 && spec?.externalName) { + externalIps.push(spec.externalName); + } return (
@@ -106,9 +111,9 @@ export class ServiceDetails extends React.Component { {service.getIpFamilyPolicy()} - {service.getExternalIps().length > 0 && ( + {externalIps.length > 0 && ( - {service.getExternalIps().map(ip =>
{ip}
)} + {externalIps.map(ip =>
{ip}
)}
)} diff --git a/src/renderer/components/+network-services/services.tsx b/src/renderer/components/+network-services/services.tsx index fe3b2b40ab..e29cc737cd 100644 --- a/src/renderer/components/+network-services/services.tsx +++ b/src/renderer/components/+network-services/services.tsx @@ -81,18 +81,26 @@ export class Services extends React.Component { { title: "Age", className: "age", sortBy: columnId.age, id: columnId.age }, { title: "Status", className: "status", sortBy: columnId.status, id: columnId.status }, ]} - renderTableContents={service => [ - service.getName(), - , - service.getNs(), - service.getType(), - service.getClusterIp(), - service.getPorts().join(", "), - service.getExternalIps().join(", ") || "-", - service.getSelector().map(label => ), - service.getAge(), - { title: service.getStatus(), className: service.getStatus().toLowerCase() }, - ]} + renderTableContents={service => { + const externalIps = service.getExternalIps(); + + if (externalIps.length === 0 && service.spec?.externalName) { + externalIps.push(service.spec.externalName); + } + + return [ + service.getName(), + , + service.getNs(), + service.getType(), + service.getClusterIp(), + service.getPorts().join(", "), + externalIps.join(", ") || "-", + service.getSelector().map(label => ), + service.getAge(), + { title: service.getStatus(), className: service.getStatus().toLowerCase() }, + ]; + }} /> ); }