mirror of https://github.com/portainer/portainer
32 lines
910 B
TypeScript
32 lines
910 B
TypeScript
import { Node } from 'kubernetes-types/core/v1';
|
|
|
|
export function getInternalNodeIpAddress(node?: Node) {
|
|
return node?.status?.addresses?.find(
|
|
(address) => address.type === 'InternalIP'
|
|
)?.address;
|
|
}
|
|
|
|
const controlPlaneLabels = [
|
|
'node-role.kubernetes.io/control-plane',
|
|
'node-role.kubernetes.io/master',
|
|
'node.kubernetes.io/microk8s-controlplane',
|
|
];
|
|
|
|
const roleLabels = ['kubernetes.io/role', 'node.kubernetes.io/role'];
|
|
|
|
export function getRole(node: Node): 'Control plane' | 'Worker' {
|
|
const hasControlPlaneLabel = controlPlaneLabels.some(
|
|
(label) => node.metadata?.labels?.[label] !== undefined
|
|
);
|
|
|
|
const hasControlPlaneLabelValue = roleLabels.some(
|
|
(label) =>
|
|
node.metadata?.labels?.[label] === 'control-plane' ||
|
|
node.metadata?.labels?.[label] === 'master'
|
|
);
|
|
|
|
return hasControlPlaneLabel || hasControlPlaneLabelValue
|
|
? 'Control plane'
|
|
: 'Worker';
|
|
}
|