Class AzureHostingManager
Manages cluster provisioning on the Google Cloud Platform.
Implements
Inherited Members
Namespace: Neon.Kube.Hosting.Azure
Assembly: Neon.Kube.Azure.dll
Syntax
[HostingProvider(HostingEnvironment.Azure)]
public class AzureHostingManager : HostingManager, IHostingManager
Remarks
Constructors
AzureHostingManager()
Creates an instance that is only capable of validating the hosting related options in the cluster definition.
Declaration
public AzureHostingManager()
AzureHostingManager(ClusterProxy, bool, string, string, string)
Creates an instance that is capable of provisioning a cluster on Azure.
Declaration
public AzureHostingManager(ClusterProxy cluster, bool cloudMarketplace, string nodeImageUri = null, string nodeImagePath = null, string logFolder = null)
Parameters
Type | Name | Description |
---|---|---|
ClusterProxy | cluster | The cluster being managed. |
bool | cloudMarketplace |
For cloud environments, this specifies whether the cluster should be provisioned
using a VM image from the public cloud marketplace when noteOnly NEONFORGE maintainers will have permission to use the private image. |
string | nodeImageUri | Ignored. |
string | nodeImagePath | Ignored. |
string | logFolder | The folder where log files are to be written, otherwise or |
Remarks
note
WARNING! All hosting manager constructors must have the same signature
because these are constructed via reflection by the HostingLoader
class
in the Neon.Kube.Hosting assembly. The parameter must match what the
HostingLoader
expects.
Properties
CanManageRouter
Returns true
if the hosting manage is capable of updating the upstream
network router or load balancer. Cloud based managers will return true
whereas on-premise managers will return false
because we don't have
the ability to manage physical routers yet.
Declaration
public override bool CanManageRouter { get; }
Property Value
Type | Description |
---|---|
bool |
Overrides
Capabilities
Returns flags describing any optional capabilities supported by the hosting manager.
Declaration
public override HostingCapabilities Capabilities { get; }
Property Value
Type | Description |
---|---|
HostingCapabilities |
Overrides
HostingEnvironment
Returns the hosting environment implemented by the manager.
Declaration
public override HostingEnvironment HostingEnvironment { get; }
Property Value
Type | Description |
---|---|
HostingEnvironment |
Overrides
NodeMtu
Returns the MTU (Maximum Transmission Unit) to be configured for network interfaces on node machines created by the hosting manager. This may return 0 which indicates that the default MTU (typically DefaultMTU bytes) should be set or a custom value between [512-9000].
Declaration
public override int NodeMtu { get; }
Property Value
Type | Description |
---|---|
int |
Overrides
RequiresNodeAddressCheck
Returns true
if the hosting manager requires that the LAN be scanned
for devices assigned IP addresses that may conflict with node addresses. This
is typically required only for clusters deployed on-premise because cloud
clusters are typically provisioned to their own isolated network.
Declaration
public override bool RequiresNodeAddressCheck { get; }
Property Value
Type | Description |
---|---|
bool |
Overrides
Methods
AddPostProvisioningSteps(SetupController<NodeDefinition>)
Adds any steps to be performed after the node has been otherwise prepared.
Declaration
public override void AddPostProvisioningSteps(SetupController<NodeDefinition> controller)
Parameters
Type | Name | Description |
---|---|---|
SetupController<NodeDefinition> | controller | The target setup controller. |
Overrides
AddPostSetupSteps(SetupController<NodeDefinition>)
Adds any stps to be performed after cluster setup.
Declaration
public override void AddPostSetupSteps(SetupController<NodeDefinition> controller)
Parameters
Type | Name | Description |
---|---|---|
SetupController<NodeDefinition> | controller | The target setup controller. |
Overrides
AddProvisioningSteps(SetupController<NodeDefinition>)
Adds the steps required to the setup controller passed that creates and initializes the cluster resources such as the virtual machines, networks, load balancers, network security groups, public IP addresses.
Declaration
public override void AddProvisioningSteps(SetupController<NodeDefinition> controller)
Parameters
Type | Name | Description |
---|---|---|
SetupController<NodeDefinition> | controller | The setup controller. |
Overrides
AddSetupSteps(SetupController<NodeDefinition>)
Adds any steps to be performed before starting cluster setup.
Declaration
public override void AddSetupSteps(SetupController<NodeDefinition> controller)
Parameters
Type | Name | Description |
---|---|---|
SetupController<NodeDefinition> | controller | The target setup controller. |
Overrides
CheckDeploymentReadinessAsync(ClusterDefinition)
Performs any final hosting environmet readiness check before deploying a cluster.
Declaration
public override Task CheckDeploymentReadinessAsync(ClusterDefinition clusterDefinition)
Parameters
Type | Name | Description |
---|---|---|
ClusterDefinition | clusterDefinition | Specifies the cluster definition. |
Returns
Type | Description |
---|---|
Task | The tracking Task. |
Overrides
Exceptions
Type | Condition |
---|---|
HostingReadinessException | Thrown if any problems were detected. |
DeleteClusterAsync(ClusterDefinition)
Deletes an existing cluster by terminating any nodes and then removing node VMs and any related resources as well as the related local cluster login by default. The cluster does not need to be running.
note
This operation may not be supported for all environments.
Declaration
public override Task DeleteClusterAsync(ClusterDefinition clusterDefinition = null)
Parameters
Type | Name | Description |
---|---|---|
ClusterDefinition | clusterDefinition | Optionally specifies a cluster definition. This is used in situations where you need to remove a cluster without having its kubeconfig context. Use this with extreme care because in the mode, the cluster cannot be queried to determine whether it's locked or not and locked clusters will be deleted too. |
Returns
Type | Description |
---|---|
Task | The tracking Task. |
Overrides
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the hosting environment doesn't support this operation. |
DisableInternetSshAsync()
Disables public SSH access for every node in the cluster, honoring source address limitations specified by ManagementAddressRules in the cluster definition.
note
This currently supported only by cloud hosting managers like: Azure, AWS, and Google. This will do nothing for the on-premise hosting managers because we don't have the ability to manage physical routers yet.
Declaration
public override Task DisableInternetSshAsync()
Returns
Type | Description |
---|---|
Task |
Overrides
Dispose(bool)
Releases any important resources associated with the instance.
Declaration
public override void Dispose(bool disposing)
Parameters
Type | Name | Description |
---|---|---|
bool | disposing | Pass |
Overrides
EnableInternetSshAsync()
Enables public SSH access for every node in the cluster, honoring source address limitations specified by ManagementAddressRules in the cluster definition.
Each node will be assigned a public port that has a NAT rule directing SSH traffic to that specific node. These ports will be in the range of FirstExternalSshPort to LastExternalSshPort. GetSshEndpoint(string) will return the external endpoint for nodes when external SSH is enabled.
note
This currently supported only by cloud hosting managers like: Azure, AWS, and Google. This will do nothing for the on-premise hosting managers because we don't have the ability to manage physical routers yet.
Declaration
public override Task EnableInternetSshAsync()
Returns
Type | Description |
---|---|
Task |
Overrides
GetClusterAddresses()
Returns the IP address to be used to access the cluster. For clusters deployed the the cloud, this will be the ingress IP address assigned to the load balancer. For on-premise clusters, this returns the private IP addresses for the control-plane nodes.
Declaration
public override IEnumerable<string> GetClusterAddresses()
Returns
Type | Description |
---|---|
IEnumerable<string> | The list of cluster IP addresses. |
Overrides
GetClusterHealthAsync(TimeSpan)
Retrieves the health status of the current cluster from the hosting manager's perspective This includes information about the infrastructure provisioned for the cluster.
Declaration
public override Task<ClusterHealth> GetClusterHealthAsync(TimeSpan timeout = default)
Parameters
Type | Name | Description |
---|---|---|
TimeSpan | timeout | Optionally specifies the maximum time to wait for the result. This defaults to 15 seconds. |
Returns
Type | Description |
---|---|
Task<ClusterHealth> | The ClusterHealth information for the current cluster. noteWhen there is no current cluster, the health information will return indicating that no cluster was found. |
Overrides
GetDataDisk(LinuxSshProxy)
Identifies the data disk device for a node. This returns the data disk's device name when an uninitialized data disk exists or "PRIMARY" when the OS disk will be used for data.
Declaration
public override string GetDataDisk(LinuxSshProxy node)
Parameters
Type | Name | Description |
---|---|---|
LinuxSshProxy | node |
Returns
Type | Description |
---|---|
string | The disk device name or "PRIMARY". |
Overrides
Remarks
note
This will not work after the node's data disk has been initialized.
GetDatacenterCoordinatesAsync()
Returns the lat/long coordinates of the region or datacenter
hosting the cluster when possible. The coordinates will be returned
as null
when this is unknown.
Declaration
public override Task<(double? Latitude, double? Longitude)> GetDatacenterCoordinatesAsync()
Returns
Type | Description |
---|---|
Task<(double? Latitude, double? Longitude)> | The datacenter coordinates or |
Overrides
GetResourceAvailabilityAsync(long, long)
Returns the availability of resources required to deploy a cluster.
Declaration
public override Task<HostingResourceAvailability> GetResourceAvailabilityAsync(long reserveMemory = 0, long reserveDisk = 0)
Parameters
Type | Name | Description |
---|---|---|
long | reserveMemory | Optionally specifies the amount of host memory (in bytes) to be reserved for host operations. |
long | reserveDisk |
Returns
Type | Description |
---|---|
Task<HostingResourceAvailability> | Details about whether cluster deployment can proceed. |
Overrides
Remarks
The optional reserveMemory
and reservedDisk
parameters
can be used to specify memory and disk that are to be reserved for the host environment. Hosting
manager implementations are free to ignore this when they don't really makse sense.
This is currently used for Hyper-V based clusters running on a user workstation or laptop to ensure that deployed clusters don't adverserly impact the host machine too badly.
These parameters don't really make sense for cloud or dedicated hypervisor hosting environments because those environemnts will still work well when all available resources are consumed.
GetSshEndpoint(string)
Returns the FQDN or IP address (as a string) and the port to use to establish a SSH connection to a specific node.
Declaration
public override (string Address, int Port) GetSshEndpoint(string nodeName)
Parameters
Type | Name | Description |
---|---|---|
string | nodeName | The target node's name. |
Returns
Type | Description |
---|---|
(string Address, int Port) | A (string Address, int Port) tuple. |
Overrides
Remarks
This will return the direct private node endpoint by default. If EnableInternetSshAsync() has been called and is supported by the hosting manager, then this returns the public address of the cluster along with the public NAT port.
Load()
Ensures that the assembly hosting this hosting manager is loaded.
Declaration
public static void Load()
StartClusterAsync()
Starts a cluster if it's not already running.
note
This operation may not be supported for all environments.
Declaration
public override Task StartClusterAsync()
Returns
Type | Description |
---|---|
Task | The tracking Task. |
Overrides
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the hosting environment doesn't support this operation. |
StopClusterAsync(StopMode)
Shuts down a cluster if it's running.
note
This operation may not be supported for all environments.
Declaration
public override Task StopClusterAsync(StopMode stopMode = StopMode.Graceful)
Parameters
Type | Name | Description |
---|---|---|
StopMode | stopMode | Optionally specifies how the cluster nodes are stopped. This defaults to Graceful. |
Returns
Type | Description |
---|---|
Task | The tracking Task. |
Overrides
Exceptions
Type | Condition |
---|---|
NotSupportedException | Thrown if the hosting environment doesn't support this operation. |
UpdateInternetRoutingAsync()
Updates the cluster's load balancer or router to use the current set of ingress rules defined by IngressRules and the egress rules defined by EgressAddressRules.
note
This currently supported only by cloud hosting managers like for Azure, AWS, and Google. This will do nothing for the on-premise hosting managers because we don't have the ability to manage physical routers yet.
Declaration
public override Task UpdateInternetRoutingAsync()
Returns
Type | Description |
---|---|
Task |
Overrides
Validate(ClusterDefinition)
Verifies that a cluster is valid for the hosting manager, customizing properties as required.
Declaration
public override void Validate(ClusterDefinition clusterDefinition)
Parameters
Type | Name | Description |
---|---|---|
ClusterDefinition | clusterDefinition |
Overrides
Exceptions
Type | Condition |
---|---|
ClusterDefinitionException | Thrown if any problems were detected. |