config

package
v0.9.5-rc.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2017 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithTrailingDot

func WithTrailingDot(s string) string

Types

type Admission

type Admission struct {
	PodSecurityPolicy PodSecurityPolicy `yaml:"podSecurityPolicy"`
}

type AuditLog

type AuditLog struct {
	Enabled bool   `yaml:"enabled"`
	MaxAge  int    `yaml:"maxage"`
	LogPath string `yaml:"logpath"`
}

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 AwsEnvironment struct {
	Enabled     bool              `yaml:"enabled"`
	Environment map[string]string `yaml:"environment"`
}

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

func ClusterFromBytes(data []byte) (*Cluster, error)

ClusterFromBytes Necessary for unit tests, which store configs as hardcoded strings

func ClusterFromBytesWithEncryptService

func ClusterFromBytesWithEncryptService(data []byte, encryptService EncryptService) (*Cluster, error)

func ClusterFromFile

func ClusterFromFile(filename string) (*Cluster, error)

func NewDefaultCluster

func NewDefaultCluster() *Cluster

func (*Cluster) AvailabilityZones

func (c *Cluster) AvailabilityZones() []string

Returns the availability zones referenced by the cluster configuration

func (Cluster) Config

func (c Cluster) Config() (*Config, error)

func (*Cluster) EtcdCluster

func (c *Cluster) EtcdCluster() derived.EtcdCluster

func (Cluster) EtcdIndexEnvVarName

func (c Cluster) EtcdIndexEnvVarName() string

func (Cluster) EtcdNodeEnvFileName

func (c Cluster) EtcdNodeEnvFileName() string

func (*Cluster) Load

func (c *Cluster) Load() error

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

func (c Cluster) StackName() string

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

func (c Cluster) StackNameEnvVarName() string

func (*Cluster) ValidateExistingVPC

func (c *Cluster) ValidateExistingVPC(existingVPCCIDR string, existingSubnetCIDRS []string) error

Validates the an existing VPC and it's existing subnets do not conflict with this cluster configuration

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 ConfigFromBytes(data []byte) (*Config, error)

func (Config) InternetGatewayLogicalName

func (c Config) InternetGatewayLogicalName() string

func (Config) InternetGatewayRef

func (c Config) InternetGatewayRef() string

func (Config) VPCLogicalName

func (c Config) VPCLogicalName() string

func (Config) VPCRef

func (c Config) VPCRef() string

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

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 EphemeralImageStorage struct {
	Enabled    bool   `yaml:"enabled"`
	Disk       string `yaml:"disk"`
	Filesystem string `yaml:"filesystem"`
}

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

type LoadBalancer

type LoadBalancer struct {
	Enabled          bool     `yaml:"enabled"`
	Names            []string `yaml:"names"`
	SecurityGroupIds []string `yaml:"securityGroupIds"`
}

type NodeDrainer

type NodeDrainer struct {
	Enabled bool `yaml:"enabled"`
}

type NodeLabels

type NodeLabels map[string]string

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 Plugins

type Plugins struct {
	Rbac Rbac `yaml:"rbac"`
}

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 Rbac

type Rbac struct {
	Enabled bool `yaml:"enabled"`
}

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 StackTemplateOptions struct {
	AssetsDir             string
	ControllerTmplFile    string
	EtcdTmplFile          string
	StackTemplateTmplFile string
	S3URI                 string
	PrettyPrint           bool
	SkipWait              bool
}

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 Taint struct {
	Key    string `yaml:"key"`
	Value  string `yaml:"value"`
	Effect string `yaml:"effect"`
}

func (Taint) String

func (t Taint) String() string

type TargetGroup

type TargetGroup struct {
	Enabled          bool     `yaml:"enabled"`
	Arns             []string `yaml:"arns"`
	SecurityGroupIds []string `yaml:"securityGroupIds"`
}

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

type Webhook

type Webhook struct {
	Enabled  bool   `yaml:"enabled"`
	CacheTTL string `yaml:"cacheTTL"`
	Config   string `yaml:"configBase64"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL