Documentation ¶
Index ¶
- func WithTrailingDot(s string) string
- type Admission
- type AuditLog
- type AuthTokens
- type Authentication
- type AwsEnvironment
- type AwsNodeLabels
- type Cluster
- func (c *Cluster) AvailabilityZones() []string
- func (c Cluster) Config() (*Config, error)
- func (c *Cluster) EtcdCluster() derived.EtcdCluster
- func (c Cluster) EtcdIndexEnvVarName() string
- func (c Cluster) EtcdNodeEnvFileName() string
- func (c *Cluster) Load() error
- func (c *Cluster) NewAuthTokens() *RawAuthTokens
- func (c *Cluster) NewTLSAssets(caKey *rsa.PrivateKey, caCert *x509.Certificate) (*RawTLSAssets, error)
- func (c *Cluster) NewTLSCA() (*rsa.PrivateKey, *x509.Certificate, error)
- func (c *Cluster) SetDefaults()
- func (c Cluster) StackConfig(opts StackTemplateOptions) (*StackConfig, error)
- func (c Cluster) StackName() string
- func (c Cluster) StackNameEnvVarName() string
- func (c *Cluster) ValidateExistingVPC(existingVPCCIDR string, existingSubnetCIDRS []string) error
- type ClusterAutoscalerSupport
- type CompactAuthTokens
- type CompactTLSAssets
- type CompressedStackConfig
- type ComputedDeploymentSettings
- type Config
- type ControllerSettings
- type DefaultWorkerSettings
- type DeploymentSettings
- func (s DeploymentSettings) AllSubnets() []model.Subnet
- func (c DeploymentSettings) AssetsEncryptionEnabled() bool
- func (c DeploymentSettings) FindNATGatewayForPrivateSubnet(s model.Subnet) (*model.NATGateway, error)
- func (c DeploymentSettings) FindSubnetMatching(condition model.Subnet) model.Subnet
- func (c DeploymentSettings) NATGateways() []model.NATGateway
- func (c DeploymentSettings) PrivateSubnets() []model.Subnet
- func (c DeploymentSettings) PublicSubnets() []model.Subnet
- func (c DeploymentSettings) Valid() (*DeploymentValidationResult, error)
- type DeploymentValidationResult
- type EncryptService
- type EncryptedAuthTokens
- type EncryptedTLSAssets
- type EphemeralImageStorage
- type EtcdSettings
- type Experimental
- type FlannelSettings
- type InfrastructureValidationResult
- type KMSConfig
- type Kube2IamSupport
- type KubeClusterSettings
- type LoadBalancer
- type NodeDrainer
- type NodeLabels
- type Plugins
- type PodSecurityPolicy
- type RawAuthTokens
- type RawTLSAssets
- type Rbac
- type StackConfig
- type StackTemplateOptions
- type TLSAssets
- type Taint
- type TargetGroup
- type WaitSignal
- type Webhook
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func WithTrailingDot ¶
Types ¶
type Admission ¶
type Admission struct {
PodSecurityPolicy PodSecurityPolicy `yaml:"podSecurityPolicy"`
}
type AuthTokens ¶
type AuthTokens struct {
Contents []byte
}
Contents of the CSV file holding auth tokens. See https://kubernetes.io/docs/admin/authentication/#static-token-file
func (*AuthTokens) Compact ¶
func (r *AuthTokens) Compact() (*CompactAuthTokens, error)
type Authentication ¶
type Authentication struct {
Webhook Webhook `yaml:"webhook"`
}
type AwsEnvironment ¶
type AwsNodeLabels ¶
type AwsNodeLabels struct {
Enabled bool `yaml:"enabled"`
}
type Cluster ¶
type Cluster struct { KubeClusterSettings `yaml:",inline"` DeploymentSettings `yaml:",inline"` DefaultWorkerSettings `yaml:",inline"` ControllerSettings `yaml:",inline"` EtcdSettings `yaml:",inline"` FlannelSettings `yaml:",inline"` ServiceCIDR string `yaml:"serviceCIDR,omitempty"` CreateRecordSet bool `yaml:"createRecordSet,omitempty"` RecordSetTTL int `yaml:"recordSetTTL,omitempty"` TLSCADurationDays int `yaml:"tlsCADurationDays,omitempty"` TLSCertDurationDays int `yaml:"tlsCertDurationDays,omitempty"` HostedZoneID string `yaml:"hostedZoneId,omitempty"` ProvidedEncryptService EncryptService CustomSettings map[string]interface{} `yaml:"customSettings,omitempty"` }
func ClusterFromBytes ¶
ClusterFromBytes Necessary for unit tests, which store configs as hardcoded strings
func ClusterFromBytesWithEncryptService ¶
func ClusterFromBytesWithEncryptService(data []byte, encryptService EncryptService) (*Cluster, error)
func ClusterFromFile ¶
func NewDefaultCluster ¶
func NewDefaultCluster() *Cluster
func (*Cluster) AvailabilityZones ¶
Returns the availability zones referenced by the cluster configuration
func (*Cluster) EtcdCluster ¶
func (c *Cluster) EtcdCluster() derived.EtcdCluster
func (Cluster) EtcdIndexEnvVarName ¶
func (Cluster) EtcdNodeEnvFileName ¶
func (*Cluster) NewAuthTokens ¶
func (c *Cluster) NewAuthTokens() *RawAuthTokens
func (*Cluster) NewTLSAssets ¶
func (c *Cluster) NewTLSAssets(caKey *rsa.PrivateKey, caCert *x509.Certificate) (*RawTLSAssets, error)
func (*Cluster) NewTLSCA ¶
func (c *Cluster) NewTLSCA() (*rsa.PrivateKey, *x509.Certificate, error)
func (*Cluster) SetDefaults ¶
func (c *Cluster) SetDefaults()
func (Cluster) StackConfig ¶
func (c Cluster) StackConfig(opts StackTemplateOptions) (*StackConfig, error)
func (Cluster) StackName ¶
StackName returns the logical name of a CloudFormation stack resource in a root stack template This is not needed to be unique in an AWS account because the actual name of a nested stack is generated randomly by CloudFormation by including the logical name. This is NOT intended to be used to reference stack name from cloud-config as the target of awscli or cfn-bootstrap-tools commands e.g. `cfn-init` and `cfn-signal`
func (Cluster) StackNameEnvVarName ¶
type ClusterAutoscalerSupport ¶
type ClusterAutoscalerSupport struct {
Enabled bool `yaml:"enabled"`
}
type CompactAuthTokens ¶
type CompactAuthTokens struct {
Contents string
}
Encrypted -> gzip -> base64 encoded auth token file contents.
func ReadOrCreateCompactAuthTokens ¶
func ReadOrCreateCompactAuthTokens(dirname string, kmsConfig KMSConfig) (*CompactAuthTokens, error)
func ReadOrCreateUnecryptedCompactAuthTokens ¶
func ReadOrCreateUnecryptedCompactAuthTokens(dirname string) (*CompactAuthTokens, error)
func (*CompactAuthTokens) HasTokens ¶
func (t *CompactAuthTokens) HasTokens() bool
type CompactTLSAssets ¶
type CompactTLSAssets struct { CACert string CAKey string APIServerCert string APIServerKey string WorkerCert string WorkerKey string AdminCert string AdminKey string EtcdCert string EtcdClientCert string EtcdClientKey string EtcdKey string }
PEM -> encrypted -> gzip -> base64 encoded TLS assets.
func ReadOrCreateCompactTLSAssets ¶
func ReadOrCreateCompactTLSAssets(tlsAssetsDir string, kmsConfig KMSConfig) (*CompactTLSAssets, error)
func ReadOrCreateUnecryptedCompactTLSAssets ¶
func ReadOrCreateUnecryptedCompactTLSAssets(tlsAssetsDir string) (*CompactTLSAssets, error)
type CompressedStackConfig ¶
type CompressedStackConfig struct {
*StackConfig
}
func (*CompressedStackConfig) RenderStackTemplateAsBytes ¶
func (c *CompressedStackConfig) RenderStackTemplateAsBytes() ([]byte, error)
func (*CompressedStackConfig) RenderStackTemplateAsString ¶
func (c *CompressedStackConfig) RenderStackTemplateAsString() (string, error)
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 Config ¶
type Config struct { Cluster EtcdNodes []derived.EtcdNode // Encoded auth tokens AuthTokensConfig *CompactAuthTokens // Encoded TLS assets TLSConfig *CompactTLSAssets }
func ConfigFromBytes ¶
func (Config) InternetGatewayLogicalName ¶
func (Config) InternetGatewayRef ¶
func (Config) VPCLogicalName ¶
type ControllerSettings ¶
type ControllerSettings struct { model.Controller `yaml:"controller,omitempty"` ControllerCount int `yaml:"controllerCount,omitempty"` ControllerCreateTimeout string `yaml:"controllerCreateTimeout,omitempty"` ControllerInstanceType string `yaml:"controllerInstanceType,omitempty"` ControllerRootVolumeType string `yaml:"controllerRootVolumeType,omitempty"` ControllerRootVolumeIOPS int `yaml:"controllerRootVolumeIOPS,omitempty"` ControllerRootVolumeSize int `yaml:"controllerRootVolumeSize,omitempty"` ControllerTenancy string `yaml:"controllerTenancy,omitempty"` }
Part of configuration which is specific to controller nodes
func (ControllerSettings) ControllerRollingUpdateMinInstancesInService ¶
func (c ControllerSettings) ControllerRollingUpdateMinInstancesInService() int
func (ControllerSettings) MaxControllerCount ¶
func (c ControllerSettings) MaxControllerCount() int
func (ControllerSettings) MinControllerCount ¶
func (c ControllerSettings) MinControllerCount() int
func (ControllerSettings) Valid ¶
func (c ControllerSettings) Valid() error
type DefaultWorkerSettings ¶
type DefaultWorkerSettings struct { WorkerCount int `yaml:"workerCount,omitempty"` 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) Valid ¶
func (c DefaultWorkerSettings) Valid() error
type DeploymentSettings ¶
type DeploymentSettings struct { ComputedDeploymentSettings ClusterName string `yaml:"clusterName,omitempty"` KeyName string `yaml:"keyName,omitempty"` Region model.Region `yaml:",inline"` AvailabilityZone string `yaml:"availabilityZone,omitempty"` ReleaseChannel string `yaml:"releaseChannel,omitempty"` AmiId string `yaml:"amiId,omitempty"` VPCID string `yaml:"vpcId,omitempty"` InternetGatewayID string `yaml:"internetGatewayId,omitempty"` RouteTableID string `yaml:"routeTableId,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"` ContainerRuntime string `yaml:"containerRuntime,omitempty"` KMSKeyARN string `yaml:"kmsKeyArn,omitempty"` StackTags map[string]string `yaml:"stackTags,omitempty"` Subnets []model.Subnet `yaml:"subnets,omitempty"` EIPAllocationIDs []string `yaml:"eipAllocationIDs,omitempty"` MapPublicIPs bool `yaml:"mapPublicIPs,omitempty"` ElasticFileSystemID string `yaml:"elasticFileSystemId,omitempty"` SSHAuthorizedKeys []string `yaml:"sshAuthorizedKeys,omitempty"` Experimental Experimental `yaml:"experimental"` ManageCertificates bool `yaml:"manageCertificates,omitempty"` WaitSignal WaitSignal `yaml:"waitSignal"` // Images repository HyperkubeImage model.Image `yaml:"hyperkubeImage,omitempty"` AWSCliImage model.Image `yaml:"awsCliImage,omitempty"` CalicoNodeImage model.Image `yaml:"calicoNodeImage,omitempty"` CalicoCniImage model.Image `yaml:"calicoCniImage,omitempty"` CalicoCtlImage model.Image `yaml:"calicoCtlImage,omitempty"` CalicoPolicyControllerImage model.Image `yaml:"calicoPolicyControllerImage,omitempty"` ClusterAutoscalerImage model.Image `yaml:"clusterAutoscalerImage,omitempty"` KubeDnsImage model.Image `yaml:"kubeDnsImage,omitempty"` KubeDnsMasqImage model.Image `yaml:"kubeDnsMasqImage,omitempty"` DnsMasqMetricsImage model.Image `yaml:"dnsMasqMetricsImage,omitempty"` ExecHealthzImage model.Image `yaml:"execHealthzImage,omitempty"` HeapsterImage model.Image `yaml:"heapsterImage,omitempty"` AddonResizerImage model.Image `yaml:"addonResizerImage,omitempty"` KubeDashboardImage model.Image `yaml:"kubeDashboardImage,omitempty"` PauseImage model.Image `yaml:"pauseImage,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() []model.Subnet
func (DeploymentSettings) AssetsEncryptionEnabled ¶
func (c DeploymentSettings) AssetsEncryptionEnabled() bool
func (DeploymentSettings) FindNATGatewayForPrivateSubnet ¶
func (c DeploymentSettings) FindNATGatewayForPrivateSubnet(s model.Subnet) (*model.NATGateway, error)
func (DeploymentSettings) FindSubnetMatching ¶
func (c DeploymentSettings) FindSubnetMatching(condition model.Subnet) model.Subnet
func (DeploymentSettings) NATGateways ¶
func (c DeploymentSettings) NATGateways() []model.NATGateway
func (DeploymentSettings) PrivateSubnets ¶
func (c DeploymentSettings) PrivateSubnets() []model.Subnet
func (DeploymentSettings) PublicSubnets ¶
func (c DeploymentSettings) PublicSubnets() []model.Subnet
func (DeploymentSettings) Valid ¶
func (c DeploymentSettings) Valid() (*DeploymentValidationResult, error)
type DeploymentValidationResult ¶
type DeploymentValidationResult struct {
// contains filtered or unexported fields
}
type EncryptService ¶
type EncryptService interface {
Encrypt(*kms.EncryptInput) (*kms.EncryptOutput, error)
}
type EncryptedAuthTokens ¶
type EncryptedAuthTokens struct {
AuthTokens
}
Encrypted contents of the CSV file holding auth tokens.
func ReadEncryptedAuthTokens ¶
func ReadEncryptedAuthTokens(dirname string) (*EncryptedAuthTokens, error)
func ReadOrCreateEncryptedAuthTokens ¶
func ReadOrCreateEncryptedAuthTokens(dirname string, kmsConfig KMSConfig) (*EncryptedAuthTokens, error)
func (*EncryptedAuthTokens) WriteToDir ¶
func (r *EncryptedAuthTokens) WriteToDir(dirname string) error
type EncryptedTLSAssets ¶
type EncryptedTLSAssets struct {
TLSAssets
}
Encrypted PEM encoded TLS assets
func ReadEncryptedTLSAssets ¶
func ReadEncryptedTLSAssets(dirname string) (*EncryptedTLSAssets, error)
func ReadOrCreateEncryptedTLSAssets ¶
func ReadOrCreateEncryptedTLSAssets(tlsAssetsDir string, kmsConfig KMSConfig) (*EncryptedTLSAssets, error)
func (*EncryptedTLSAssets) WriteToDir ¶
func (r *EncryptedTLSAssets) WriteToDir(dirname string, includeCAKey bool) error
type EphemeralImageStorage ¶
type EtcdSettings ¶
type EtcdSettings struct { model.Etcd `yaml:"etcd,omitempty"` EtcdCount int `yaml:"etcdCount"` EtcdInstanceType string `yaml:"etcdInstanceType,omitempty"` EtcdRootVolumeSize int `yaml:"etcdRootVolumeSize,omitempty"` EtcdRootVolumeType string `yaml:"etcdRootVolumeType,omitempty"` EtcdRootVolumeIOPS int `yaml:"etcdRootVolumeIOPS,omitempty"` EtcdDataVolumeSize int `yaml:"etcdDataVolumeSize,omitempty"` EtcdDataVolumeType string `yaml:"etcdDataVolumeType,omitempty"` EtcdDataVolumeIOPS int `yaml:"etcdDataVolumeIOPS,omitempty"` EtcdDataVolumeEphemeral bool `yaml:"etcdDataVolumeEphemeral,omitempty"` EtcdDataVolumeEncrypted bool `yaml:"etcdDataVolumeEncrypted,omitempty"` EtcdTenancy string `yaml:"etcdTenancy,omitempty"` }
Part of configuration which is specific to etcd nodes
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"` ClusterAutoscalerSupport ClusterAutoscalerSupport `yaml:"clusterAutoscalerSupport"` EphemeralImageStorage EphemeralImageStorage `yaml:"ephemeralImageStorage"` Kube2IamSupport Kube2IamSupport `yaml:"kube2IamSupport,omitempty"` LoadBalancer LoadBalancer `yaml:"loadBalancer"` TargetGroup TargetGroup `yaml:"targetGroup"` NodeDrainer NodeDrainer `yaml:"nodeDrainer"` NodeLabels NodeLabels `yaml:"nodeLabels"` Plugins Plugins `yaml:"plugins"` Taints []Taint `yaml:"taints"` }
func (Experimental) Valid ¶
func (c Experimental) Valid() error
type FlannelSettings ¶
type FlannelSettings struct {
PodCIDR string `yaml:"podCIDR,omitempty"`
}
Part of configuration which is specific to flanneld
type InfrastructureValidationResult ¶
type InfrastructureValidationResult struct {
// contains filtered or unexported fields
}
type KMSConfig ¶
type KMSConfig struct { Region model.Region EncryptService EncryptService KMSKeyARN string }
type Kube2IamSupport ¶
type Kube2IamSupport struct {
Enabled bool `yaml:"enabled"`
}
type KubeClusterSettings ¶
type KubeClusterSettings struct { // 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"` UseCalico bool `yaml:"useCalico,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) APIServerEndpoint ¶
func (c KubeClusterSettings) APIServerEndpoint() string
Required by kubelet to locate the apiserver
func (KubeClusterSettings) K8sNetworkPlugin ¶
func (c KubeClusterSettings) K8sNetworkPlugin() string
Required by kubelet to use the consistent network plugin with the base cluster
func (KubeClusterSettings) Valid ¶
func (c KubeClusterSettings) Valid() (*InfrastructureValidationResult, error)
type LoadBalancer ¶
type NodeDrainer ¶
type NodeDrainer struct {
Enabled bool `yaml:"enabled"`
}
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 PodSecurityPolicy ¶
type PodSecurityPolicy struct {
Enabled bool `yaml:"enabled"`
}
type RawAuthTokens ¶
type RawAuthTokens struct {
AuthTokens
}
Contents of the CSV file holding auth tokens.
func ReadRawAuthTokens ¶
func ReadRawAuthTokens(dirname string) (*RawAuthTokens, error)
func (*RawAuthTokens) Encrypt ¶
func (r *RawAuthTokens) Encrypt(kMSKeyARN string, kmsSvc EncryptService) (*EncryptedAuthTokens, error)
func (*RawAuthTokens) WriteToDir ¶
func (r *RawAuthTokens) WriteToDir(dirname string) error
type RawTLSAssets ¶
type RawTLSAssets struct {
TLSAssets
}
PEM encoded TLS assets.
func ReadRawTLSAssets ¶
func ReadRawTLSAssets(dirname string) (*RawTLSAssets, error)
func (*RawTLSAssets) Encrypt ¶
func (r *RawTLSAssets) Encrypt(kMSKeyARN string, kmsSvc EncryptService) (*EncryptedTLSAssets, error)
func (*RawTLSAssets) WriteToDir ¶
func (r *RawTLSAssets) WriteToDir(dirname string, includeCAKey bool) error
type StackConfig ¶
type StackConfig struct { *Config StackTemplateOptions UserDataWorker string UserDataController string UserDataEtcd string ControllerSubnetIndex int }
func (*StackConfig) Compress ¶
func (c *StackConfig) Compress() (*CompressedStackConfig, error)
func (*StackConfig) UserDataControllerS3Path ¶
func (c *StackConfig) UserDataControllerS3Path() (string, error)
func (*StackConfig) UserDataEtcdS3Path ¶
func (c *StackConfig) UserDataEtcdS3Path() (string, error)
func (*StackConfig) ValidateUserData ¶
func (c *StackConfig) ValidateUserData() error
type StackTemplateOptions ¶
type TLSAssets ¶
type TLSAssets struct { CACert []byte CAKey []byte APIServerCert []byte APIServerKey []byte WorkerCert []byte WorkerKey []byte AdminCert []byte AdminKey []byte EtcdCert []byte EtcdClientCert []byte EtcdKey []byte EtcdClientKey []byte }
PEM encoded TLS assets.
func (*TLSAssets) Compact ¶
func (r *TLSAssets) Compact() (*CompactTLSAssets, error)
type Taint ¶
type TargetGroup ¶
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() int