mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-10-01 01:36:09 -04:00
metadata: move subnetCIDR to InstanceMetadata
This commit is contained in:
parent
0cdc7886ee
commit
dd007f4772
@ -23,8 +23,6 @@ type ProviderMetadata interface {
|
|||||||
List(ctx context.Context) ([]metadata.InstanceMetadata, error)
|
List(ctx context.Context) ([]metadata.InstanceMetadata, error)
|
||||||
// Self retrieves the current instance.
|
// Self retrieves the current instance.
|
||||||
Self(ctx context.Context) (metadata.InstanceMetadata, error)
|
Self(ctx context.Context) (metadata.InstanceMetadata, error)
|
||||||
// GetSubnetworkCIDR retrieves the subnetwork CIDR for the current instance.
|
|
||||||
GetSubnetworkCIDR(ctx context.Context) (string, error)
|
|
||||||
// GetLoadBalancerEndpoint retrieves the load balancer endpoint.
|
// GetLoadBalancerEndpoint retrieves the load balancer endpoint.
|
||||||
GetLoadBalancerEndpoint(ctx context.Context) (string, error)
|
GetLoadBalancerEndpoint(ctx context.Context) (string, error)
|
||||||
// GetInstance retrieves an instance using its providerID.
|
// GetInstance retrieves an instance using its providerID.
|
||||||
@ -92,9 +90,6 @@ type stubProviderMetadata struct {
|
|||||||
GetLoadBalancerEndpointErr error
|
GetLoadBalancerEndpointErr error
|
||||||
GetLoadBalancerEndpointResp string
|
GetLoadBalancerEndpointResp string
|
||||||
|
|
||||||
GetSubnetworkCIDRErr error
|
|
||||||
GetSubnetworkCIDRResp string
|
|
||||||
|
|
||||||
ListErr error
|
ListErr error
|
||||||
ListResp []metadata.InstanceMetadata
|
ListResp []metadata.InstanceMetadata
|
||||||
|
|
||||||
@ -115,10 +110,6 @@ func (m *stubProviderMetadata) GetLoadBalancerEndpoint(ctx context.Context) (str
|
|||||||
return m.GetLoadBalancerEndpointResp, m.GetLoadBalancerEndpointErr
|
return m.GetLoadBalancerEndpointResp, m.GetLoadBalancerEndpointErr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *stubProviderMetadata) GetSubnetworkCIDR(ctx context.Context) (string, error) {
|
|
||||||
return m.GetSubnetworkCIDRResp, m.GetSubnetworkCIDRErr
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *stubProviderMetadata) List(ctx context.Context) ([]metadata.InstanceMetadata, error) {
|
func (m *stubProviderMetadata) List(ctx context.Context) ([]metadata.InstanceMetadata, error) {
|
||||||
return m.ListResp, m.ListErr
|
return m.ListResp, m.ListErr
|
||||||
}
|
}
|
||||||
|
@ -120,15 +120,11 @@ func (k *KubeWrapper) InitCluster(
|
|||||||
nodeName = k8sCompliantHostname(instance.Name)
|
nodeName = k8sCompliantHostname(instance.Name)
|
||||||
providerID = instance.ProviderID
|
providerID = instance.ProviderID
|
||||||
nodeIP = instance.VPCIP
|
nodeIP = instance.VPCIP
|
||||||
|
subnetworkPodCIDR = instance.SubnetworkCIDR
|
||||||
|
|
||||||
if len(instance.AliasIPRanges) > 0 {
|
if len(instance.AliasIPRanges) > 0 {
|
||||||
nodePodCIDR = instance.AliasIPRanges[0]
|
nodePodCIDR = instance.AliasIPRanges[0]
|
||||||
}
|
}
|
||||||
subnetworkPodCIDR, err = k.providerMetadata.GetSubnetworkCIDR(ctx)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("retrieving subnetwork CIDR: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
controlPlaneEndpoint, err = k.providerMetadata.GetLoadBalancerEndpoint(ctx)
|
controlPlaneEndpoint, err = k.providerMetadata.GetLoadBalancerEndpoint(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("retrieving load balancer endpoint: %w", err)
|
return nil, fmt.Errorf("retrieving load balancer endpoint: %w", err)
|
||||||
|
@ -129,20 +129,6 @@ func TestInitCluster(t *testing.T) {
|
|||||||
wantErr: true,
|
wantErr: true,
|
||||||
k8sVersion: versions.Default,
|
k8sVersion: versions.Default,
|
||||||
},
|
},
|
||||||
"kubeadm init fails when retrieving metadata subnetwork cidr": {
|
|
||||||
clusterUtil: stubClusterUtil{},
|
|
||||||
kubeconfigReader: &stubKubeconfigReader{
|
|
||||||
Kubeconfig: []byte("someKubeconfig"),
|
|
||||||
},
|
|
||||||
providerMetadata: &stubProviderMetadata{
|
|
||||||
GetSubnetworkCIDRErr: someErr,
|
|
||||||
SupportedResp: true,
|
|
||||||
},
|
|
||||||
CloudControllerManager: &stubCloudControllerManager{},
|
|
||||||
ClusterAutoscaler: &stubClusterAutoscaler{},
|
|
||||||
wantErr: true,
|
|
||||||
k8sVersion: versions.Default,
|
|
||||||
},
|
|
||||||
"kubeadm init fails when retrieving metadata loadbalancer ip": {
|
"kubeadm init fails when retrieving metadata loadbalancer ip": {
|
||||||
clusterUtil: stubClusterUtil{},
|
clusterUtil: stubClusterUtil{},
|
||||||
kubeconfigReader: &stubKubeconfigReader{
|
kubeconfigReader: &stubKubeconfigReader{
|
||||||
|
@ -142,6 +142,13 @@ var qemuVals = map[string]any{
|
|||||||
"useDigest": true,
|
"useDigest": true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"ipam": map[string]any{
|
||||||
|
"operator": map[string]any{
|
||||||
|
"clusterPoolIPv4PodCIDRList": []string{
|
||||||
|
"10.244.0.0/16",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"kubeProxyReplacement": "strict",
|
"kubeProxyReplacement": "strict",
|
||||||
"enableCiliumEndpointSlice": true,
|
"enableCiliumEndpointSlice": true,
|
||||||
"kubeProxyReplacementHealthzBindAddr": "0.0.0.0:10256",
|
"kubeProxyReplacementHealthzBindAddr": "0.0.0.0:10256",
|
||||||
|
@ -95,8 +95,8 @@ func NewMetadata(ctx context.Context) (*Metadata, error) {
|
|||||||
|
|
||||||
return &Metadata{
|
return &Metadata{
|
||||||
imdsAPI: &imdsAPI,
|
imdsAPI: &imdsAPI,
|
||||||
virtualNetworksAPI: virtualNetworksAPI,
|
|
||||||
networkInterfacesAPI: networkInterfacesAPI,
|
networkInterfacesAPI: networkInterfacesAPI,
|
||||||
|
virtualNetworksAPI: virtualNetworksAPI,
|
||||||
securityGroupsAPI: securityGroupsAPI,
|
securityGroupsAPI: securityGroupsAPI,
|
||||||
publicIPAddressesAPI: publicIPAddressesAPI,
|
publicIPAddressesAPI: publicIPAddressesAPI,
|
||||||
loadBalancerAPI: loadBalancerAPI,
|
loadBalancerAPI: loadBalancerAPI,
|
||||||
@ -155,8 +155,8 @@ func (m *Metadata) GetNetworkSecurityGroupName(ctx context.Context) (string, err
|
|||||||
return *nsg.Name, nil
|
return *nsg.Name, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSubnetworkCIDR retrieves the subnetwork CIDR from cloud provider metadata.
|
// getSubnetworkCIDR retrieves the subnetwork CIDR from cloud provider metadata.
|
||||||
func (m *Metadata) GetSubnetworkCIDR(ctx context.Context) (string, error) {
|
func (m *Metadata) getSubnetworkCIDR(ctx context.Context) (string, error) {
|
||||||
resourceGroup, err := m.imdsAPI.ResourceGroup(ctx)
|
resourceGroup, err := m.imdsAPI.ResourceGroup(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
@ -245,7 +245,7 @@ func TestGetSubnetworkCIDR(t *testing.T) {
|
|||||||
imdsAPI: tc.imdsAPI,
|
imdsAPI: tc.imdsAPI,
|
||||||
virtualNetworksAPI: tc.virtualNetworksAPI,
|
virtualNetworksAPI: tc.virtualNetworksAPI,
|
||||||
}
|
}
|
||||||
subnetworkCIDR, err := metadata.GetSubnetworkCIDR(context.Background())
|
subnetworkCIDR, err := metadata.getSubnetworkCIDR(context.Background())
|
||||||
if tc.wantErr {
|
if tc.wantErr {
|
||||||
assert.Error(err)
|
assert.Error(err)
|
||||||
return
|
return
|
||||||
|
@ -83,7 +83,18 @@ func (m *Metadata) Self(ctx context.Context) (metadata.InstanceMetadata, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return metadata.InstanceMetadata{}, err
|
return metadata.InstanceMetadata{}, err
|
||||||
}
|
}
|
||||||
return m.api.RetrieveInstance(ctx, project, zone, instanceName)
|
subnetCIDR, err := m.api.RetrieveSubnetworkAliasCIDR(ctx, project, zone, instanceName)
|
||||||
|
if err != nil {
|
||||||
|
return metadata.InstanceMetadata{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
instance, err := m.api.RetrieveInstance(ctx, project, zone, instanceName)
|
||||||
|
if err != nil {
|
||||||
|
return metadata.InstanceMetadata{}, err
|
||||||
|
}
|
||||||
|
instance.SubnetworkCIDR = subnetCIDR
|
||||||
|
|
||||||
|
return instance, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetInstance retrieves an instance using its providerID.
|
// GetInstance retrieves an instance using its providerID.
|
||||||
@ -95,23 +106,6 @@ func (m *Metadata) GetInstance(ctx context.Context, providerID string) (metadata
|
|||||||
return m.api.RetrieveInstance(ctx, project, zone, instanceName)
|
return m.api.RetrieveInstance(ctx, project, zone, instanceName)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSubnetworkCIDR returns the subnetwork CIDR of the current instance.
|
|
||||||
func (m *Metadata) GetSubnetworkCIDR(ctx context.Context) (string, error) {
|
|
||||||
project, err := m.api.RetrieveProjectID()
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
zone, err := m.api.RetrieveZone()
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
instanceName, err := m.api.RetrieveInstanceName()
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
return m.api.RetrieveSubnetworkAliasCIDR(ctx, project, zone, instanceName)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SupportsLoadBalancer returns true if the cloud provider supports load balancers.
|
// SupportsLoadBalancer returns true if the cloud provider supports load balancers.
|
||||||
func (m *Metadata) SupportsLoadBalancer() bool {
|
func (m *Metadata) SupportsLoadBalancer() bool {
|
||||||
return true
|
return true
|
||||||
|
@ -28,6 +28,10 @@ type InstanceMetadata struct {
|
|||||||
AliasIPRanges []string
|
AliasIPRanges []string
|
||||||
// SSHKeys maps usernames to ssh public keys.
|
// SSHKeys maps usernames to ssh public keys.
|
||||||
SSHKeys map[string][]string
|
SSHKeys map[string][]string
|
||||||
|
|
||||||
|
// SubnetworkCIDR is the CIDR of the subnetwork the instance is in.
|
||||||
|
// May be empty on certain CSPs.
|
||||||
|
SubnetworkCIDR string
|
||||||
}
|
}
|
||||||
|
|
||||||
type InstanceSelfer interface {
|
type InstanceSelfer interface {
|
||||||
|
@ -85,11 +85,6 @@ func (m *Metadata) UID(ctx context.Context) (string, error) {
|
|||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSubnetworkCIDR retrieves the subnetwork CIDR from cloud provider metadata.
|
|
||||||
func (m *Metadata) GetSubnetworkCIDR(ctx context.Context) (string, error) {
|
|
||||||
return "10.244.0.0/16", nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Metadata) retrieveMetadata(ctx context.Context, uri string) ([]byte, error) {
|
func (m *Metadata) retrieveMetadata(ctx context.Context, uri string) ([]byte, error) {
|
||||||
url := &url.URL{
|
url := &url.URL{
|
||||||
Scheme: "http",
|
Scheme: "http",
|
||||||
|
Loading…
Reference in New Issue
Block a user