mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-12-25 23:49:37 -05:00
de9fa37f63
Signed-off-by: Malte Poll <mp@edgeless.systems>
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
|
|
}
|