Skip to content

Instantly share code, notes, and snippets.

@j-griffith
Created June 1, 2020 21:39
Show Gist options
  • Save j-griffith/3816735b5fda3175af33fe7073dad01a to your computer and use it in GitHub Desktop.
Save j-griffith/3816735b5fda3175af33fe7073dad01a to your computer and use it in GitHub Desktop.
type Node struct {
// Role indicates details for the type of node specified (controlPlane, Worker, Bootstrap, LoadBalancer etc)
Role string `yaml:"Type"`
// CPUCount specifies the number of virtual CPUs to assign to the specified node type (must satsify template requirements)
// +optional
CPUCount int `yaml:"CPUCount"`
// DiskSizeGB specifies the size of the root disk for the specified node type (must satsify template requirements)
// +optional
DiskSizeGB int `yaml:"DiskSizeGB"`
// MemSizeGB specifies the amount of memory in GB for the specified node type (must satsify template requirements)
// +optional
MemSizeGB int `yaml:"MemSizeGB"`
// Networks provides inputs to specify static IP addressing, this will include definitions needed to configure multiple network interfaces on the node
// +optional
Networks []Network `yaml:"NetworkInterfaces"`
}
// Network provides a mechanism for assigning static networks to a nodes interface
type Network struct {
// Type indicates the type of network, Management or Default and Storage
Type string `yaml:"Type"`
NetworkName string `yaml:"NetworkName"`
Domain string `yaml:"Domain"`
Gateway string `yaml:"Gateway"`
SubnetMask string `yaml:"SubnetMask"`
NameServers []string `yaml:"NameServers"`
IP string `yaml:"IP"`
Device string `yaml:"Device"`
}
type Cluster struct {
// Version indicates the kuberentes version to deploy for the management cluster
// +optional
Version string `yaml:"Version"`
// PodCidr allow an admin to override the default PodCidr and specify their own
// +optional
PodCidr string `yaml:"PodCidr"`
// ServiceCidr allow an admin to override the default ServiceCidr and specify their own
// +optional
ServiceCidr string `yaml:"ServiceCidr"`
// UseMetalLB provides an option to have the current release of metal-lb installed on the management cluster
// +optional
UseMetalLB bool `yaml:"UseMetalLB"`
// LoadBalancerIPs provides a mechanism to specify routable IPs to be used by metal-lb when enabled
// +optional
LoadBalancerIPs []string `yaml:"LoadBalancerIPs"`
// Nodes provides a list of Node objects (control plane and work nodes).
// When specifying Node details your node entries MUST align with the
// ControlPlane and Node Count parameters
// +optional
Nodes []Node `yaml:"Nodes"`
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment