mirror of https://github.com/kubernetes/kops.git
protokube: remove unused internal IP discovery, add metal support
Metal support is basically a stub, but should be sufficient as we are now only using the cloud provider in gossip mode (and metal does not use gossip).
This commit is contained in:
parent
6509c42e10
commit
518b7b838d
|
@ -149,17 +149,13 @@ func run() error {
|
||||||
}
|
}
|
||||||
cloudProvider = scwCloudProvider
|
cloudProvider = scwCloudProvider
|
||||||
|
|
||||||
|
} else if cloud == "metal" {
|
||||||
|
cloudProvider = nil
|
||||||
} else {
|
} else {
|
||||||
klog.Errorf("Unknown cloud %q", cloud)
|
klog.Errorf("Unknown cloud %q", cloud)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
internalIP := cloudProvider.InstanceInternalIP()
|
|
||||||
if internalIP == nil {
|
|
||||||
klog.Errorf("Cannot determine internal IP")
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
if dnsInternalSuffix == "" {
|
if dnsInternalSuffix == "" {
|
||||||
if clusterID == "" {
|
if clusterID == "" {
|
||||||
return fmt.Errorf("cluster-id is required when dns-internal-suffix is not set")
|
return fmt.Errorf("cluster-id is required when dns-internal-suffix is not set")
|
||||||
|
@ -182,6 +178,10 @@ func run() error {
|
||||||
protokube.RootFS = rootfs
|
protokube.RootFS = rootfs
|
||||||
|
|
||||||
if gossip {
|
if gossip {
|
||||||
|
if cloudProvider == nil {
|
||||||
|
return fmt.Errorf("gossip not supported with cloudprovider %q", cloud)
|
||||||
|
}
|
||||||
|
|
||||||
dnsTarget := &gossipdns.HostsFile{
|
dnsTarget := &gossipdns.HostsFile{
|
||||||
Path: path.Join(rootfs, "etc/hosts"),
|
Path: path.Join(rootfs, "etc/hosts"),
|
||||||
}
|
}
|
||||||
|
@ -244,7 +244,6 @@ func run() error {
|
||||||
NodeName: nodeName,
|
NodeName: nodeName,
|
||||||
Channels: channels,
|
Channels: channels,
|
||||||
InternalDNSSuffix: dnsInternalSuffix,
|
InternalDNSSuffix: dnsInternalSuffix,
|
||||||
InternalIP: internalIP,
|
|
||||||
Kubernetes: protokube.NewKubernetesContext(),
|
Kubernetes: protokube.NewKubernetesContext(),
|
||||||
Master: master,
|
Master: master,
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -130,22 +129,6 @@ func (c *Client) GetTags() (map[string]string, error) {
|
||||||
return c.metadata.Compute.GetTags()
|
return c.metadata.Compute.GetTags()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetInternalIP returns the internal IP of the VM queried from Instance Metadata Service.
|
|
||||||
// This function returns nil if no internal IP is found.
|
|
||||||
func (c *Client) GetInternalIP() net.IP {
|
|
||||||
for _, iface := range c.metadata.Network.Interfaces {
|
|
||||||
if iface.IPv4 == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
for _, ipAddr := range iface.IPv4.IPAddresses {
|
|
||||||
if a := ipAddr.PrivateIPAddress; a != "" {
|
|
||||||
return net.ParseIP(a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ListVMScaleSets returns VM ScaleSets in the resource group.
|
// ListVMScaleSets returns VM ScaleSets in the resource group.
|
||||||
func (c *Client) ListVMScaleSets(ctx context.Context) ([]*compute.VirtualMachineScaleSet, error) {
|
func (c *Client) ListVMScaleSets(ctx context.Context) ([]*compute.VirtualMachineScaleSet, error) {
|
||||||
var l []*compute.VirtualMachineScaleSet
|
var l []*compute.VirtualMachineScaleSet
|
||||||
|
|
|
@ -17,7 +17,6 @@ limitations under the License.
|
||||||
package azure
|
package azure
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
|
||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -66,21 +65,3 @@ func TestUnmarshalMetadata(t *testing.T) {
|
||||||
t.Errorf("expected public IP address %s, but got %s", e, a)
|
t.Errorf("expected public IP address %s, but got %s", e, a)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetInternalIP(t *testing.T) {
|
|
||||||
data, err := os.ReadFile("testdata/metadata.json")
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %s", err)
|
|
||||||
}
|
|
||||||
metadata, err := unmarshalInstanceMetadata(data)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %s", err)
|
|
||||||
}
|
|
||||||
c := Client{
|
|
||||||
metadata: metadata,
|
|
||||||
}
|
|
||||||
|
|
||||||
if a, e := c.GetInternalIP(), net.ParseIP("172.16.32.8"); !a.Equal(e) {
|
|
||||||
t.Errorf("expected internal address %s, but got %s", e, a)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go-v2/aws"
|
"github.com/aws/aws-sdk-go-v2/aws"
|
||||||
|
@ -42,7 +41,6 @@ type AWSCloudProvider struct {
|
||||||
deviceMap map[string]string
|
deviceMap map[string]string
|
||||||
ec2 ec2.DescribeInstancesAPIClient
|
ec2 ec2.DescribeInstancesAPIClient
|
||||||
instanceId string
|
instanceId string
|
||||||
internalIP net.IP
|
|
||||||
imdsClient *imds.Client
|
imdsClient *imds.Client
|
||||||
zone string
|
zone string
|
||||||
}
|
}
|
||||||
|
@ -98,10 +96,6 @@ func NewAWSCloudProvider() (*AWSCloudProvider, error) {
|
||||||
return a, nil
|
return a, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *AWSCloudProvider) InstanceInternalIP() net.IP {
|
|
||||||
return a.internalIP
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *AWSCloudProvider) discoverTags(ctx context.Context) error {
|
func (a *AWSCloudProvider) discoverTags(ctx context.Context) error {
|
||||||
instance, err := a.describeInstance(ctx)
|
instance, err := a.describeInstance(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -120,14 +114,6 @@ func (a *AWSCloudProvider) discoverTags(ctx context.Context) error {
|
||||||
|
|
||||||
a.clusterTag = clusterID
|
a.clusterTag = clusterID
|
||||||
|
|
||||||
a.internalIP = net.ParseIP(aws.ToString(instance.Ipv6Address))
|
|
||||||
if a.internalIP == nil {
|
|
||||||
a.internalIP = net.ParseIP(aws.ToString(instance.PrivateIpAddress))
|
|
||||||
}
|
|
||||||
if a.internalIP == nil {
|
|
||||||
return fmt.Errorf("Internal IP not found on this instance (%q)", a.instanceId)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ package protokube
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
|
|
||||||
compute "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
|
compute "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute"
|
||||||
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
network "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork"
|
||||||
|
@ -33,7 +32,6 @@ type client interface {
|
||||||
ListVMSSNetworkInterfaces(ctx context.Context, vmScaleSetName string) ([]*network.Interface, error)
|
ListVMSSNetworkInterfaces(ctx context.Context, vmScaleSetName string) ([]*network.Interface, error)
|
||||||
GetName() string
|
GetName() string
|
||||||
GetTags() (map[string]string, error)
|
GetTags() (map[string]string, error)
|
||||||
GetInternalIP() net.IP
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ client = &gossipazure.Client{}
|
var _ client = &gossipazure.Client{}
|
||||||
|
@ -44,7 +42,6 @@ type AzureCloudProvider struct {
|
||||||
|
|
||||||
clusterTag string
|
clusterTag string
|
||||||
instanceID string
|
instanceID string
|
||||||
internalIP net.IP
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ CloudProvider = &AzureCloudProvider{}
|
var _ CloudProvider = &AzureCloudProvider{}
|
||||||
|
@ -68,15 +65,10 @@ func NewAzureCloudProvider() (*AzureCloudProvider, error) {
|
||||||
if instanceID == "" {
|
if instanceID == "" {
|
||||||
return nil, fmt.Errorf("empty name")
|
return nil, fmt.Errorf("empty name")
|
||||||
}
|
}
|
||||||
internalIP := client.GetInternalIP()
|
|
||||||
if internalIP == nil {
|
|
||||||
return nil, fmt.Errorf("error querying internal IP")
|
|
||||||
}
|
|
||||||
return &AzureCloudProvider{
|
return &AzureCloudProvider{
|
||||||
client: client,
|
client: client,
|
||||||
clusterTag: clusterTag,
|
clusterTag: clusterTag,
|
||||||
instanceID: instanceID,
|
instanceID: instanceID,
|
||||||
internalIP: internalIP,
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,11 +77,6 @@ func (a *AzureCloudProvider) InstanceID() string {
|
||||||
return a.instanceID
|
return a.instanceID
|
||||||
}
|
}
|
||||||
|
|
||||||
// InstanceInternalIP implements CloudProvider InstanceInternalIP.
|
|
||||||
func (a *AzureCloudProvider) InstanceInternalIP() net.IP {
|
|
||||||
return a.internalIP
|
|
||||||
}
|
|
||||||
|
|
||||||
// GossipSeeds implements CloudProvider GossipSeeds.
|
// GossipSeeds implements CloudProvider GossipSeeds.
|
||||||
func (a *AzureCloudProvider) GossipSeeds() (gossip.SeedProvider, error) {
|
func (a *AzureCloudProvider) GossipSeeds() (gossip.SeedProvider, error) {
|
||||||
tags := map[string]string{
|
tags := map[string]string{
|
||||||
|
|
|
@ -21,7 +21,6 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"net"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -55,7 +54,6 @@ type DOCloudProvider struct {
|
||||||
region string
|
region string
|
||||||
dropletName string
|
dropletName string
|
||||||
dropletID int
|
dropletID int
|
||||||
dropletIP net.IP
|
|
||||||
dropletTags []string
|
dropletTags []string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,12 +100,6 @@ func NewDOCloudProvider() (*DOCloudProvider, error) {
|
||||||
return nil, fmt.Errorf("failed to convert droplet ID to int: %s", err)
|
return nil, fmt.Errorf("failed to convert droplet ID to int: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
dropletIPStr, err := getMetadata(dropletInternalIPMetadataURL)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("failed to get droplet ip: %s", err)
|
|
||||||
}
|
|
||||||
dropletIP := net.ParseIP(dropletIPStr)
|
|
||||||
|
|
||||||
dropletName, err := getMetadataDropletName()
|
dropletName, err := getMetadataDropletName()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to get droplet name: %s", err)
|
return nil, fmt.Errorf("failed to get droplet name: %s", err)
|
||||||
|
@ -132,7 +124,6 @@ func NewDOCloudProvider() (*DOCloudProvider, error) {
|
||||||
godoClient: godoClient,
|
godoClient: godoClient,
|
||||||
ClusterID: clusterID,
|
ClusterID: clusterID,
|
||||||
dropletID: dropletID,
|
dropletID: dropletID,
|
||||||
dropletIP: dropletIP,
|
|
||||||
dropletName: dropletName,
|
dropletName: dropletName,
|
||||||
region: region,
|
region: region,
|
||||||
dropletTags: dropletTags,
|
dropletTags: dropletTags,
|
||||||
|
@ -202,10 +193,6 @@ func (d *DOCloudProvider) InstanceID() string {
|
||||||
return d.dropletName
|
return d.dropletName
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DOCloudProvider) InstanceInternalIP() net.IP {
|
|
||||||
return d.dropletIP
|
|
||||||
}
|
|
||||||
|
|
||||||
func getMetadataRegion() (string, error) {
|
func getMetadataRegion() (string, error) {
|
||||||
return getMetadata(dropletRegionMetadataURL)
|
return getMetadata(dropletRegionMetadataURL)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,6 @@ package protokube
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"cloud.google.com/go/compute/metadata"
|
"cloud.google.com/go/compute/metadata"
|
||||||
|
@ -38,7 +37,6 @@ type GCECloudProvider struct {
|
||||||
region string
|
region string
|
||||||
clusterName string
|
clusterName string
|
||||||
instanceName string
|
instanceName string
|
||||||
internalIP net.IP
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ CloudProvider = &GCECloudProvider{}
|
var _ CloudProvider = &GCECloudProvider{}
|
||||||
|
@ -68,11 +66,6 @@ func (a *GCECloudProvider) Project() string {
|
||||||
return a.project
|
return a.project
|
||||||
}
|
}
|
||||||
|
|
||||||
// InstanceInternalIP implements CloudProvider InstanceInternalIP
|
|
||||||
func (a *GCECloudProvider) InstanceInternalIP() net.IP {
|
|
||||||
return a.internalIP
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *GCECloudProvider) discoverTags() error {
|
func (a *GCECloudProvider) discoverTags() error {
|
||||||
// Cluster Name
|
// Cluster Name
|
||||||
{
|
{
|
||||||
|
@ -116,22 +109,6 @@ func (a *GCECloudProvider) discoverTags() error {
|
||||||
klog.Infof("Found instanceName=%q", a.instanceName)
|
klog.Infof("Found instanceName=%q", a.instanceName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Internal IP
|
|
||||||
{
|
|
||||||
internalIP, err := metadata.InternalIP()
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error querying InternalIP from GCE: %v", err)
|
|
||||||
}
|
|
||||||
if internalIP == "" {
|
|
||||||
return fmt.Errorf("InternalIP from metadata was empty")
|
|
||||||
}
|
|
||||||
a.internalIP = net.ParseIP(internalIP)
|
|
||||||
if a.internalIP == nil {
|
|
||||||
return fmt.Errorf("InternalIP from metadata was not parseable(%q)", internalIP)
|
|
||||||
}
|
|
||||||
klog.Infof("Found internalIP=%q", a.internalIP)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,6 @@ package protokube
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/hetznercloud/hcloud-go/hcloud"
|
"github.com/hetznercloud/hcloud-go/hcloud"
|
||||||
|
@ -34,7 +33,6 @@ import (
|
||||||
type HetznerCloudProvider struct {
|
type HetznerCloudProvider struct {
|
||||||
hcloudClient *hcloud.Client
|
hcloudClient *hcloud.Client
|
||||||
server *hcloud.Server
|
server *hcloud.Server
|
||||||
serverIP net.IP
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ CloudProvider = &HetznerCloudProvider{}
|
var _ CloudProvider = &HetznerCloudProvider{}
|
||||||
|
@ -77,16 +75,11 @@ func NewHetznerCloudProvider() (*HetznerCloudProvider, error) {
|
||||||
h := &HetznerCloudProvider{
|
h := &HetznerCloudProvider{
|
||||||
hcloudClient: hcloudClient,
|
hcloudClient: hcloudClient,
|
||||||
server: server,
|
server: server,
|
||||||
serverIP: server.PrivateNet[0].IP,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return h, nil
|
return h, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h HetznerCloudProvider) InstanceInternalIP() net.IP {
|
|
||||||
return h.serverIP
|
|
||||||
}
|
|
||||||
|
|
||||||
func (h *HetznerCloudProvider) GossipSeeds() (gossip.SeedProvider, error) {
|
func (h *HetznerCloudProvider) GossipSeeds() (gossip.SeedProvider, error) {
|
||||||
clusterName, ok := h.server.Labels[hetzner.TagKubernetesClusterName]
|
clusterName, ok := h.server.Labels[hetzner.TagKubernetesClusterName]
|
||||||
if !ok {
|
if !ok {
|
||||||
|
|
|
@ -19,7 +19,6 @@ package protokube
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
@ -35,8 +34,6 @@ type KubeBoot struct {
|
||||||
Channels []string
|
Channels []string
|
||||||
// InternalDNSSuffix is the dns zone we are living in
|
// InternalDNSSuffix is the dns zone we are living in
|
||||||
InternalDNSSuffix string
|
InternalDNSSuffix string
|
||||||
// InternalIP is the internal ip address of the node
|
|
||||||
InternalIP net.IP
|
|
||||||
// Kubernetes holds a kubernetes client
|
// Kubernetes holds a kubernetes client
|
||||||
Kubernetes *KubernetesContext
|
Kubernetes *KubernetesContext
|
||||||
// Master indicates we are a master node
|
// Master indicates we are a master node
|
||||||
|
|
|
@ -18,7 +18,6 @@ package protokube
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"k8s.io/klog/v2"
|
"k8s.io/klog/v2"
|
||||||
|
@ -36,7 +35,6 @@ type OpenStackCloudProvider struct {
|
||||||
clusterName string
|
clusterName string
|
||||||
project string
|
project string
|
||||||
instanceName string
|
instanceName string
|
||||||
internalIP net.IP
|
|
||||||
storageZone string
|
storageZone string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,11 +70,6 @@ func (a *OpenStackCloudProvider) Project() string {
|
||||||
return a.meta.ProjectID
|
return a.meta.ProjectID
|
||||||
}
|
}
|
||||||
|
|
||||||
// InstanceInternalIP implements CloudProvider InstanceInternalIP
|
|
||||||
func (a *OpenStackCloudProvider) InstanceInternalIP() net.IP {
|
|
||||||
return a.internalIP
|
|
||||||
}
|
|
||||||
|
|
||||||
func (a *OpenStackCloudProvider) discoverTags() error {
|
func (a *OpenStackCloudProvider) discoverTags() error {
|
||||||
// Cluster Name
|
// Cluster Name
|
||||||
{
|
{
|
||||||
|
@ -113,25 +106,6 @@ func (a *OpenStackCloudProvider) discoverTags() error {
|
||||||
klog.Infof("Found instanceName=%q", a.instanceName)
|
klog.Infof("Found instanceName=%q", a.instanceName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Internal IP
|
|
||||||
{
|
|
||||||
server, err := a.cloud.GetInstance(strings.TrimSpace(a.meta.ServerID))
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error getting instance from ID: %v", err)
|
|
||||||
}
|
|
||||||
// find kopsNetwork from metadata, fallback to clustername
|
|
||||||
ifName := a.clusterName
|
|
||||||
if val, ok := server.Metadata[openstack.TagKopsNetwork]; ok {
|
|
||||||
ifName = val
|
|
||||||
}
|
|
||||||
ip, err := openstack.GetServerFixedIP(server, ifName)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("error querying InternalIP from name: %v", err)
|
|
||||||
}
|
|
||||||
a.internalIP = net.ParseIP(ip)
|
|
||||||
klog.Infof("Found internalIP=%q", a.internalIP)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,6 @@ package protokube
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
|
||||||
|
|
||||||
"github.com/scaleway/scaleway-sdk-go/api/instance/v1"
|
"github.com/scaleway/scaleway-sdk-go/api/instance/v1"
|
||||||
ipam "github.com/scaleway/scaleway-sdk-go/api/ipam/v1alpha1"
|
ipam "github.com/scaleway/scaleway-sdk-go/api/ipam/v1alpha1"
|
||||||
|
@ -35,7 +34,6 @@ import (
|
||||||
type ScwCloudProvider struct {
|
type ScwCloudProvider struct {
|
||||||
scwClient *scw.Client
|
scwClient *scw.Client
|
||||||
server *instance.Server
|
server *instance.Server
|
||||||
serverIP net.IP
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ CloudProvider = &ScwCloudProvider{}
|
var _ CloudProvider = &ScwCloudProvider{}
|
||||||
|
@ -101,22 +99,9 @@ func NewScwCloudProvider() (*ScwCloudProvider, error) {
|
||||||
return nil, fmt.Errorf("expected at least 1 IP attached to the server %s", server.ID)
|
return nil, fmt.Errorf("expected at least 1 IP attached to the server %s", server.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
var ipToReturn string
|
|
||||||
for _, ipFound := range ips.IPs {
|
|
||||||
if ipFound.Address.IP.IsPrivate() == true {
|
|
||||||
ipToReturn = ipFound.Address.IP.String()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ipToReturn == "" {
|
|
||||||
ipToReturn = ips.IPs[0].Address.IP.String()
|
|
||||||
}
|
|
||||||
klog.V(4).Infof("Found first private net IP of the running server: %q", ipToReturn)
|
|
||||||
|
|
||||||
s := &ScwCloudProvider{
|
s := &ScwCloudProvider{
|
||||||
scwClient: scwClient,
|
scwClient: scwClient,
|
||||||
server: server,
|
server: server,
|
||||||
serverIP: net.IP(ipToReturn),
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return s, nil
|
return s, nil
|
||||||
|
@ -126,10 +111,6 @@ func (s *ScwCloudProvider) InstanceID() string {
|
||||||
return fmt.Sprintf("%s-%s", s.server.Name, s.server.ID)
|
return fmt.Sprintf("%s-%s", s.server.Name, s.server.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s ScwCloudProvider) InstanceInternalIP() net.IP {
|
|
||||||
return s.serverIP
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *ScwCloudProvider) GossipSeeds() (gossip.SeedProvider, error) {
|
func (s *ScwCloudProvider) GossipSeeds() (gossip.SeedProvider, error) {
|
||||||
clusterName := scaleway.ClusterNameFromTags(s.server.Tags)
|
clusterName := scaleway.ClusterNameFromTags(s.server.Tags)
|
||||||
if clusterName != "" {
|
if clusterName != "" {
|
||||||
|
|
|
@ -17,13 +17,10 @@ limitations under the License.
|
||||||
package protokube
|
package protokube
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
|
||||||
|
|
||||||
"k8s.io/kops/protokube/pkg/gossip"
|
"k8s.io/kops/protokube/pkg/gossip"
|
||||||
)
|
)
|
||||||
|
|
||||||
type CloudProvider interface {
|
type CloudProvider interface {
|
||||||
InstanceID() string
|
InstanceID() string
|
||||||
InstanceInternalIP() net.IP
|
|
||||||
GossipSeeds() (gossip.SeedProvider, error)
|
GossipSeeds() (gossip.SeedProvider, error)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue