Documentation
¶
Index ¶
- Constants
- type AwsConfiguration
- type Cluster
- func (c *Cluster) ControlPlaneMachineSet() *clusterv1.MachineSet
- func (c *Cluster) MachineProviderConfigs() []*MachineProviderConfig
- func (c *Cluster) NewMachineSetsFromProviderConfigs(providerConfigs []*MachineProviderConfig)
- func (c *Cluster) ProviderConfig() *ControlPlaneProviderConfig
- func (c *Cluster) ServerPools() []*ServerPool
- func (c *Cluster) SetMachineProviderConfigs(providerConfigs []*MachineProviderConfig)
- func (c *Cluster) SetProviderConfig(config *ControlPlaneProviderConfig) error
- type ControlPlaneProviderConfig
- type EgressRule
- type Firewall
- type IAMInstanceProfile
- type IAMPolicy
- type IAMRole
- type IngressRule
- type InternetGW
- type KubernetesAPI
- type MachineProviderConfig
- type Network
- type Project
- type SSH
- type ServerPool
- type Shared
- type Subnet
- type Values
Constants ¶
const ( CloudAmazon = "amazon" CloudAzure = "azure" CloudGoogle = "google" CloudBaremetal = "baremetal" CloudDigitalOcean = "digitalocean" CloudOVH = "ovh" CloudPacket = "packet" CloudECS = "ecs" )
const ( NetworkTypeLocal = "local" NetworkTypePublic = "public" NetworkTypePrivate = "private" )
const ( ServerPoolTypeMaster = "master" ServerPoolTypeNode = "node" ServerPoolTypeHybrid = "hybrid" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AwsConfiguration ¶
type AwsConfiguration struct {
SpotPrice string `json:"spotPrice,omitempty"`
}
type Cluster ¶
type Cluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// Name is the publically available name of the Cluster
Name string `json:"name,omitempty"`
// ClusterAPI is the official Kubernetes cluster API
// We have this wrapped in a larger struct to support the transition
// and possibly allow for more values downstream
ClusterAPI *clusterv1.Cluster `json:"clusterAPI,omitempty"`
// ControlPlane is the control plane MachineSet
ControlPlane *clusterv1.MachineSet `json:"controlPlane,omitempty"`
// MachineSets are a subset of worker machines
MachineSets []*clusterv1.MachineSet `json:"machineSets,omitempty"`
// ControllerDeployment is the controller to use with controller profiles.
// Kubicorn will deploy this resource to the Kubernetes cluster after it is online.
//
// Here we only allow this single Deployment to be added to bootstrapping logic.
// The pattern here says that from an arbitrary deployment, you should be able
// to bootstrap anything else you could need. We default to the kubicorn controller.
ControllerDeployment *appsv1beta2.Deployment `json:"controllerDeployment,omitempty"`
APITokenSecret *v1.Secret `json:"cloudManagerSecret,omitempty"`
}
Cluster is what we use internally in Kubicorn. This used to be the internal Kubicorn API but we are now migrating to the official cluster API (below) This represents a Kubernetes Cluster
func (*Cluster) ControlPlaneMachineSet ¶
func (c *Cluster) ControlPlaneMachineSet() *clusterv1.MachineSet
func (*Cluster) MachineProviderConfigs ¶
func (c *Cluster) MachineProviderConfigs() []*MachineProviderConfig
MachineProviderConfigs will return all MachineProviderConfigs for a cluster
func (*Cluster) NewMachineSetsFromProviderConfigs ¶
func (c *Cluster) NewMachineSetsFromProviderConfigs(providerConfigs []*MachineProviderConfig)
func (*Cluster) ProviderConfig ¶
func (c *Cluster) ProviderConfig() *ControlPlaneProviderConfig
ProviderConfig is a convenience method that will attempt to return a ControlPlaneProviderConfig for a cluster. This is useful for managing the legacy API in a clean way. This will ignore errors from json.Unmarshal and will simply return an empty config.
func (*Cluster) ServerPools ¶
func (c *Cluster) ServerPools() []*ServerPool
func (*Cluster) SetMachineProviderConfigs ¶
func (c *Cluster) SetMachineProviderConfigs(providerConfigs []*MachineProviderConfig)
SetMachineProviderConfig will attempt to match a provider config to a machine set on the "Name" field. If a match cannot be made we warn and move on.
func (*Cluster) SetProviderConfig ¶
func (c *Cluster) SetProviderConfig(config *ControlPlaneProviderConfig) error
SetProviderConfig is a convenience method that will attempt to set a provider config on a particular cluster. Just like it's counterpart ProviderConfig this makes working with the legacy API much easier.
type ControlPlaneProviderConfig ¶
type ControlPlaneProviderConfig struct {
//Name string `json:"name,omitempty"`
Project *Project `json:"project,omitempty"`
CloudId string `json:"cloudId,omitempty"`
//ServerPools []*ServerPool `json:"serverPools,omitempty"`
Cloud string `json:"cloud,omitempty"`
Location string `json:"location,omitempty"`
SSH *SSH `json:"SSH,omitempty"`
Network *Network `json:"network,omitempty"`
Values *Values `json:"values,omitempty"`
KubernetesAPI *KubernetesAPI `json:"kubernetesAPI,omitempty"`
GroupIdentifier string `json:"groupIdentifier,omitempty"`
}
ControlPlaneProviderConfig is the legacy Kubicorn API. We are temporarily storing this as a ProviderConfig and these fields will slowly transition into fields in the official cluster API
type EgressRule ¶
type EgressRule struct {
EgressToPort string `json:"engressToPort,omitempty"` //this thing should be a string.
EgressDestination string `json:"engressDestination,omitempty"`
EgressProtocol string `json:"engressProtocol,omitempty"`
}
EgressRule parameters for the firewall
type Firewall ¶
type Firewall struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Identifier string `json:"identifier,omitempty"`
IngressRules []*IngressRule `json:"ingressRules,omitempty"`
EgressRules []*EgressRule `json:"egressRules,omitempty"`
Name string `json:"name,omitempty"`
}
Firewall contains the configuration a user expects to be applied.
type IAMInstanceProfile ¶
type IAMRole ¶
type IAMRole struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Name string `json:"name,omitempty"`
Identifier string `json:"identifier,omitempty"`
Policies []*IAMPolicy `json:"policies,omitempty"`
PolicyAttachments []string `json:"policyAttachments,omitempty"`
}
type IngressRule ¶
type IngressRule struct {
IngressFromPort string `json:"ingressFromPort,omitempty"`
IngressToPort string `json:"ingressToPort,omitempty"` //this thing should be a string.
IngressSource string `json:"ingressSource,omitempty"`
IngressProtocol string `json:"ingressProtocol,omitempty"`
}
IngressRule parameters for the firewall
type InternetGW ¶
type KubernetesAPI ¶
type MachineProviderConfig ¶
type MachineProviderConfig struct {
// Name is required as it is how we will match our configs
// to machineSets later
Name string `json:"name,omitempty"`
// The legacy configuration for a MachineSet
ServerPool *ServerPool `json:"serverPool,omitempty"`
}
ControlPlaneProviderConfig is less exciting ProviderConfig, but contains everything defined in a ServerPool
type Network ¶
type Network struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
CIDR string `json:"cidr,omitempty"`
Identifier string `json:"identifier,omitempty"`
Type string `json:"type,omitempty"`
InternetGW *InternetGW `json:"internetgw,omitempty"`
}
type SSH ¶
type SSH struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Name string `json:"name,omitempty"`
User string `json:"user,omitempty"`
Identifier string `json:"identifier,omitempty"`
PublicKeyPath string `json:"publicKeyPath,omitempty"`
PublicKeyData []byte `json:"publicKeyData,omitempty"`
PublicKeyFingerprint string `json:"publicKeyFingerprint,omitempty"`
Port string `json:"port,omitempty"`
}
type ServerPool ¶
type ServerPool struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Identifier string `json:"identifier,omitempty"`
MinCount int `json:"minCount,omitempty"`
MaxCount int `json:"maxCount,omitempty"`
Type string `json:"type,omitempty"`
Name string `json:"name,omitempty"`
Image string `json:"image,omitempty"`
Size string `json:"size,omitempty"`
InstanceProfile *IAMInstanceProfile `json:"instanceProfile,omitempty"`
BootstrapScripts []string `json:"bootstrapScripts,omitempty"`
Subnets []*Subnet `json:"subnets,omitempty"`
Firewalls []*Firewall `json:"firewalls,omitempty"`
AwsConfiguration *AwsConfiguration `json:"awsconfiguration,omitempty"`
GeneratedNodeUserData []byte `json:"generatedNodeUserData,omitempty"`
}
type Subnet ¶
type Subnet struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Identifier string `json:"identifier,omitempty"`
CIDR string `json:"cidr,omitempty"`
Location string `json:"location,omitempty"`
Zone string `json:"zone,omitempty"`
Name string `json:"name,omitempty"`
}