Documentation ¶
Index ¶
- Constants
- Variables
- func ValidateQuotaBackendBytes(bytes int) error
- func ValidateRaid0Mounts(volumes []NodeVolumeMount, raid0s []Raid0Mount) error
- func ValidateVolumeMounts(volumes []NodeVolumeMount) error
- type APIEndpoint
- type APIEndpointLB
- func (e APIEndpointLB) ClassicLoadBalancer() bool
- func (e APIEndpointLB) LoadBalancerV2() bool
- func (e APIEndpointLB) ManageELB() bool
- func (e APIEndpointLB) ManageELBRecordSet() bool
- func (e APIEndpointLB) ManageSecurityGroup() bool
- func (e APIEndpointLB) NetworkLoadBalancer() bool
- func (e APIEndpointLB) Private() bool
- func (e APIEndpointLB) RecordSetTTL() int
- func (e *APIEndpointLB) UnmarshalYAML(unmarshal func(interface{}) error) error
- func (e APIEndpointLB) Validate() error
- type APIEndpoints
- type APIServerAggregator
- type APIServerVolume
- type APIServerVolumes
- type ARN
- type AWSIAM
- type Addons
- type Admission
- type AlwaysPullImages
- type AmazonSsmAgent
- type AmazonVPC
- type Asset
- type AssetID
- type AssetLocation
- type AuditLog
- type Authentication
- type AutoScalingGroup
- type AwsEnvironment
- type AwsNodeLabels
- type BashPrompt
- type CIDRRange
- type CIDRRanges
- type CalicoConfig
- type CloudControllerManager
- type CloudFormation
- type CloudFormationSpec
- type CloudWatchLogging
- type Cluster
- func (c Cluster) APIAccessAllowedSourceCIDRsForControllerSG() []string
- func (c *Cluster) AvailabilityZones() []string
- func (c *Cluster) ConsumeDeprecatedKeys()
- func (c Cluster) ControlPlaneStackName() string
- func (c *Cluster) ControllerFeatureGates() FeatureGates
- func (c Cluster) EtcdIndexEnvVarName() string
- func (c Cluster) EtcdNodeEnvFileName() string
- func (c Cluster) ExternalDNSNames() []string
- func (c *Cluster) Load() error
- func (c Cluster) NodeLabels() NodeLabels
- func (c *Cluster) SetDefaults() error
- func (c Cluster) StackNameEnvFileName() string
- func (c Cluster) StackNameEnvVarName() string
- func (c *Cluster) ValidateExistingVPC(existingVPCCIDR string, existingSubnetCIDRS []string) error
- type ClusterOptions
- type ClusterSpec
- type CommandLineFlag
- type CommandLineFlags
- type ComputeResources
- type ComputedDeploymentSettings
- type ContainerStorageInterface
- type ContainerVolumeMount
- type Contents
- type Controller
- func (c Controller) ControllerRollingUpdateMinInstancesInService() int
- func (c Controller) InstanceProfileRole() string
- func (c Controller) InstanceProfileRoles() string
- func (c Controller) LaunchConfigurationLogicalName() string
- func (c Controller) LogicalName() string
- func (c Controller) MaxControllerCount() int
- func (c Controller) MinControllerCount() int
- func (c Controller) SecurityGroupRefs() []string
- func (c Controller) Validate() error
- type ControllerElb
- type ControllerManager
- type CoreDNSLocal
- type CustomApiServerSettings
- type CustomFile
- type CustomSystemdUnit
- type CustomSystemdUnitDropIn
- type DNSMasq
- type DataVolume
- type DefaultWorkerSettings
- type DeploymentSettings
- func (s DeploymentSettings) AllSubnets() Subnets
- func (c DeploymentSettings) ApiServerLeaseEndpointReconciler() (bool, error)
- func (c DeploymentSettings) AssetsEncryptionEnabled() bool
- func (c DeploymentSettings) FindNATGatewayForPrivateSubnet(s Subnet) (*NATGateway, error)
- func (c DeploymentSettings) FindSubnetMatching(condition Subnet) Subnet
- func (c DeploymentSettings) NATGateways() []NATGateway
- func (c DeploymentSettings) PrivateSubnets() Subnets
- func (c DeploymentSettings) PublicSubnets() Subnets
- func (c DeploymentSettings) Validate() (*DeploymentValidationResult, error)
- func (s DeploymentSettings) ValidateNodePool(name string) error
- func (c DeploymentSettings) WithDefaultsFrom(main DeploymentSettings) DeploymentSettings
- type DeploymentValidationResult
- type EC2Instance
- type EncryptionAtRest
- type EphemeralImageStorage
- type Etcd
- func (e Etcd) AdvertisedFQDNTagKey() string
- func (e Etcd) EIPAllocationIDTagKey() string
- func (e Etcd) FormatOpts() string
- func (e Etcd) HostedZoneLogicalName() (string, error)
- func (e Etcd) HostedZoneManaged() bool
- func (e Etcd) HostedZoneRef() (string, error)
- func (e Etcd) InternalDomainName() (string, error)
- func (e Etcd) KMSKeyARN() string
- func (e Etcd) LogicalName() string
- func (e Etcd) NameTagKey() string
- func (e Etcd) NetworkInterfaceDeviceIndex() int
- func (e Etcd) NetworkInterfaceIDTagKey() string
- func (e Etcd) NodeShouldHaveEIP() bool
- func (e Etcd) NodeShouldHaveSecondaryENI() bool
- func (e Etcd) SecurityGroupRefs() []string
- func (e Etcd) Validate() error
- func (e Etcd) Version() string
- type EtcdCluster
- func (c EtcdCluster) EC2InternalDomainUsed() bool
- func (c EtcdCluster) GetMemberIdentityProvider() string
- func (c EtcdCluster) LogicalName() string
- func (c EtcdCluster) MajorMinorVersion() string
- func (c EtcdCluster) NodeShouldHaveEIP() bool
- func (c EtcdCluster) NodeShouldHaveSecondaryENI() bool
- func (e EtcdCluster) RecordSetsManaged() bool
- type EtcdDisasterRecovery
- type EtcdExistingState
- type EtcdNode
- type EtcdSettings
- type EtcdSnapshot
- type EventRateLimit
- type Experimental
- type FeatureGates
- type Files
- type FlannelConfig
- type Gpu
- type GpuSupport
- type Helm
- type HelmRelease
- type HelmReleaseFileset
- type HelmReleases
- type HostOS
- type HostedZone
- type IAM
- type IAMConfig
- type IAMInstanceProfile
- type IAMManagedPolicy
- type IAMPolicy
- type IAMPolicyStatement
- type IAMPolicyStatements
- type IAMRole
- type IPVSMode
- type Identifier
- type Image
- type InfrastructureValidationResult
- type InternetGateway
- type KeyPairSpec
- type KubeApiServer
- type KubeClusterSettings
- type KubeDns
- type KubeDnsAutoscaler
- type KubeProxy
- type KubeResourcesAutosave
- type KubeScheduler
- type Kubelet
- type KubeletSpec
- type Kubernetes
- type KubernetesAPIServer
- type KubernetesAuthentication
- type KubernetesManifest
- type KubernetesManifests
- type LaunchSpecification
- type LoadBalancer
- type LocalStreaming
- type MOTDBanner
- type Machine
- type MachineRoles
- type MachineSpec
- type Metadata
- type MetricsServer
- type MixedInstances
- type NATGateway
- type NATGatewayConfig
- type Networking
- type Node
- type NodeDrainer
- type NodeLabels
- type NodeSettings
- type NodeVolumeMount
- type NvidiaSetting
- type Oidc
- type Outputs
- type OwnerReferencesPermissionEnforcement
- type PKI
- type PartDesc
- type PersistentVolumeClaimResize
- type Plugin
- type PluginConfig
- type PluginConfigs
- type PluginSpec
- type PodAutoscalerUseRestClient
- type Prometheus
- type Raid0Mount
- type Region
- func (r Region) IsChina() bool
- func (r Region) IsEmpty() bool
- func (r Region) IsGovcloud() bool
- func (r Region) Partition() string
- func (r Region) PrivateDomainName() string
- func (r Region) PublicComputeDomainName() string
- func (r Region) PublicDomainName() string
- func (r Region) S3Endpoint(bucket string) string
- func (r Region) String() string
- func (r Region) SupportsKMS() bool
- func (r Region) SupportsNetworkLoadBalancers() bool
- type Rescheduler
- type ResourceQuota
- type Resources
- type RootVolume
- type RouteTable
- type S3Folder
- type S3Folders
- type SecurityGroup
- type SelfHosting
- type ShellColour
- func (i ShellColour) IsAShellColour() bool
- func (i ShellColour) MarshalYAML() (interface{}, error)
- func (colour ShellColour) Off() string
- func (colour ShellColour) On() string
- func (colour ShellColour) PCOff() string
- func (colour ShellColour) PCOn() string
- func (i ShellColour) String() string
- func (i *ShellColour) UnmarshalYAML(unmarshal func(interface{}) error) error
- type Source
- type SpotFleet
- type Stack
- type StackNameOverrides
- type StackTemplateOptions
- type Stacks
- type Subnet
- func NewExistingPrivateSubnet(az string, id string) Subnet
- func NewExistingPublicSubnet(az string, id string) Subnet
- func NewImportedPrivateSubnet(az string, name string) Subnet
- func NewImportedPublicSubnet(az string, name string) Subnet
- func NewPrivateSubnet(az string, cidr string) Subnet
- func NewPrivateSubnetFromFn(az string, fn string) Subnet
- func NewPrivateSubnetWithPreconfiguredNATGateway(az string, cidr string, ngw string) Subnet
- func NewPrivateSubnetWithPreconfiguredNATGatewayEIP(az string, cidr string, alloc string) Subnet
- func NewPrivateSubnetWithPreconfiguredRouteTable(az string, cidr string, rtb string) Subnet
- func NewPublicSubnet(az string, cidr string) Subnet
- func NewPublicSubnetFromFn(az string, fn string) Subnet
- func NewPublicSubnetWithPreconfiguredRouteTable(az string, cidr string, rtb string) Subnet
- func (s *Subnet) InternetGatewayRouteLogicalName() string
- func (s *Subnet) LogicalName() string
- func (s *Subnet) LogicalNameOrErr() (string, error)
- func (s *Subnet) ManageNATGateway() bool
- func (s *Subnet) ManageRouteTable() bool
- func (s *Subnet) ManageRouteToInternet() bool
- func (s *Subnet) ManageRouteToNATGateway() bool
- func (s *Subnet) ManageSubnet() bool
- func (s *Subnet) MapPublicIPs() bool
- func (s *Subnet) NATGatewayRouteLogicalName() string
- func (s *Subnet) Public() bool
- func (s *Subnet) Ref() string
- func (s *Subnet) RouteTableID() string
- func (s *Subnet) RouteTableLogicalName() (string, error)
- func (s *Subnet) RouteTableRef() (string, error)
- func (s *Subnet) Validate() error
- type SubnetReference
- type Subnets
- type Systemd
- type SystemdMessageResponse
- type SystemdUnit
- type SystemdUnits
- type Tags
- type Taint
- type Taints
- type TargetGroup
- type UnknownKeys
- type UserData
- type UserDataOption
- type UserDataPart
- type UserDataValidateFunc
- type UserSuppliedArgs
- type VPC
- type Values
- type WaitSignal
- type Webhook
- type Worker
- type WorkerNodePool
- func (c WorkerNodePool) LaunchConfigurationLogicalName() string
- func (c WorkerNodePool) LaunchTemplateLogicalName() string
- func (c WorkerNodePool) LogicalName() string
- func (c WorkerNodePool) MaxCount() int
- func (c WorkerNodePool) MinCount() int
- func (c WorkerNodePool) NodePoolLogicalName() string
- func (c WorkerNodePool) RollingUpdateMinInstancesInService() int
- func (c *WorkerNodePool) UnmarshalYAML(unmarshal func(interface{}) error) error
- func (c WorkerNodePool) Validate(experimental Experimental) error
- func (c WorkerNodePool) WithDefaultsFrom(main DefaultWorkerSettings) WorkerNodePool
Constants ¶
const ( // DefaultAPIEndpointName is the default endpoint name used when you've omitted `apiEndpoints` but not `externalDNSName` DefaultAPIEndpointName = "Default" // DefaultLoadBalancerType is the default load balancer to be provisioned by kube-aws for the API endpoints DefaultLoadBalancerType = "classic" )
const ( // Experimental CSI support default image tags... CSIDefaultProvisionerImageTag = "v1.3.1" CSIDefaultAttacherImageTag = "v1.2.1" CSIDefaultLivenessProbeImageTag = "v1.1.0" CSIDefaultNodeDriverRegistrarTag = "v1.2.0" CSIDefaultAmazonEBSDriverImageTag = "v0.4.0" )
const ( MaxQuotaBackendBytes int = 8 * 1024 * 1024 * 1024 DefaultQuotaBackendBytes int = 2 * 1024 * 1024 * 1024 )
const ( MemberIdentityProviderEIP = "eip" MemberIdentityProviderENI = "eni" )
const ( USERDATA_S3 = "s3" USERDATA_INSTANCE = "instance" USERDATA_INSTANCE_SCRIPT = "instance-script" )
const DefaultControllerCount = 1
const DefaultRecordSetTTL = 300
DefaultRecordSetTTL is the default value for the loadBalancer.recordSetTTL key
Variables ¶
var ETCD_VERSION string = ""
var GPUEnabledInstanceFamily = []string{"p2", "p3", "g2", "g3"}
var KUBERNETES_VERSION = "v99.99"
The version of kubernetes should be set through the top level 'build' script (not hidden away here)
var ShellColourCodeMap map[ShellColour]string = map[ShellColour]string{ DefaultColour: `0m`, Black: `0;30m`, Red: `0;31m`, Green: `0;32m`, Yellow: `0;33m`, Blue: `0;34m`, Magenta: `0;35m`, Cyan: `0;36m`, White: `0;37m`, DarkGray: `1;90m`, LightRed: `1;31m`, LightGreen: `1;32m`, LightYellow: `1;33m`, LightBlue: `1;34m`, LightMagenta: `1;35m`, LightCyan: `1;36m`, LightWhite: `1;37m`, }
Functions ¶
func ValidateRaid0Mounts ¶
func ValidateRaid0Mounts(volumes []NodeVolumeMount, raid0s []Raid0Mount) error
func ValidateVolumeMounts ¶
func ValidateVolumeMounts(volumes []NodeVolumeMount) error
Types ¶
type APIEndpoint ¶
type APIEndpoint struct { // Name is the unique name of this API endpoint used by kube-aws for identifying this API endpoint Name string `yaml:"name,omitempty"` // DNSName is the FQDN of this endpoint // A record set may or may not be created with this DNS name. // TLS certificates generated by kube-aws would contain this name in the list of common names. DNSName string `yaml:"dnsName,omitempty"` // LoadBalancer is a set of an ELB and relevant settings and resources to serve a Kubernetes API hosted by controller nodes LoadBalancer APIEndpointLB `yaml:"loadBalancer,omitempty"` //DNSRoundRobin APIDNSRoundRobin `yaml:"dnsRoundRobin,omitempty"` UnknownKeys `yaml:",inline"` }
APIEndpoint is a Kubernetes API endpoint to which various clients connect. Each endpoint can be served by an existing ELB or a kube-aws managed ELB.
func (APIEndpoint) Validate ¶
func (e APIEndpoint) Validate() error
Validate returns an error when there's any user error in the `apiEndpoint` settings
type APIEndpointLB ¶
type APIEndpointLB struct { // APIAccessAllowedSourceCIDRs is network ranges of sources you'd like Kubernetes API accesses to be allowed from, in CIDR notation APIAccessAllowedSourceCIDRs CIDRRanges `yaml:"apiAccessAllowedSourceCIDRs,omitempty"` // Identifier specifies an existing load-balancer used for load-balancing controller nodes and serving this endpoint Identifier Identifier `yaml:",inline"` // Managed is set to true when want to create an ELB for this API endpoint. It is false by default i.e. considered to be false if nil Managed *bool `yaml:"managed,omitempty"` // Subnets contains all the subnets assigned to this load-balancer. Specified only when this load balancer is not reused but managed one SubnetReferences []SubnetReference `yaml:"subnets,omitempty"` // PrivateSpecified determines the resulting load balancer uses an internal elb for an endpoint PrivateSpecified *bool `yaml:"private,omitempty"` // RecordSetManaged represents if the user wants kube-aws not to create a record set for this API load balancer // i.e. the user wants to configure Route53 or one's own DNS oneself RecordSetManaged *bool `yaml:"recordSetManaged,omitempty"` // RecordSetTTLSpecified is the TTL for the record set to this load balancer. Defaults to 300 if nil RecordSetTTLSpecified *int `yaml:"recordSetTTL,omitempty"` // HostedZone is where the resulting Alias record is created for an endpoint HostedZone HostedZone `yaml:"hostedZone,omitempty"` //// SecurityGroups contains extra security groups must be associated to the lb serving API requests from clients //SecurityGroups []SecurityGroup // SecurityGroupIds represents SGs associated to this LB. Required when APIAccessAllowedSourceCIDRs is explicitly set to empty SecurityGroupIds []string `yaml:"securityGroupIds"` // Load balancer type. It is 'classic' by default, but can be changed to 'network' Type *string `yaml:"type,omitempty"` }
APIEndpointLB is a set of an ELB and relevant settings and resources to serve a Kubernetes API hosted by controller nodes
func (APIEndpointLB) ClassicLoadBalancer ¶
func (e APIEndpointLB) ClassicLoadBalancer() bool
ClassicLoadBalancer returns true if the load balancer is a classic ELB
func (APIEndpointLB) LoadBalancerV2 ¶
func (e APIEndpointLB) LoadBalancerV2() bool
LoadBalancerV2 returns true if the load balancer is a ELBV2 load balancer (only network load balancer is supported for now)
func (APIEndpointLB) ManageELB ¶
func (e APIEndpointLB) ManageELB() bool
ManageELB returns true if an ELB should be managed by kube-aws
func (APIEndpointLB) ManageELBRecordSet ¶
func (e APIEndpointLB) ManageELBRecordSet() bool
ManageELBRecordSet returns true if kube-aws should create a record set for the ELB
func (APIEndpointLB) ManageSecurityGroup ¶
func (e APIEndpointLB) ManageSecurityGroup() bool
ManageSecurityGroup returns true if kube-aws should create a security group for this ELB
func (APIEndpointLB) NetworkLoadBalancer ¶
func (e APIEndpointLB) NetworkLoadBalancer() bool
NetworkLoadBalancer returns true if the load balancer is a ELBV2 network load balancer
func (APIEndpointLB) Private ¶
func (e APIEndpointLB) Private() bool
Private returns true when this LB is a private one i.e. the `private` field is explicitly set to true
func (APIEndpointLB) RecordSetTTL ¶
func (e APIEndpointLB) RecordSetTTL() int
RecordSetTTL is the TTL for the record set to this load balancer. Defaults to 300 if `recordSetTTL` is omitted/set to nil
func (*APIEndpointLB) UnmarshalYAML ¶
func (e *APIEndpointLB) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML unmarshals YAML data to an APIEndpointLB object with defaults This doesn't work due to a go-yaml issue described in http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/ And that's why we need to implement `func (e APIEndpointLB) RecordSetTTL() int` for defaulting. TODO Migrate to ghodss/yaml
func (APIEndpointLB) Validate ¶
func (e APIEndpointLB) Validate() error
Validate returns an error when there's any user error in the settings of the `loadBalancer` field
type APIEndpoints ¶
type APIEndpoints []APIEndpoint
func NewDefaultAPIEndpoints ¶
func NewDefaultAPIEndpoints(dnsName string, subnets []SubnetReference, hostedZoneId string, recordSetTTL int, private bool) APIEndpoints
NewDefaultAPIEndpoints creates the slice of API endpoints containing only the default one which is with arbitrary DNS name and an ELB
func (APIEndpoints) HasNetworkLoadBalancers ¶
func (e APIEndpoints) HasNetworkLoadBalancers() bool
HasNetworkLoadBalancers returns true if there's any API endpoint load balancer of type 'network'
func (APIEndpoints) Validate ¶
func (e APIEndpoints) Validate() error
Validate returns an error if there's any user error in the settings of apiEndpoints
type APIServerAggregator ¶
type APIServerAggregator struct {
Enabled bool `yaml:"enabled"`
}
type APIServerVolume ¶
type APIServerVolumes ¶
type APIServerVolumes []APIServerVolume
type ARN ¶
type ARN struct { Arn string `yaml:"arn,omitempty"` ArnFromStackOutput string `yaml:"arnFromStackOutput,omitempty"` ArnFromFn string `yaml:"arnFromFn,omitempty"` }
func (ARN) HasArn ¶
HasArn returns true when the id of a resource i.e. either `arn` or `arnFromStackOutput` is specified
func (ARN) OrGetAttArn ¶
type AWSIAM ¶
type AWSIAM struct { Enabled bool `yaml:"enabled"` BinaryDownloadURL string `yaml:"binaryDownloadURL"` ClusterID string `yaml:"clusterID"` }
func (AWSIAM) BinaryStorePathes ¶
type Addons ¶
type Addons struct { Rescheduler Rescheduler `yaml:"rescheduler"` MetricsServer MetricsServer `yaml:"metricsServer,omitempty"` Prometheus Prometheus `yaml:"prometheus"` APIServerAggregator APIServerAggregator `yaml:"apiserverAggregator"` UnknownKeys `yaml:",inline"` }
type Admission ¶
type Admission struct { AlwaysPullImages AlwaysPullImages `yaml:"alwaysPullImages"` OwnerReferencesPermissionEnforcement OwnerReferencesPermissionEnforcement `yaml:"ownerReferencesPermissionEnforcement"` EventRateLimit EventRateLimit `yaml:"eventRateLimit"` }
type AlwaysPullImages ¶
type AlwaysPullImages struct {
Enabled bool `yaml:"enabled"`
}
type AmazonSsmAgent ¶
type AmazonVPC ¶
type AmazonVPC struct {
Enabled bool `yaml:"enabled"`
}
func (AmazonVPC) MaxPodsScript ¶
func (a AmazonVPC) MaxPodsScript() provisioner.Content
type Asset ¶
type Asset struct { AssetLocation Content string }
type AssetID ¶
func NewAssetID ¶
type AssetLocation ¶
func (AssetLocation) S3URL ¶
func (l AssetLocation) S3URL() (string, error)
func (AssetLocation) URL ¶
func (l AssetLocation) URL() (string, error)
type Authentication ¶
type Authentication struct {
Webhook Webhook `yaml:"webhook"`
}
type AutoScalingGroup ¶
type AutoScalingGroup struct { MinSize *int `yaml:"minSize,omitempty"` MaxSize int `yaml:"maxSize,omitempty"` RollingUpdateMinInstancesInService *int `yaml:"rollingUpdateMinInstancesInService,omitempty"` MixedInstances MixedInstances `yaml:"mixedInstances,omitempty"` UnknownKeys `yaml:",inline"` }
Configuration specific to auto scaling groups
func (AutoScalingGroup) Validate ¶
func (asg AutoScalingGroup) Validate() error
type AwsEnvironment ¶
type AwsNodeLabels ¶
type AwsNodeLabels struct {
Enabled bool `yaml:"enabled"`
}
type BashPrompt ¶
type BashPrompt struct { Enabled bool `yaml:"enabled,omitempty"` IncludePWD bool `yaml:"include-pwd,omitempty"` IncludeHostname bool `yaml:"include-hostname,omitempty"` IncludeUser bool `yaml:"include-user,omitempty"` ClusterColour ShellColour `yaml:"cluster-colour,omitempty"` Divider string `yaml:"divider,omitempty"` DividerColour ShellColour `yaml:"divider-colour,omitempty"` EtcdLabel string `yaml:"etcd-label,omitempty"` EtcdColour ShellColour `yaml:"etcd-colour,omitempty"` ControllerLabel string `yaml:"controller-label,omitempty"` ControllerColour ShellColour `yaml:"controller-colour,omitempty"` WorkerLabel string `yaml:"worker-label,omitempty"` WorkerColour ShellColour `yaml:"worker-colour,omitempty"` RootUserColour ShellColour `yaml:"root-user-colour,omitempty"` NonRootUserColour ShellColour `yaml:"non-root-user-colour,omitempty"` DirectoryColour ShellColour `yaml:"directory-colour,omitempty"` }
func NewDefaultBashPrompt ¶
func NewDefaultBashPrompt() BashPrompt
type CIDRRange ¶
type CIDRRange struct {
// contains filtered or unexported fields
}
CIDRRange represents an IP network range in CIDR notation See http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html#cfn-ec2-security-group-ingress-cidrip
func (*CIDRRange) UnmarshalYAML ¶
type CIDRRanges ¶
type CIDRRanges []CIDRRange
CIDRRanges represents IP network ranges in CIDR notation
func DefaultCIDRRanges ¶
func DefaultCIDRRanges() CIDRRanges
type CalicoConfig ¶ added in v0.16.2
type CalicoConfig struct {
VxlanMode bool `yaml:"vxlanMode"`
}
type CloudControllerManager ¶ added in v0.15.1
type CloudControllerManager struct {
Enabled bool `yaml:"enabled"`
}
type CloudFormation ¶
type CloudFormation struct { RoleARN string `yaml:"roleARN,omitempty"` StackNameOverrides StackNameOverrides `yaml:"stackNameOverrides,omitempty"` }
type CloudFormationSpec ¶
type CloudFormationSpec struct {
Stacks `yaml:"stacks,omitempty"`
}
CloudFormation represents customizations to CloudFormation-related settings and configurations
type CloudWatchLogging ¶
type CloudWatchLogging struct { Enabled bool `yaml:"enabled"` RetentionInDays int `yaml:"retentionInDays"` LocalStreaming `yaml:"localStreaming"` }
func (*CloudWatchLogging) MergeIfEmpty ¶
func (c *CloudWatchLogging) MergeIfEmpty(other CloudWatchLogging)
type Cluster ¶
type Cluster struct { KubeClusterSettings `yaml:",inline"` DeploymentSettings `yaml:",inline"` DefaultWorkerSettings `yaml:",inline"` Controller Controller `yaml:"controller,omitempty"` EtcdSettings `yaml:",inline"` AdminAPIEndpointName string `yaml:"adminAPIEndpointName,omitempty"` RecordSetTTL int `yaml:"recordSetTTL,omitempty"` TLSCADurationDays int `yaml:"tlsCADurationDays,omitempty"` TLSCertDurationDays int `yaml:"tlsCertDurationDays,omitempty"` HostedZoneID string `yaml:"hostedZoneId,omitempty"` Worker `yaml:"worker"` PluginConfigs PluginConfigs `yaml:"kubeAwsPlugins,omitempty"` // SSHAccessAllowedSourceCIDRs is network ranges of sources you'd like SSH accesses to be allowed from, in CIDR notation SSHAccessAllowedSourceCIDRs CIDRRanges `yaml:"sshAccessAllowedSourceCIDRs,omitempty"` CustomApiServerSettings CustomApiServerSettings `yaml:"customApiServerSettings,omitempty"` CustomSettings map[string]interface{} `yaml:"customSettings,omitempty"` KubeResourcesAutosave `yaml:"kubeResourcesAutosave,omitempty"` OpenICMP bool `yaml:"openICMP,omitempty"` }
Cluster is the container of all the configurable parameters of a kube-aws cluster, customizable via cluster.yaml
func NewDefaultCluster ¶
func NewDefaultCluster() *Cluster
func (Cluster) APIAccessAllowedSourceCIDRsForControllerSG ¶
APIAccessAllowedSourceCIDRsForControllerSG returns all the CIDRs of Kubernetes API endpoints that controller nodes must allow access from
func (*Cluster) AvailabilityZones ¶
Returns the availability zones referenced by the cluster configuration
func (*Cluster) ConsumeDeprecatedKeys ¶
func (c *Cluster) ConsumeDeprecatedKeys()
func (Cluster) ControlPlaneStackName ¶
func (*Cluster) ControllerFeatureGates ¶
func (c *Cluster) ControllerFeatureGates() FeatureGates
func (Cluster) EtcdIndexEnvVarName ¶
func (Cluster) EtcdNodeEnvFileName ¶
func (Cluster) ExternalDNSNames ¶
ExternalDNSNames returns all the DNS names of Kubernetes API endpoints should be covered in the TLS cert for k8s API
func (Cluster) NodeLabels ¶
func (c Cluster) NodeLabels() NodeLabels
func (*Cluster) SetDefaults ¶
func (Cluster) StackNameEnvFileName ¶
func (Cluster) StackNameEnvVarName ¶
type ClusterOptions ¶
type ClusterSpec ¶
type ClusterSpec struct { // Values represents the values available in templates Values `yaml:"values,omitempty"` // CloudFormation represents customizations to CloudFormation-related settings and configurations CloudFormation CloudFormationSpec `yaml:"cloudformation,omitempty"` // Helm represents what are injected into the resulting K8S cluster via Helm - a package manager for K8S Helm `yaml:"helm,omitempty"` // Kubernetes represents what are injected into the resulting K8S Kubernetes Kubernetes `yaml:"kubernetes,omitempty"` // Machine represents what are injected into each machines managed by kube-aws Machine `yaml:"machine,omitempty"` // PKI extends the cluster PKI managed by kube-aws PKI `yaml:"pki,omitempty"` }
Cluster is the configuration part of a plugin which is used to append arbitrary configs into various resources managed by kube-aws
type CommandLineFlag ¶
type CommandLineFlag struct { // Name is the name of a command-line flag passed to the k8s apiserver. // For example, a name is "oidc-issuer-url" for the flag `--oidc-issuer-url`. Name string `yaml:"name,omitempty"` // Value is a golang text template resulting to the value of a command-line flag passed to the k8s apiserver Value string `yaml:"value,omitempty"` }
type CommandLineFlags ¶
type CommandLineFlags []CommandLineFlag
type ComputeResources ¶
type ComputeResources struct { Requests ResourceQuota `yaml:"requests,omitempty"` Limits ResourceQuota `yaml:"limits,omitempty"` }
type ComputedDeploymentSettings ¶
type ComputedDeploymentSettings struct {
AMI string
}
Part of configuration which can't be provided via user input but is computed from user input
type ContainerStorageInterface ¶ added in v0.15.1
type ContainerStorageInterface struct { Enabled bool `yaml:"enabled"` Debug bool `yaml:"debug"` CSIProvisioner Image `yaml:"csiProvisioner"` CSIAttacher Image `yaml:"csiAttacher"` CSILivenessProbe Image `yaml:"csiLivenessProbe"` CSINodeDriverRegistrar Image `yaml:"csiNodeDriverRegistrar"` AmazonEBSDriver Image `yaml:"amazonEBSDriver"` }
type ContainerVolumeMount ¶
type ContainerVolumeMount string
func (ContainerVolumeMount) MountDockerRW ¶ added in v0.16.0
func (m ContainerVolumeMount) MountDockerRW() string
func (ContainerVolumeMount) ToRktRunArgs ¶
func (m ContainerVolumeMount) ToRktRunArgs() []string
type Contents ¶
type Contents struct { provisioner.RemoteFileSpec `yaml:",inline"` // TODO Better naming UnknownKeys map[string]interface{} `yaml:",inline"` }
type Controller ¶
type Controller struct { AutoScalingGroup AutoScalingGroup `yaml:"autoScalingGroup,omitempty"` EC2Instance `yaml:",inline"` LoadBalancer ControllerElb `yaml:"loadBalancer,omitempty"` IAMConfig IAMConfig `yaml:"iam,omitempty"` SecurityGroupIds []string `yaml:"securityGroupIds"` VolumeMounts []NodeVolumeMount `yaml:"volumeMounts,omitempty"` Subnets Subnets `yaml:"subnets,omitempty"` CustomFiles []CustomFile `yaml:"customFiles,omitempty"` CustomSystemdUnits []CustomSystemdUnit `yaml:"customSystemdUnits,omitempty"` NodeSettings `yaml:",inline"` UnknownKeys `yaml:",inline"` }
TODO Merge this with WorkerNodePool
func NewDefaultController ¶
func NewDefaultController() Controller
func (Controller) ControllerRollingUpdateMinInstancesInService ¶
func (c Controller) ControllerRollingUpdateMinInstancesInService() int
func (Controller) InstanceProfileRole ¶
func (c Controller) InstanceProfileRole() string
func (Controller) InstanceProfileRoles ¶
func (c Controller) InstanceProfileRoles() string
func (Controller) LaunchConfigurationLogicalName ¶
func (c Controller) LaunchConfigurationLogicalName() string
func (Controller) LogicalName ¶
func (c Controller) LogicalName() string
func (Controller) MaxControllerCount ¶
func (c Controller) MaxControllerCount() int
func (Controller) MinControllerCount ¶
func (c Controller) MinControllerCount() int
func (Controller) SecurityGroupRefs ¶
func (c Controller) SecurityGroupRefs() []string
func (Controller) Validate ¶
func (c Controller) Validate() error
type ControllerElb ¶
type ControllerManager ¶
type ControllerManager struct { ComputeResources ComputeResources `yaml:"resources,omitempty"` Flags CommandLineFlags `yaml:"flags,omitempty"` }
type CoreDNSLocal ¶ added in v0.14.7
type CoreDNSLocal struct { Enabled bool `yaml:"enabled"` ComputeResources ComputeResources `yaml:"resources,omitempty"` }
type CustomApiServerSettings ¶
type CustomFile ¶
type CustomFile struct { Path string `yaml:"path"` Permissions uint `yaml:"permissions"` Content string `yaml:"content,omitempty"` Template string `yaml:"template,omitempty"` Type string `yaml:"type,omitempty"` UnknownKeys `yaml:",inline"` }
func (CustomFile) Encrypted ¶
func (c CustomFile) Encrypted() bool
func (CustomFile) GzippedBase64Content ¶
func (c CustomFile) GzippedBase64Content() string
func (CustomFile) PermissionsString ¶
func (c CustomFile) PermissionsString() string
func (CustomFile) RenderContent ¶
func (c CustomFile) RenderContent(ctx interface{}) (string, error)
func (CustomFile) RenderGzippedBase64Content ¶
func (c CustomFile) RenderGzippedBase64Content(ctx interface{}) (string, error)
type CustomSystemdUnit ¶
type CustomSystemdUnit struct { Name string `yaml:"name"` Command string `yaml:"command,omitempty"` Content string `yaml:"content,omitempty"` Enable bool `yaml:"enable,omitempty"` Runtime bool `yaml:"runtime,omitempty"` DropIns []CustomSystemdUnitDropIn `yaml:"drop-ins,omitempty"` UnknownKeys `yaml:",inline"` }
func (CustomSystemdUnit) ContentArray ¶
func (c CustomSystemdUnit) ContentArray() []string
func (CustomSystemdUnit) ContentPresent ¶
func (c CustomSystemdUnit) ContentPresent() bool
func (CustomSystemdUnit) DropInsPresent ¶
func (c CustomSystemdUnit) DropInsPresent() bool
func (CustomSystemdUnit) EnableString ¶
func (c CustomSystemdUnit) EnableString() string
func (CustomSystemdUnit) RuntimeString ¶
func (c CustomSystemdUnit) RuntimeString() string
type CustomSystemdUnitDropIn ¶
func (CustomSystemdUnitDropIn) ContentArray ¶
func (c CustomSystemdUnitDropIn) ContentArray() []string
type DNSMasq ¶ added in v0.14.7
type DNSMasq struct { CoreDNSLocal CoreDNSLocal `yaml:"coreDNSLocal"` CacheSize int `yaml:"cacheSize"` DNSForwardMax int `yaml:"dnsForwardMax"` NegTTL int `yaml:"negTTL"` }
type DataVolume ¶
type DefaultWorkerSettings ¶
type DefaultWorkerSettings struct { WorkerCreateTimeout string `yaml:"workerCreateTimeout,omitempty"` WorkerInstanceType string `yaml:"workerInstanceType,omitempty"` WorkerRootVolumeType string `yaml:"workerRootVolumeType,omitempty"` WorkerRootVolumeIOPS int `yaml:"workerRootVolumeIOPS,omitempty"` WorkerRootVolumeSize int `yaml:"workerRootVolumeSize,omitempty"` WorkerSpotPrice string `yaml:"workerSpotPrice,omitempty"` WorkerSecurityGroupIds []string `yaml:"workerSecurityGroupIds,omitempty"` WorkerTenancy string `yaml:"workerTenancy,omitempty"` WorkerTopologyPrivate bool `yaml:"workerTopologyPrivate,omitempty"` }
Part of configuration which is specific to worker nodes
func (DefaultWorkerSettings) Validate ¶
func (c DefaultWorkerSettings) Validate() error
type DeploymentSettings ¶
type DeploymentSettings struct { ComputedDeploymentSettings CloudFormation CloudFormation `yaml:"cloudformation,omitempty"` ClusterName string `yaml:"clusterName,omitempty"` S3URI string `yaml:"s3URI,omitempty"` DisableContainerLinuxAutomaticUpdates bool `yaml:"disableContainerLinuxAutomaticUpdates,omitempty"` KeyName string `yaml:"keyName,omitempty"` Region Region `yaml:",inline"` AvailabilityZone string `yaml:"availabilityZone,omitempty"` ReleaseChannel string `yaml:"releaseChannel,omitempty"` AmiId string `yaml:"amiId,omitempty"` DeprecatedVPCID string `yaml:"vpcId,omitempty"` VPC VPC `yaml:"vpc,omitempty"` DeprecatedInternetGatewayID string `yaml:"internetGatewayId,omitempty"` InternetGateway InternetGateway `yaml:"internetGateway,omitempty"` // Required for validations like e.g. if instance cidr is contained in vpc cidr VPCCIDR string `yaml:"vpcCIDR,omitempty"` InstanceCIDR string `yaml:"instanceCIDR,omitempty"` K8sVer string `yaml:"kubernetesVersion,omitempty"` KubeAWSVersion string ContainerRuntime string `yaml:"containerRuntime,omitempty"` KMSKeyARN string `yaml:"kmsKeyArn,omitempty"` StackTags map[string]string `yaml:"stackTags,omitempty"` Subnets Subnets `yaml:"subnets,omitempty"` EIPAllocationIDs []string `yaml:"eipAllocationIDs,omitempty"` ElasticFileSystemID string `yaml:"elasticFileSystemId,omitempty"` SSHAuthorizedKeys []string `yaml:"sshAuthorizedKeys,omitempty"` Addons Addons `yaml:"addons"` Experimental Experimental `yaml:"experimental"` Kubelet Kubelet `yaml:"kubelet"` ManageCertificates bool `yaml:"manageCertificates,omitempty"` WaitSignal WaitSignal `yaml:"waitSignal"` CloudWatchLogging `yaml:"cloudWatchLogging,omitempty"` AmazonSsmAgent `yaml:"amazonSsmAgent,omitempty"` CloudFormationStreaming bool `yaml:"cloudFormationStreaming,omitempty"` KubeProxy `yaml:"kubeProxy,omitempty"` KubeDns `yaml:"kubeDns,omitempty"` KubeSystemNamespaceLabels map[string]string `yaml:"kubeSystemNamespaceLabels,omitempty"` // Images repository HyperkubeImage Image `yaml:"hyperkubeImage,omitempty"` AWSCliImage Image `yaml:"awsCliImage,omitempty"` ClusterProportionalAutoscalerImage Image `yaml:"clusterProportionalAutoscalerImage,omitempty"` CoreDnsImage Image `yaml:"coreDnsImage,omitempty"` KubeDnsImage Image `yaml:"kubeDnsImage,omitempty"` KubeDnsMasqImage Image `yaml:"kubeDnsMasqImage,omitempty"` KubeReschedulerImage Image `yaml:"kubeReschedulerImage,omitempty"` DnsMasqMetricsImage Image `yaml:"dnsMasqMetricsImage,omitempty"` ExecHealthzImage Image `yaml:"execHealthzImage,omitempty"` HelmImage Image `yaml:"helmImage,omitempty"` TillerImage Image `yaml:"tillerImage,omitempty"` MetricsServerImage Image `yaml:"metricsServerImage,omitempty"` AddonResizerImage Image `yaml:"addonResizerImage,omitempty"` PauseImage Image `yaml:"pauseImage,omitempty"` JournaldCloudWatchLogsImage Image `yaml:"journaldCloudWatchLogsImage,omitempty"` Kubernetes Kubernetes `yaml:"kubernetes,omitempty"` HostOS HostOS `yaml:"hostOS,omitempty"` }
Part of configuration which can be customized for each type/group of nodes(etcd/controller/worker/) by its nature.
Please beware that it is described as just "by its nature". Whether it can actually be customized or not depends on you use node pools or not. If you've chosen to create a single cluster including all the worker, controller, etcd nodes within a single cfn stack, you can't customize per group of nodes. If you've chosen to create e.g. a separate node pool for each type of worker nodes, you can customize per node pool.
Though it is highly configurable, it's basically users' responsibility to provide `correct` values if they're going beyond the defaults.
func (DeploymentSettings) AllSubnets ¶
func (s DeploymentSettings) AllSubnets() Subnets
func (DeploymentSettings) ApiServerLeaseEndpointReconciler ¶
func (c DeploymentSettings) ApiServerLeaseEndpointReconciler() (bool, error)
func (DeploymentSettings) AssetsEncryptionEnabled ¶
func (c DeploymentSettings) AssetsEncryptionEnabled() bool
func (DeploymentSettings) FindNATGatewayForPrivateSubnet ¶
func (c DeploymentSettings) FindNATGatewayForPrivateSubnet(s Subnet) (*NATGateway, error)
func (DeploymentSettings) FindSubnetMatching ¶
func (c DeploymentSettings) FindSubnetMatching(condition Subnet) Subnet
func (DeploymentSettings) NATGateways ¶
func (c DeploymentSettings) NATGateways() []NATGateway
func (DeploymentSettings) PrivateSubnets ¶
func (c DeploymentSettings) PrivateSubnets() Subnets
func (DeploymentSettings) PublicSubnets ¶
func (c DeploymentSettings) PublicSubnets() Subnets
func (DeploymentSettings) Validate ¶
func (c DeploymentSettings) Validate() (*DeploymentValidationResult, error)
func (DeploymentSettings) ValidateNodePool ¶
func (s DeploymentSettings) ValidateNodePool(name string) error
func (DeploymentSettings) WithDefaultsFrom ¶
func (c DeploymentSettings) WithDefaultsFrom(main DeploymentSettings) DeploymentSettings
TODO make this less smelly by e.g. moving this to core/nodepool/config
type DeploymentValidationResult ¶
type DeploymentValidationResult struct {
// contains filtered or unexported fields
}
type EC2Instance ¶
type EC2Instance struct { Count int `yaml:"count,omitempty"` CreateTimeout string `yaml:"createTimeout,omitempty"` InstanceType string `yaml:"instanceType,omitempty"` RootVolume `yaml:"rootVolume,omitempty"` Tenancy string `yaml:"tenancy,omitempty"` InstanceTags map[string]string `yaml:"instanceTags,omitempty"` }
func (EC2Instance) HasNvmeDevices ¶
func (e EC2Instance) HasNvmeDevices() bool
This function is used when rendering cloud-config-worker
type EncryptionAtRest ¶
type EncryptionAtRest struct {
Enabled bool `yaml:"enabled"`
}
type EphemeralImageStorage ¶
type Etcd ¶
type Etcd struct { Cluster EtcdCluster `yaml:",inline"` CustomFiles []CustomFile `yaml:"customFiles,omitempty"` CustomSystemdUnits []CustomSystemdUnit `yaml:"customSystemdUnits,omitempty"` DataVolume DataVolume `yaml:"dataVolume,omitempty"` DisasterRecovery EtcdDisasterRecovery `yaml:"disasterRecovery,omitempty"` VolumeMounts []NodeVolumeMount `yaml:"volumeMounts,omitempty"` EC2Instance `yaml:",inline"` UserSuppliedArgs UserSuppliedArgs `yaml:"userSuppliedArgs,omitempty"` IAMConfig IAMConfig `yaml:"iam,omitempty"` Nodes []EtcdNode `yaml:"nodes,omitempty"` SecurityGroupIds []string `yaml:"securityGroupIds"` Snapshot EtcdSnapshot `yaml:"snapshot,omitempty"` Subnets Subnets `yaml:"subnets,omitempty"` StackExists bool UnknownKeys `yaml:",inline"` }
func NewDefaultEtcd ¶
func NewDefaultEtcd() Etcd
func (Etcd) AdvertisedFQDNTagKey ¶
AdvertisedFQDNTagKey returns the key of the tag used to identify the advertised hostname of the etcd member of an EBS volume
func (Etcd) EIPAllocationIDTagKey ¶
EIPAllocationIDTagKey returns the key of the tag used to identify the EIP for the etcd member of an EBS volume
func (Etcd) FormatOpts ¶
func (Etcd) HostedZoneLogicalName ¶
func (Etcd) HostedZoneManaged ¶
func (Etcd) HostedZoneRef ¶
func (Etcd) InternalDomainName ¶
func (Etcd) LogicalName ¶
func (Etcd) NameTagKey ¶
NameTagKey returns the key of the tag used to identify the name of the etcd member of an EBS volume
func (Etcd) NetworkInterfaceDeviceIndex ¶
NetworkInterfaceDeviceIndex represents that the network interface at index 1 is reserved by kube-aws for etcd peer communication Please submit a feature request if this is inconvenient for you
func (Etcd) NetworkInterfaceIDTagKey ¶
NetworkInterfaceIDTagKey returns the key of the tag used to identify the ENI for the etcd member of an EBS volume
func (Etcd) NodeShouldHaveEIP ¶
func (Etcd) NodeShouldHaveSecondaryENI ¶
func (Etcd) SecurityGroupRefs ¶
type EtcdCluster ¶
type EtcdCluster struct { InternalDomainName string `yaml:"internalDomainName,omitempty"` MemberIdentityProvider string `yaml:"memberIdentityProvider,omitempty"` HostedZone Identifier `yaml:"hostedZone,omitempty"` ManageRecordSets *bool `yaml:"manageRecordSets,omitempty"` KMSKeyARN string `yaml:"kmsKeyArn,omitempty"` Version string `yaml:"version,omitempty"` }
func (EtcdCluster) EC2InternalDomainUsed ¶
func (c EtcdCluster) EC2InternalDomainUsed() bool
func (EtcdCluster) GetMemberIdentityProvider ¶
func (c EtcdCluster) GetMemberIdentityProvider() string
func (EtcdCluster) LogicalName ¶ added in v0.15.0
func (c EtcdCluster) LogicalName() string
func (EtcdCluster) MajorMinorVersion ¶ added in v0.15.0
func (c EtcdCluster) MajorMinorVersion() string
func (EtcdCluster) NodeShouldHaveEIP ¶
func (c EtcdCluster) NodeShouldHaveEIP() bool
NodeShouldHaveEIP returns true if all the etcd nodes should have EIPs for their identities
func (EtcdCluster) NodeShouldHaveSecondaryENI ¶
func (c EtcdCluster) NodeShouldHaveSecondaryENI() bool
NodeShouldHaveSecondaryENI returns true if all the etcd nodes should have secondary ENIs for their identities
func (EtcdCluster) RecordSetsManaged ¶
func (e EtcdCluster) RecordSetsManaged() bool
Notes: * EC2's default domain like <region>.compute.internal for internalDomainName implies not to manage record sets * Managed hosted zone implies managed record sets
type EtcdDisasterRecovery ¶
type EtcdDisasterRecovery struct {
Automated bool `yaml:"automated,omitempty"`
}
type EtcdExistingState ¶
type EtcdExistingState struct { StackExists bool EtcdMigrationEnabled bool EtcdMigrationExistingEndpoints string }
ExistingState describes the existing state of the etcd cluster
type EtcdSettings ¶
type EtcdSettings struct {
Etcd `yaml:"etcd,omitempty"`
}
Part of configuration which is specific to etcd nodes
func (EtcdSettings) Validate ¶
func (e EtcdSettings) Validate() error
Valid returns an error when there's any user error in the `etcd` settings
type EtcdSnapshot ¶
type EtcdSnapshot struct {
Automated bool `yaml:"automated,omitempty"`
}
type EventRateLimit ¶
type Experimental ¶
type Experimental struct { Admission Admission `yaml:"admission"` AuditLog AuditLog `yaml:"auditLog"` Authentication Authentication `yaml:"authentication"` AwsEnvironment AwsEnvironment `yaml:"awsEnvironment"` AwsNodeLabels AwsNodeLabels `yaml:"awsNodeLabels"` EphemeralImageStorage EphemeralImageStorage `yaml:"ephemeralImageStorage"` GpuSupport GpuSupport `yaml:"gpuSupport,omitempty"` KubeletOpts string `yaml:"kubeletOpts,omitempty"` LoadBalancer LoadBalancer `yaml:"loadBalancer"` TargetGroup TargetGroup `yaml:"targetGroup"` NodeDrainer NodeDrainer `yaml:"nodeDrainer"` Oidc Oidc `yaml:"oidc"` DisableSecurityGroupIngress bool `yaml:"disableSecurityGroupIngress"` NodeMonitorGracePeriod string `yaml:"nodeMonitorGracePeriod"` SkipIOPerformanceEtcdVolumeCheck bool `yaml:"skipIOPerformanceEtcdVolumeCheck"` CloudControllerManager CloudControllerManager `yaml:"cloudControllerManager"` ContainerStorageInterface ContainerStorageInterface `yaml:"containerStorageInterface"` UnknownKeys `yaml:",inline"` }
func (Experimental) Validate ¶
func (c Experimental) Validate(name string) error
type FeatureGates ¶
func (FeatureGates) Enabled ¶
func (l FeatureGates) Enabled() bool
func (FeatureGates) String ¶
func (l FeatureGates) String() string
Returns key=value pairs separated by ',' to be passed to kubelet's `--feature-gates` flag
func (FeatureGates) Yaml ¶
func (l FeatureGates) Yaml() (string, error)
Convert the map[string]string FeatureGates to a map[string]bool yaml representation
type Files ¶
type Files []provisioner.RemoteFileSpec
type FlannelConfig ¶ added in v0.16.0
type FlannelConfig struct {
SubnetLen int32 `yaml:"subnetLen"`
}
type Gpu ¶
type Gpu struct {
Nvidia NvidiaSetting `yaml:"nvidia"`
}
type GpuSupport ¶
type Helm ¶
type Helm struct { // Releases is a list of helm releases to be maintained on the cluster. // Note that the list is sorted by their names by kube-aws so that it won't result in unnecessarily node replacements. Releases HelmReleases `yaml:"releases,omitempty"` }
type HelmRelease ¶
type HelmReleaseFileset ¶
type HelmReleaseFileset struct { ValuesFile *provisioner.RemoteFile ReleaseFile *provisioner.RemoteFile }
type HelmReleases ¶
type HelmReleases []HelmRelease
func (k *Helm) UnmarshalYAML(unmarshal func(interface{}) error) error { type t Helm work := t(Helm{ Releases: HelmReleases{}, }) if err := unmarshal(&work); err != nil { return fmt.Errorf("failed to parse helm plugin config: %v", err) } *k = Helm(work) return nil }
type HostOS ¶
type HostOS struct { BashPrompt BashPrompt `yaml:"bashPrompt,omitempty"` MOTDBanner MOTDBanner `yaml:"motdBanner,omitempty"` }
type HostedZone ¶
type HostedZone struct { // Identifier should include the hosted zone ID for a private or public hosted zone, // to make DNS names available to an internal network or the internet respectively Identifier `yaml:",inline"` }
HostedZone is a AWS Route 53 hosted zone in which record sets are created. Record sts are created to register DNS records to make various DNS names of nodes and/or load LBs managed by kube-aws visible to an internal network or the internet
type IAMConfig ¶
type IAMConfig struct { Role IAMRole `yaml:"role,omitempty"` InstanceProfile IAMInstanceProfile `yaml:"instanceProfile,omitempty"` UnknownKeys `yaml:",inline"` Policy IAMPolicy }
type IAMInstanceProfile ¶
type IAMInstanceProfile struct {
ARN `yaml:",inline"`
}
type IAMManagedPolicy ¶
type IAMManagedPolicy struct {
ARN `yaml:",inline"`
}
type IAMPolicy ¶
type IAMPolicy struct { // Statements is a list of IAM policy statements for the IAM policy associated to the nodes // Each statement must be a valid go text template producing a valid json object Statements IAMPolicyStatements `yaml:"statements,omitempty"` }
type IAMPolicyStatement ¶
type IAMPolicyStatements ¶
type IAMPolicyStatements []IAMPolicyStatement
type IAMRole ¶
type IAMRole struct { ARN `yaml:",inline"` Name string `yaml:"name,omitempty"` StrictName bool `yaml:"strictName,omitempty"` ManageExternally bool `yaml:"manageExternally,omitempty"` ManagedPolicies []IAMManagedPolicy `yaml:"managedPolicies,omitempty"` }
type Identifier ¶
type Identifier struct { ID string `yaml:"id,omitempty"` IDFromStackOutput string `yaml:"idFromStackOutput,omitempty"` IDFromFn string `yaml:"idFromFn,omitempty"` }
func (Identifier) HasIdentifier ¶
func (i Identifier) HasIdentifier() bool
HasIdentifier returns true when the id of a resource i.e. either `id` or `idFromStackOutput` is specified
func (Identifier) Ref ¶
func (i Identifier) Ref(logicalNameProvider func() string) string
func (Identifier) RefOrError ¶
func (i Identifier) RefOrError(logicalNameProvider func() (string, error)) (string, error)
RefOrError should be used instead of Ref where possible so that kube-aws can print a more useful error message with the line number for the stack-template.json when there's an error.
func (Identifier) Validate ¶
func (i Identifier) Validate() error
type Image ¶
type Image struct { Repo string `yaml:"repo,omitempty"` RktPullDocker bool `yaml:"rktPullDocker,omitempty"` Tag string `yaml:"tag,omitempty"` }
func (*Image) MergeIfEmpty ¶
func (*Image) RepoWithTag ¶
func (*Image) RktRepoWithoutTag ¶
type InfrastructureValidationResult ¶
type InfrastructureValidationResult struct {
// contains filtered or unexported fields
}
type InternetGateway ¶
type InternetGateway struct {
Identifier `yaml:",inline"`
}
func (InternetGateway) ManageInternetGateway ¶
func (g InternetGateway) ManageInternetGateway() bool
type KeyPairSpec ¶
type KeyPairSpec struct { Name string `yaml:"name"` CommonName string `yaml:"commonName"` Organization string `yaml:"organization"` Duration time.Duration `yaml:"duration"` DNSNames []string `yaml:"dnsNames"` IPAddresses []string `yaml:"ipAddresses"` Usages []string `yaml:"usages"` // Signer is the name of the keypair for the private key used to sign the cert Signer string `yaml:"signer"` }
func (KeyPairSpec) CertPath ¶
func (spec KeyPairSpec) CertPath() string
func (KeyPairSpec) EncryptedKeyPath ¶
func (spec KeyPairSpec) EncryptedKeyPath() string
func (KeyPairSpec) KeyPath ¶
func (spec KeyPairSpec) KeyPath() string
func (KeyPairSpec) SignerCertPath ¶ added in v0.15.0
func (spec KeyPairSpec) SignerCertPath() string
func (KeyPairSpec) SignerKeyPath ¶ added in v0.15.0
func (spec KeyPairSpec) SignerKeyPath() string
type KubeApiServer ¶ added in v0.13.2
type KubeApiServer struct { ComputeResources ComputeResources `yaml:"resources,omitempty"` TargetRamMb int `yaml:"targetRamMb,omitempty"` }
type KubeClusterSettings ¶
type KubeClusterSettings struct { APIEndpointConfigs APIEndpoints `yaml:"apiEndpoints,omitempty"` // Required by kubelet to locate the kube-apiserver ExternalDNSName string `yaml:"externalDNSName,omitempty"` // Required by kubelet to locate the cluster-internal dns hosted on controller nodes in the base cluster DNSServiceIP string `yaml:"dnsServiceIP,omitempty"` PodCIDR string `yaml:"podCIDR,omitempty"` ServiceCIDR string `yaml:"serviceCIDR,omitempty"` }
Part of configuration which is shared between controller nodes and worker nodes. Its name is prefixed with `Kube` because it doesn't relate to etcd.
func (KubeClusterSettings) K8sNetworkPlugin ¶
func (c KubeClusterSettings) K8sNetworkPlugin() string
Required by kubelet to use the consistent network plugin with the base cluster
func (KubeClusterSettings) Validate ¶
func (c KubeClusterSettings) Validate() (*InfrastructureValidationResult, error)
type KubeDns ¶
type KubeDns struct { Provider string `yaml:"provider"` NodeLocalResolver bool `yaml:"nodeLocalResolver"` NodeLocalResolverOptions []string `yaml:"nodeLocalResolverOptions"` DNSMasq DNSMasq `yaml:"dnsmasq"` DeployToControllers bool `yaml:"deployToControllers"` AntiAffinityAvailabilityZone bool `yaml:"antiAffinityAvailabilityZone"` TTL int `yaml:"ttl"` Autoscaler KubeDnsAutoscaler `yaml:"autoscaler"` DnsDeploymentResources ComputeResources `yaml:"dnsDeploymentResources,omitempty"` ExtraCoreDNSConfig string `yaml:"extraCoreDNSConfig"` AdditionalZoneCoreDNSConfig string `yaml:"additionalZoneCoreDNSConfig"` }
func (*KubeDns) MergeIfEmpty ¶
type KubeDnsAutoscaler ¶
type KubeProxy ¶
type KubeProxy struct { IPVSMode IPVSMode `yaml:"ipvsMode"` ComputeResources ComputeResources `yaml:"resources,omitempty"` Config map[string]interface{} `yaml:"config,omitempty"` }
type KubeResourcesAutosave ¶
type KubeScheduler ¶
type KubeScheduler struct { ComputeResources ComputeResources `yaml:"resources,omitempty"` Flags CommandLineFlags `yaml:"flags,omitempty"` }
type Kubelet ¶
type Kubelet struct { SystemReservedResources string `yaml:"systemReserved,omitempty"` KubeReservedResources string `yaml:"kubeReserved,omitempty"` Kubeconfig string `yaml:"kubeconfig,omitempty"` Mounts []ContainerVolumeMount `yaml:"mounts,omitempty"` Flags CommandLineFlags `yaml:"flags,omitempty"` }
Kubelet options
type KubeletSpec ¶
type KubeletSpec struct { FeatureGates FeatureGates `yaml:"featureGates,omitempty"` NodeLabels NodeLabels `yaml:"nodeLabels,omitempty"` Kubeconfig string `yaml:"kubeconfig,omitempty"` Mounts []ContainerVolumeMount `yaml:"mounts,omitempty"` }
Kubelet represents a set of customizations to kubelets running on the nodes Keys must be included in: nodeLabels, featureGates, etc kubelet can be configured per-node-pool-basic hence a part of WorkerSettings
type Kubernetes ¶
type Kubernetes struct { Authentication KubernetesAuthentication `yaml:"authentication"` EncryptionAtRest EncryptionAtRest `yaml:"encryptionAtRest"` PodAutoscalerUseRestClient PodAutoscalerUseRestClient `yaml:"podAutoscalerUseRestClient"` Networking Networking `yaml:"networking,omitempty"` ControllerManager ControllerManager `yaml:"controllerManager,omitempty"` KubeScheduler KubeScheduler `yaml:"kubeScheduler,omitempty"` KubeProxy KubeProxy `yaml:"kubeProxy,omitempty"` KubeApiServer KubeApiServer `yaml:"apiServer,omitempty"` Kubelet Kubelet `yaml:"kubelet,omitempty"` APIServer KubernetesAPIServer `yaml:"apiserver,omitempty"` // Manifests is a list of manifests to be installed to the cluster. // Note that the list is sorted by their names by kube-aws so that it won't result in unnecessarily node replacements. Manifests KubernetesManifests `yaml:"manifests,omitempty"` }
type KubernetesAPIServer ¶
type KubernetesAPIServer struct { Flags CommandLineFlags `yaml:"flags,omitempty"` Volumes APIServerVolumes `yaml:"volumes,omitempty"` }
type KubernetesAuthentication ¶
type KubernetesAuthentication struct {
AWSIAM AWSIAM `yaml:"awsIAM"`
}
type KubernetesManifest ¶
type KubernetesManifest struct { Name string `yaml:"name,omitempty"` provisioner.RemoteFileSpec `yaml:",inline"` }
type KubernetesManifests ¶
type KubernetesManifests []KubernetesManifest
type LaunchSpecification ¶
type LaunchSpecification struct { WeightedCapacity int `yaml:"weightedCapacity,omitempty"` InstanceType string `yaml:"instanceType,omitempty"` SpotPrice string `yaml:"spotPrice,omitempty"` RootVolume `yaml:"rootVolume,omitempty"` }
func NewLaunchSpecification ¶
func NewLaunchSpecification(weightedCapacity int, instanceType string) LaunchSpecification
func (*LaunchSpecification) UnmarshalYAML ¶
func (s *LaunchSpecification) UnmarshalYAML(unmarshal func(interface{}) error) error
func (LaunchSpecification) Validate ¶
func (c LaunchSpecification) Validate() error
type LoadBalancer ¶
type LocalStreaming ¶
type LocalStreaming struct { Enabled bool `yaml:"enabled"` Filter string `yaml:"filter"` Interval int `yaml:"interval"` }
func (*LocalStreaming) IntervalSec ¶
func (c *LocalStreaming) IntervalSec() int64
type MOTDBanner ¶
type MOTDBanner struct { Enabled bool `yaml:"enabled,omitempty"` EtcdColour ShellColour `yaml:"etcd-colour,omitempty"` KubernetesColour ShellColour `yaml:"kubernetes-colour,omitempty"` KubeAWSColour ShellColour `yaml:"kube-aws-colour,omitempty"` }
func NewDefaultMOTDBanner ¶
func NewDefaultMOTDBanner() MOTDBanner
type Machine ¶
type Machine struct {
Roles MachineRoles `yaml:"roles,omitempty"`
}
type MachineRoles ¶
type MachineRoles struct { Controller Node `yaml:"controller,omitempty"` Etcd MachineSpec `yaml:"etcd,omitempty"` Worker Node `yaml:"worker,omitempty"` }
type MachineSpec ¶
type Metadata ¶
type Metadata struct { Name string `yaml:"name"` Version string `yaml:"version"` Description string `yaml:"description"` // ClusterSettingsKey is the key in the root of cluster.yaml used for configuring this plugin cluster-wide ClusterSettingsKey string `yaml:"clusterSettingsKey,omitempty"` // NodePoolSettingsKey is the key in the root of a node pool settings in cluster.yaml used for configuring this plugin only for a node pool NodePoolSettingsKey string `yaml:"nodePoolSettingKey,omitempty"` }
Metadata is the metadata of a kube-aws plugin consists of various settings specific to the plugin itself Metadata never affects what are injected into K8S clusters, node, other CFN resources managed by kube-aws.
type MetricsServer ¶
type MetricsServer struct { Enabled bool `yaml:"enabled"` UnknownKeys `yaml:",inline"` }
type MixedInstances ¶
type MixedInstances struct { Enabled bool `yaml:"enabled,omitempty"` OnDemandAllocationStrategy string `yaml:"onDemandAllocationStrategy,omitempty"` OnDemandBaseCapacity int `yaml:"onDemandBaseCapacity,omitempty"` OnDemandPercentageAboveBaseCapacity int `yaml:"onDemandPercentageAboveBaseCapacity,omitempty"` SpotAllocationStrategy string `yaml:"spotAllocationStrategy,omitempty"` SpotInstancePools int `yaml:"spotInstancePools,omitempty"` SpotMaxPrice string `yaml:"spotMaxPrice,omitempty"` InstanceTypes []string `yaml:"instanceTypes,omitempty"` }
func (MixedInstances) Validate ¶
func (mi MixedInstances) Validate() error
type NATGateway ¶
type NATGateway interface { EIPAllocationIDRef() (string, error) EIPLogicalName() (string, error) IsConnectedToPrivateSubnet(Subnet) bool LogicalName() string ManageEIP() bool ManageNATGateway() bool ManageRoute() bool Ref() string PublicSubnetRef() (string, error) PrivateSubnets() []Subnet Validate() error }
kube-aws manages at most one NAT gateway per subnet
func NewManagedNATGateway ¶
func NewManagedNATGateway(c NATGatewayConfig, private Subnet, public Subnet) NATGateway
func NewUnmanagedNATGateway ¶
func NewUnmanagedNATGateway(c NATGatewayConfig, private Subnet) NATGateway
type NATGatewayConfig ¶
type NATGatewayConfig struct { Identifier `yaml:",inline"` EIPAllocationID string `yaml:"eipAllocationId,omitempty"` }
func (NATGatewayConfig) Validate ¶
func (c NATGatewayConfig) Validate() error
type Networking ¶
type Networking struct { AmazonVPC AmazonVPC `yaml:"amazonVPC,omitempty"` SelfHosting SelfHosting `yaml:"selfHosting,omitempty"` }
type Node ¶
type Node struct { MachineSpec `yaml:",inline"` Kubelet KubeletSpec `yaml:"kubelet,omitempty"` }
Node is a worker machine in Kubernetes
type NodeDrainer ¶
type NodeDrainer struct { Enabled bool `yaml:"enabled"` DrainTimeout int `yaml:"drainTimeout"` IAMRole IAMRole `yaml:"iamRole,omitempty"` }
func (*NodeDrainer) DrainTimeoutInSeconds ¶
func (nd *NodeDrainer) DrainTimeoutInSeconds() int
func (*NodeDrainer) Validate ¶
func (nd *NodeDrainer) Validate() error
type NodeLabels ¶
func (NodeLabels) Enabled ¶
func (l NodeLabels) Enabled() bool
func (NodeLabels) String ¶
func (l NodeLabels) String() string
Returns key=value pairs separated by ',' to be passed to kubelet's `--node-labels` flag
type NodeSettings ¶
type NodeSettings struct { FeatureGates FeatureGates `yaml:"featureGates"` NodeLabels NodeLabels `yaml:"nodeLabels"` Taints Taints `yaml:"taints"` }
func (NodeSettings) Validate ¶
func (s NodeSettings) Validate() error
type NodeVolumeMount ¶
type NodeVolumeMount struct { Type string `yaml:"type,omitempty"` Iops int `yaml:"iops,omitempty"` Size int `yaml:"size,omitempty"` Device string `yaml:"device,omitempty"` Filesystem string `yaml:"filesystem,omitempty"` Path string `yaml:"path,omitempty"` CreateTmp bool `yaml:"createTmp,omitempty"` }
func (NodeVolumeMount) FilesystemType ¶
func (v NodeVolumeMount) FilesystemType() string
func (NodeVolumeMount) SystemdMountName ¶
func (v NodeVolumeMount) SystemdMountName() string
func (NodeVolumeMount) Validate ¶
func (v NodeVolumeMount) Validate() error
type NvidiaSetting ¶
type NvidiaSetting struct { Enabled bool `yaml:"enabled,omitempty"` Version string `yaml:"version,omitempty"` }
func (NvidiaSetting) IsEnabledOn ¶
func (c NvidiaSetting) IsEnabledOn(instanceType string) bool
This function is used when rendering cloud-config-worker
type Outputs ¶
type Outputs struct {
provisioner.RemoteFileSpec `yaml:",inline"`
}
type OwnerReferencesPermissionEnforcement ¶
type OwnerReferencesPermissionEnforcement struct {
Enabled bool `yaml:"enabled"`
}
type PKI ¶
type PKI struct {
KeyPairs []KeyPairSpec `yaml:"keypairs,omitempty"`
}
type PersistentVolumeClaimResize ¶
type PersistentVolumeClaimResize struct {
Enabled bool `yaml:"enabled"`
}
type Plugin ¶
type Plugin struct { Metadata `yaml:"metadata,omitempty"` Spec PluginSpec `yaml:"spec,omitempty"` }
A plugin consists of two parts: a set of metadata and a spec
func (Plugin) EnabledIn ¶
func (p Plugin) EnabledIn(plugins PluginConfigs) (bool, *PluginConfig)
func (Plugin) SettingKey ¶
type PluginConfig ¶
func (PluginConfig) Merge ¶
func (p PluginConfig) Merge(m PluginConfig) (PluginConfig, error)
type PluginConfigs ¶
type PluginConfigs map[string]PluginConfig
func (PluginConfigs) Merge ¶
func (pcs PluginConfigs) Merge(m PluginConfigs) (PluginConfigs, error)
func (PluginConfigs) PluginExists ¶ added in v0.15.0
func (pcs PluginConfigs) PluginExists(name string) bool
func (PluginConfigs) PluginIsEnabled ¶ added in v0.15.0
func (pcs PluginConfigs) PluginIsEnabled(name string) bool
type PluginSpec ¶
type PluginSpec struct { // Cluster is the configuration part of a plugin which is used to append arbitrary configs into various resources managed by kube-aws Cluster ClusterSpec `yaml:"cluster,omitempty"` }
PluginSpec is the specification of a kube-aws plugin A spec consists of two parts: Cluster and Command
type PodAutoscalerUseRestClient ¶ added in v0.14.5
type PodAutoscalerUseRestClient struct {
Enabled bool `yaml:"enabled"`
}
type Prometheus ¶
type Prometheus struct { SecurityGroupsEnabled bool `yaml:"securityGroupsEnabled"` UnknownKeys `yaml:",inline"` }
type Raid0Mount ¶
type Raid0Mount struct { Type string `yaml:"type,omitempty"` Iops int `yaml:"iops,omitempty"` Size int `yaml:"size,omitempty"` Devices []string `yaml:"devices,omitempty"` Path string `yaml:"path,omitempty"` CreateTmp bool `yaml:"createTmp,omitempty"` }
func (Raid0Mount) DeviceList ¶
func (r Raid0Mount) DeviceList() string
func (Raid0Mount) NumDevices ¶
func (r Raid0Mount) NumDevices() int
func (Raid0Mount) SystemdMountName ¶
func (r Raid0Mount) SystemdMountName() string
func (Raid0Mount) Validate ¶
func (r Raid0Mount) Validate() error
type Region ¶
type Region struct {
Name string `yaml:"region,omitempty"`
}
func RegionForName ¶
func (Region) IsGovcloud ¶
func (Region) PrivateDomainName ¶
func (Region) PublicComputeDomainName ¶
func (Region) PublicDomainName ¶
func (Region) S3Endpoint ¶
func (Region) SupportsKMS ¶
func (Region) SupportsNetworkLoadBalancers ¶
type Rescheduler ¶
type Rescheduler struct { Enabled bool `yaml:"enabled"` UnknownKeys `yaml:",inline"` }
type ResourceQuota ¶
type Resources ¶
type Resources struct {
provisioner.RemoteFileSpec `yaml:",inline"`
}
type RootVolume ¶
type RootVolume struct { Size int `yaml:"size,omitempty"` Type string `yaml:"type,omitempty"` IOPS int `yaml:"iops,omitempty"` UnknownKeys `yaml:",inline"` }
func NewGp2RootVolume ¶
func NewGp2RootVolume(size int) RootVolume
func NewIo1RootVolume ¶
func NewIo1RootVolume(size int, iops int) RootVolume
func (RootVolume) RootVolumeIOPS ¶
func (v RootVolume) RootVolumeIOPS() int
func (RootVolume) RootVolumeSize ¶
func (v RootVolume) RootVolumeSize() int
func (RootVolume) RootVolumeType ¶
func (v RootVolume) RootVolumeType() string
func (RootVolume) Validate ¶
func (v RootVolume) Validate() error
type RouteTable ¶
type RouteTable struct {
Identifier `yaml:",inline"`
}
kube-aws manages at most one route table per subnet If ID or IDFromStackOutput is non-zero, kube-aws doesn't manage the route table but its users' responsibility to provide properly configured one to be reused by kube-aws. More concretely: * If an user is going to reuse an existing route table for a private subnet, it must have a route to a NAT gateway
- A NAT gateway can be either a classical one with a NAT EC2 instance or an AWS-managed one
* IF an user is going to reuse an existing route table for a public subnet, it must have a route to an Internet gateway
type S3Folders ¶
type S3Folders struct {
// contains filtered or unexported fields
}
func NewS3Folders ¶
func (S3Folders) ClusterBackups ¶
func (S3Folders) ClusterExportedStacks ¶
type SecurityGroup ¶
type SecurityGroup struct {
Identifier `yaml:",inline"`
}
SecurityGroup references one of existing security groups in your AWS account
type SelfHosting ¶
type SelfHosting struct { Type string `yaml:"type"` Typha bool `yaml:"typha"` TyphaResources ComputeResources `yaml:"typhaResources,omitempty"` CalicoNodeImage Image `yaml:"calicoNodeImage"` CalicoCniImage Image `yaml:"calicoCniImage"` FlannelImage Image `yaml:"flannelImage"` FlannelCniImage Image `yaml:"flannelCniImage"` TyphaImage Image `yaml:"typhaImage"` FlannelConfig FlannelConfig `yaml:"flannelConfig"` CalicoConfig CalicoConfig `yaml:"calicoConfig"` }
type ShellColour ¶
type ShellColour int
const ( DefaultColour ShellColour = iota Black Red Green Yellow Blue Magenta Cyan White DarkGray LightRed LightGreen LightYellow LightBlue LightMagenta LightCyan LightWhite )
func ShellColourString ¶
func ShellColourString(s string) (ShellColour, error)
ShellColourString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func ShellColourValues ¶
func ShellColourValues() []ShellColour
ShellColourValues returns all values of the enum
func (ShellColour) IsAShellColour ¶
func (i ShellColour) IsAShellColour() bool
IsAShellColour returns "true" if the value is listed in the enum definition. "false" otherwise
func (ShellColour) MarshalYAML ¶
func (i ShellColour) MarshalYAML() (interface{}, error)
MarshalYAML implements a YAML Marshaler for ShellColour
func (ShellColour) Off ¶
func (colour ShellColour) Off() string
func (ShellColour) On ¶
func (colour ShellColour) On() string
func (ShellColour) PCOff ¶
func (colour ShellColour) PCOff() string
func (ShellColour) PCOn ¶
func (colour ShellColour) PCOn() string
func (ShellColour) String ¶
func (i ShellColour) String() string
func (*ShellColour) UnmarshalYAML ¶
func (i *ShellColour) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements a YAML Unmarshaler for ShellColour
type SpotFleet ¶
type SpotFleet struct { TargetCapacity int `yaml:"targetCapacity,omitempty"` SpotPrice string `yaml:"spotPrice,omitempty"` IAMFleetRoleARN string `yaml:"iamFleetRoleArn,omitempty"` RootVolumeType string `yaml:"rootVolumeType"` UnitRootVolumeSize int `yaml:"unitRootVolumeSize"` UnitRootVolumeIOPS int `yaml:"unitRootVolumeIOPS"` LaunchSpecifications []LaunchSpecification `yaml:"launchSpecifications,omitempty"` UnknownKeys `yaml:",inline"` }
UnitRootVolumeSize/IOPS are used for spot fleets instead of WorkerRootVolumeSize/IOPS, so that we can make them clearer that they are not default size/iops for each worker node but "size/iops per unit" as their names suggest
func (SpotFleet) IAMFleetRoleRef ¶
func (*SpotFleet) UnmarshalYAML ¶
type Stack ¶
type Stack struct { Resources `yaml:"resources,omitempty"` Outputs `yaml:"outputs,omitempty"` Tags `yaml:"tags,omitempty"` }
Stack represents a set of customizations to a CloudFormation stack template Top-level keys should be one of: Resources, Outputs Second-level keys should be cfn resource names
type StackNameOverrides ¶
type StackTemplateOptions ¶
type Subnet ¶
type Subnet struct { Identifier `yaml:",inline"` AvailabilityZone string `yaml:"availabilityZone,omitempty"` Name string `yaml:"name,omitempty"` InstanceCIDR string `yaml:"instanceCIDR,omitempty"` InternetGateway InternetGateway `yaml:"internetGateway,omitempty"` NATGateway NATGatewayConfig `yaml:"natGateway,omitempty"` Private bool `yaml:"private,omitempty"` RouteTable RouteTable `yaml:"routeTable,omitempty"` }
func NewExistingPublicSubnet ¶
func NewImportedPublicSubnet ¶
func NewPrivateSubnet ¶
func NewPrivateSubnetFromFn ¶
func NewPublicSubnet ¶
func NewPublicSubnetFromFn ¶
func (*Subnet) InternetGatewayRouteLogicalName ¶
func (*Subnet) LogicalName ¶
func (*Subnet) LogicalNameOrErr ¶
func (*Subnet) ManageNATGateway ¶
ManageNATGateway returns true if a NAT gateway for this subnet must be created or updated by kube-aws kube-aws creates or updates a NAT gateway if: * the subnet is private and * the subnet is going to be managed by kube-aws(an existing subnet is NOT specified) and * the route table for the subnet is going to be managed by kube-aws(an existing subnet is NOT specified) and * an existing NAT gateway ID is not specified to be reused
func (*Subnet) ManageRouteTable ¶
ManageRouteTable returns true if a route table for this subnet must be created or updated by kube-aws kube-aws creates a route table if and only if the subnet is also going to be managed and an existing route table for it isn't specified
func (*Subnet) ManageRouteToInternet ¶
ManageRouteToInternet returns true if a route from this subnet to an IGW must be created or updated by kube-aws kube-aws creates a route to an IGW for an subnet if and only if: * the subnet is public and * the subnet is going to be managed by kube-aws and * the route table is going to be managed by kube-aws In other words, kube-aws won't create or update a route to an IGW if: * the subnet is private or * an existing subnet is used or * an existing route table is used
func (*Subnet) ManageRouteToNATGateway ¶
ManageRouteToNATGateway returns true if a route to a NAT gateway for this subnet must be created or updated by kube-aws kube-aws creates or updates a NAT gateway if: * the NGW is going to be managed or * an existing NAT gateway ID is specified
func (*Subnet) ManageSubnet ¶
ManageSubnet returns true if this subnet must be managed(created or updated) by kube-aws kube-aws creates a subnet if subnet.id and subnet.idFromStackOutput are not specified
func (*Subnet) MapPublicIPs ¶
func (*Subnet) NATGatewayRouteLogicalName ¶
func (*Subnet) RouteTableID ¶
func (*Subnet) RouteTableLogicalName ¶
RouteTableLogicalName represents the name of the route table to which this subnet is associated.
func (*Subnet) RouteTableRef ¶
type SubnetReference ¶
type SubnetReference struct { // Name is the unique name of subnet to be referenced. // The subnet referenced by this name should be defined in the `subnets[]` field in the top-level of cluster.yaml Name string `yaml:"name,omitempty"` }
SubnetReference references one of subnets defined in the top-level of cluster.yaml
type Subnets ¶
type Subnets []Subnet
func (Subnets) ContainsBothPrivateAndPublic ¶
func (Subnets) ImportFromNetworkStack ¶
func (Subnets) ImportFromNetworkStackRetainingNames ¶
type Systemd ¶
type Systemd struct { // Units is a list of systemd units installed on the nodes Units SystemdUnits `yaml:"units,omitempty"` }
type SystemdMessageResponse ¶
type SystemdMessageResponse struct { InstanceId string `json:"instanceId,omitempty"` Hostname string `json:"hostname,omitempty"` CmdName string `json:"cmdName,omitempty"` Exe string `json:"exe,omitempty"` CmdLine string `json:"cmdLine,omitempty"` SystemdUnit string `json:"systemdUnit,omitempty"` Priority string `json:"priority,omitempty"` Message string `json:"message,omitempty"` }
type SystemdUnit ¶
type SystemdUnits ¶
type SystemdUnits []SystemdUnit
type Tags ¶
type Tags struct {
provisioner.RemoteFileSpec `yaml:",inline"`
}
type Taint ¶
type Taint struct { Key string `yaml:"key"` Value string `yaml:"value"` Effect string `yaml:"effect"` }
Taint is a k8s node taint which is added to nodes which requires pods to tolerate
type Taints ¶
type Taints []Taint
Taints is a list of taints
type TargetGroup ¶
type UnknownKeys ¶
type UnknownKeys map[string]interface{}
func (UnknownKeys) FailWhenUnknownKeysFound ¶
func (unknownKeys UnknownKeys) FailWhenUnknownKeysFound(keyPath string) error
type UserData ¶
type UserData struct { Parts map[string]*UserDataPart Path string }
UserData represents userdata which might be split across multiple storage types
func NewUserDataFromTemplateFile ¶
func NewUserDataFromTemplateFile(templateFile string, context interface{}, opts ...UserDataOption) (UserData, error)
NewUserDataFromTemplateFile creates userdata struct from template file. Template file is expected to have defined subtemplates (Parts) which are of various part and storage types TODO Extract this out of the clusterapi package as this is an "implementation"
type UserDataOption ¶
type UserDataOption func(*userDataOpt)
func UserDataPartsOpt ¶
func UserDataPartsOpt(Parts ...PartDesc) UserDataOption
Parts to find in UserData template file
type UserDataPart ¶
type UserDataPart struct { Asset Asset // contains filtered or unexported fields }
type UserDataValidateFunc ¶
UserDataValidateFunc returns error if templated Part content doesn't pass validation
type UserSuppliedArgs ¶
type VPC ¶
type VPC struct {
Identifier `yaml:",inline"`
}
kube-aws manages at most one VPC per cluster If ID or IDFromStackOutput is non-zero, kube-aws doesn't manage the VPC but its users' responsibility to provide properly configured one to be reused by kube-aws. More concretely:
- If an user is going to reuse an existing VPC, it must have an internet gateway attached and
- A valid internet gateway ID must be provided via `internetGateway.id` or `internetGateway.idFromStackOutput`. In other words, kube-aws doesn't create an internet gateway in an existing VPC.
func (VPC) ImportFromNetworkStack ¶
type WaitSignal ¶
type WaitSignal struct { // WaitSignal is enabled by default. If you'd like to explicitly disable it, set this to `false`. // Keeping this `nil` results in the WaitSignal to be enabled. EnabledOverride *bool `yaml:"enabled"` MaxBatchSizeOverride *int `yaml:"maxBatchSize"` }
func (WaitSignal) Enabled ¶
func (s WaitSignal) Enabled() bool
func (WaitSignal) MaxBatchSize ¶
func (s WaitSignal) MaxBatchSize(def int) int
MaxBatchSize return the MaxBatchOverride if set otherwise return the default
type Worker ¶
type Worker struct { APIEndpointName string `yaml:"apiEndpointName,omitempty"` NodePools []WorkerNodePool `yaml:"nodePools,omitempty"` NodePoolRollingStrategy string `yaml:"nodePoolRollingStrategy,omitempty"` UnknownKeys `yaml:",inline"` }
type WorkerNodePool ¶
type WorkerNodePool struct { Experimental `yaml:",inline"` Kubelet `yaml:",inline"` KubeClusterSettings `yaml:",inline"` DeploymentSettings `yaml:",inline"` Plugins PluginConfigs `yaml:"kubeAwsPlugins,omitempty"` Private bool `yaml:"private,omitempty"` NodePoolName string `yaml:"name,omitempty"` APIEndpointName string `yaml:"apiEndpointName,omitempty"` AutoScalingGroup AutoScalingGroup `yaml:"autoScalingGroup,omitempty"` SpotFleet SpotFleet `yaml:"spotFleet,omitempty"` EC2Instance `yaml:",inline"` IAMConfig IAMConfig `yaml:"iam,omitempty"` SpotPrice string `yaml:"spotPrice,omitempty"` SecurityGroupIds []string `yaml:"securityGroupIds,omitempty"` CustomSettings map[string]interface{} `yaml:"customSettings,omitempty"` VolumeMounts []NodeVolumeMount `yaml:"volumeMounts,omitempty"` Raid0Mounts []Raid0Mount `yaml:"raid0Mounts,omitempty"` NodeSettings `yaml:",inline"` NodeStatusUpdateFrequency string `yaml:"nodeStatusUpdateFrequency"` CustomFiles []CustomFile `yaml:"customFiles,omitempty"` CustomSystemdUnits []CustomSystemdUnit `yaml:"customSystemdUnits,omitempty"` Gpu Gpu `yaml:"gpu"` NodePoolRollingStrategy string `yaml:"nodePoolRollingStrategy,omitempty"` UnknownKeys `yaml:",inline"` }
func NewDefaultNodePoolConfig ¶
func NewDefaultNodePoolConfig() WorkerNodePool
func (WorkerNodePool) LaunchConfigurationLogicalName ¶
func (c WorkerNodePool) LaunchConfigurationLogicalName() string
func (WorkerNodePool) LaunchTemplateLogicalName ¶
func (c WorkerNodePool) LaunchTemplateLogicalName() string
func (WorkerNodePool) LogicalName ¶
func (c WorkerNodePool) LogicalName() string
func (WorkerNodePool) MaxCount ¶
func (c WorkerNodePool) MaxCount() int
func (WorkerNodePool) MinCount ¶
func (c WorkerNodePool) MinCount() int
func (WorkerNodePool) NodePoolLogicalName ¶
func (c WorkerNodePool) NodePoolLogicalName() string
NodePoolLogicalName returns a sanitized name of this pool which is usable as a valid cloudformation nested stack name
func (WorkerNodePool) RollingUpdateMinInstancesInService ¶
func (c WorkerNodePool) RollingUpdateMinInstancesInService() int
func (*WorkerNodePool) UnmarshalYAML ¶
func (c *WorkerNodePool) UnmarshalYAML(unmarshal func(interface{}) error) error
func (WorkerNodePool) Validate ¶
func (c WorkerNodePool) Validate(experimental Experimental) error
func (WorkerNodePool) WithDefaultsFrom ¶
func (c WorkerNodePool) WithDefaultsFrom(main DefaultWorkerSettings) WorkerNodePool
Source Files ¶
- addons.go
- amazon_vpc.go
- api_endpoint.go
- api_endpoint_lb.go
- api_endpoints.go
- arn.go
- asg.go
- assets.go
- aws_iam.go
- bash_prompt.go
- cidr_range.go
- cloudformation.go
- cloudwatch_logging.go
- cluster.go
- const.go
- controller.go
- custom_file.go
- custom_systemd_unit.go
- custom_systemd_unit_dropin.go
- data_volume.go
- deployment.go
- ec2_instance.go
- etcd.go
- etcd_cluster.go
- etcd_node.go
- existing_etcd.go
- feature_gates.go
- gpu.go
- helm_release_fileset.go
- hosted_zone.go
- iamconfig.go
- identifier.go
- image.go
- internet_gateway.go
- keypair_spec.go
- kubernetes.go
- lauch_specification.go
- mixed_instances.go
- motd_banner.go
- nat_gateway.go
- networking.go
- node_drainer.go
- node_labels.go
- node_settings.go
- node_volume_mount.go
- oidc.go
- pki.go
- plugin.go
- plugin_config.go
- raid0_mount.go
- region.go
- root_volume.go
- s3_folders.go
- security_group.go
- shell_colour.go
- shellcolour_enumer.go
- spot_fleet.go
- stack_name_overrides.go
- subnet.go
- subnet_reference.go
- subnets.go
- taint.go
- types.go
- unknown_keys.go
- userdata.go
- vpc.go
- worker_node_pool.go