diff --git a/providers/azure/aci.go b/providers/azure/aci.go index 6486c83b0..1c20ba69a 100644 --- a/providers/azure/aci.go +++ b/providers/azure/aci.go @@ -32,6 +32,7 @@ type ACIProvider struct { memory string pods string internalIP string + daemonEndpointPort int32 } // AuthConfig is the secret returned from an ImageRegistryCredential @@ -46,7 +47,7 @@ type AuthConfig struct { } // NewACIProvider creates a new ACIProvider. -func NewACIProvider(config string, rm *manager.ResourceManager, nodeName, operatingSystem string, internalIP string) (*ACIProvider, error) { +func NewACIProvider(config string, rm *manager.ResourceManager, nodeName, operatingSystem string, internalIP string, daemonEndpointPort int32) (*ACIProvider, error) { var p ACIProvider var err error @@ -91,6 +92,7 @@ func NewACIProvider(config string, rm *manager.ResourceManager, nodeName, operat p.operatingSystem = operatingSystem p.nodeName = nodeName p.internalIP = internalIP + p.daemonEndpointPort = daemonEndpointPort return &p, err } @@ -335,6 +337,16 @@ func (p *ACIProvider) NodeAddresses() []v1.NodeAddress { } } +// NodeDaemonEndpoints returns NodeDaemonEndpoints for the node status +// within Kuberentes. +func (p *ACIProvider) NodeDaemonEndpoints() *v1.NodeDaemonEndpoints { + return &v1.NodeDaemonEndpoints{ + KubeletEndpoint: v1.DaemonEndpoint{ + Port: p.daemonEndpointPort, + }, + } +} + // OperatingSystem returns the operating system that was provided by the config. func (p *ACIProvider) OperatingSystem() string { return p.operatingSystem diff --git a/providers/hypersh/hypersh.go b/providers/hypersh/hypersh.go index 818d57205..bc97122cf 100644 --- a/providers/hypersh/hypersh.go +++ b/providers/hypersh/hypersh.go @@ -235,6 +235,12 @@ func (p *HyperProvider) NodeAddresses() []v1.NodeAddress { return nil } +// NodeDaemonEndpoints returns NodeDaemonEndpoints for the node status +// within Kuberentes. +func (p *HyperProvider) NodeDaemonEndpoints() *v1.NodeDaemonEndpoints { + return nil +} + // OperatingSystem returns the operating system for this provider. // This is a noop to default to Linux for now. func (p *HyperProvider) OperatingSystem() string { diff --git a/vkubelet/provider.go b/vkubelet/provider.go index 972c89d1f..ddbf0c44a 100644 --- a/vkubelet/provider.go +++ b/vkubelet/provider.go @@ -44,6 +44,10 @@ type Provider interface { // within Kuberentes. NodeAddresses() []v1.NodeAddress + // NodeDaemonEndpoints returns NodeDaemonEndpoints for the node status + // within Kuberentes. + NodeDaemonEndpoints() *v1.NodeDaemonEndpoints + // OperatingSystem returns the operating system the provider is for. OperatingSystem() string } diff --git a/vkubelet/vkubelet.go b/vkubelet/vkubelet.go index 9ffa2131f..c3d27679b 100644 --- a/vkubelet/vkubelet.go +++ b/vkubelet/vkubelet.go @@ -1,11 +1,12 @@ package vkubelet import ( - "strings" "fmt" "log" "os" "os/signal" + "strconv" + "strings" "syscall" "time" @@ -65,7 +66,13 @@ func New(nodeName, operatingSystem, namespace, kubeConfig, taint, provider, prov switch provider { case "azure": internalIP := os.Getenv("VKUBELET_POD_IP") - p, err = azure.NewACIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP) + daemonEndpointPortEnv := os.Getenv("KUBELET_PORT") + i64value, err := strconv.ParseInt(daemonEndpointPortEnv, 10, 32) + daemonEndpointPort := int32(i64value) + if err != nil { + return nil, err + } + p, err = azure.NewACIProvider(providerConfig, rm, nodeName, operatingSystem, internalIP, daemonEndpointPort) if err != nil { return nil, err } @@ -140,6 +147,7 @@ func (s *Server) registerNode() error { Allocatable: s.provider.Capacity(), Conditions: s.provider.NodeConditions(), Addresses: s.provider.NodeAddresses(), + DaemonEndpoints: *s.provider.NodeDaemonEndpoints(), }, }