mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-01-13 16:39:29 -05:00
33 lines
811 B
Go
33 lines
811 B
Go
|
package controlplane
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
|
||
|
corev1 "k8s.io/api/core/v1"
|
||
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||
|
|
||
|
nodeutil "github.com/edgelesssys/constellation/operators/constellation-node-operator/internal/node"
|
||
|
)
|
||
|
|
||
|
// ListControlPlaneIPs retrieves a list of VPC IPs for the control plane nodes from kubernetes.
|
||
|
func ListControlPlaneIPs(k8sClient client.Client) ([]string, error) {
|
||
|
var nodes corev1.NodeList
|
||
|
if err := k8sClient.List(context.TODO(), &nodes); err != nil {
|
||
|
return nil, fmt.Errorf("listing nodes: %w", err)
|
||
|
}
|
||
|
var ips []string
|
||
|
for _, node := range nodes.Items {
|
||
|
if !nodeutil.IsControlPlaneNode(&node) {
|
||
|
continue
|
||
|
}
|
||
|
for _, addr := range node.Status.Addresses {
|
||
|
if addr.Type == corev1.NodeInternalIP {
|
||
|
ips = append(ips, addr.Address)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return ips, nil
|
||
|
}
|