clusterconfig

package
v0.20.0 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2020 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	InstanceTypeKey                        = "instance_type"
	MinInstancesKey                        = "min_instances"
	MaxInstancesKey                        = "max_instances"
	TagsKey                                = "tags"
	InstanceVolumeSizeKey                  = "instance_volume_size"
	InstanceVolumeTypeKey                  = "instance_volume_type"
	InstanceVolumeIOPSKey                  = "instance_volume_iops"
	SpotKey                                = "spot"
	SpotConfigKey                          = "spot_config"
	InstanceDistributionKey                = "instance_distribution"
	OnDemandBaseCapacityKey                = "on_demand_base_capacity"
	OnDemandPercentageAboveBaseCapacityKey = "on_demand_percentage_above_base_capacity"
	MaxPriceKey                            = "max_price"
	InstancePoolsKey                       = "instance_pools"
	OnDemandBackupKey                      = "on_demand_backup"
	ClusterNameKey                         = "cluster_name"
	RegionKey                              = "region"
	AvailabilityZonesKey                   = "availability_zones"
	SSLCertificateARNKey                   = "ssl_certificate_arn"
	BucketKey                              = "bucket"
	LogGroupKey                            = "log_group"
	SubnetVisibilityKey                    = "subnet_visibility"
	NATGatewayKey                          = "nat_gateway"
	APILoadBalancerSchemeKey               = "api_load_balancer_scheme"
	OperatorLoadBalancerSchemeKey          = "operator_load_balancer_scheme"
	APIGatewaySettingKey                   = "api_gateway"
	VPCCIDRKey                             = "vpc_cidr"
	TelemetryKey                           = "telemetry"
	ImageOperatorKey                       = "image_operator"
	ImageManagerKey                        = "image_manager"
	ImageDownloaderKey                     = "image_downloader"
	ImageRequestMonitorKey                 = "image_request_monitor"
	ImageClusterAutoscalerKey              = "image_cluster_autoscaler"
	ImageMetricsServerKey                  = "image_metrics_server"
	ImageInferentiaKey                     = "image_inferentia"
	ImageNeuronRTDKey                      = "image_neuron_rtd"
	ImageNvidiaKey                         = "image_nvidia"
	ImageFluentdKey                        = "image_fluentd"
	ImageStatsdKey                         = "image_statsd"
	ImageIstioProxyKey                     = "image_istio_proxy"
	ImageIstioPilotKey                     = "image_istio_pilot"
	ImageIstioCitadelKey                   = "image_istio_citadel"
	ImageIstioGalleyKey                    = "image_istio_galley"

	// User facing string
	APIVersionUserKey                          = "cluster version"
	ClusterNameUserKey                         = "cluster name"
	RegionUserKey                              = "aws region"
	AvailabilityZonesUserKey                   = "availability zones"
	SSLCertificateARNUserKey                   = "ssl certificate arn"
	BucketUserKey                              = "s3 bucket"
	SpotUserKey                                = "use spot instances"
	InstanceTypeUserKey                        = "instance type"
	MinInstancesUserKey                        = "min instances"
	MaxInstancesUserKey                        = "max instances"
	TagsUserKey                                = "tags"
	InstanceVolumeSizeUserKey                  = "instance volume size (Gi)"
	InstanceVolumeTypeUserKey                  = "instance volume type"
	InstanceVolumeIOPSUserKey                  = "instance volume iops"
	InstanceDistributionUserKey                = "spot instance distribution"
	OnDemandBaseCapacityUserKey                = "spot on demand base capacity"
	OnDemandPercentageAboveBaseCapacityUserKey = "spot on demand percentage above base capacity"
	MaxPriceUserKey                            = "spot max price ($ per hour)"
	InstancePoolsUserKey                       = "spot instance pools"
	OnDemandBackupUserKey                      = "on demand backup"
	LogGroupUserKey                            = "cloudwatch log group"
	SubnetVisibilityUserKey                    = "subnet visibility"
	NATGatewayUserKey                          = "nat gateway"
	APILoadBalancerSchemeUserKey               = "api load balancer scheme"
	OperatorLoadBalancerSchemeUserKey          = "operator load balancer scheme"
	APIGatewaySettingUserKey                   = "api gateway"
	VPCCIDRUserKey                             = "vpc cidr"
	TelemetryUserKey                           = "telemetry"
	ImageOperatorUserKey                       = "operator image"
	ImageManagerUserKey                        = "manager image"
	ImageDownloaderUserKey                     = "downloader image"
	ImageRequestMonitorUserKey                 = "request monitor image"
	ImageClusterAutoscalerUserKey              = "cluster autoscaler image"
	ImageMetricsServerUserKey                  = "metrics server image"
	ImageInferentiaUserKey                     = "inferentia image"
	ImageNeuronRTDUserKey                      = "neuron rtd image"
	ImageNvidiaUserKey                         = "nvidia image"
	ImageFluentdUserKey                        = "fluentd image"
	ImageStatsdUserKey                         = "statsd image"
	ImageIstioProxyUserKey                     = "istio proxy image"
	ImageIstioPilotUserKey                     = "istio pilot image"
	ImageIstioCitadelUserKey                   = "istio citadel image"
	ImageIstioGalleyUserKey                    = "istio galley image"
)
View Source
const (
	ErrInvalidRegion                          = "clusterconfig.invalid_region"
	ErrInstanceTypeTooSmall                   = "clusterconfig.instance_type_too_small"
	ErrMinInstancesGreaterThanMax             = "clusterconfig.min_instances_greater_than_max"
	ErrInstanceTypeNotSupportedInRegion       = "clusterconfig.instance_type_not_supported_in_region"
	ErrIncompatibleSpotInstanceTypeMemory     = "clusterconfig.incompatible_spot_instance_type_memory"
	ErrIncompatibleSpotInstanceTypeCPU        = "clusterconfig.incompatible_spot_instance_type_cpu"
	ErrIncompatibleSpotInstanceTypeGPU        = "clusterconfig.incompatible_spot_instance_type_gpu"
	ErrIncompatibleSpotInstanceTypeInf        = "clusterconfig.incompatible_spot_instance_type_inf"
	ErrSpotPriceGreaterThanTargetOnDemand     = "clusterconfig.spot_price_greater_than_target_on_demand"
	ErrSpotPriceGreaterThanMaxPrice           = "clusterconfig.spot_price_greater_than_max_price"
	ErrInstanceTypeNotSupported               = "clusterconfig.instance_type_not_supported"
	ErrAtLeastOneInstanceDistribution         = "clusterconfig.at_least_one_instance_distribution"
	ErrNoCompatibleSpotInstanceFound          = "clusterconfig.no_compatible_spot_instance_found"
	ErrConfiguredWhenSpotIsNotEnabled         = "clusterconfig.configured_when_spot_is_not_enabled"
	ErrOnDemandBaseCapacityGreaterThanMax     = "clusterconfig.on_demand_base_capacity_greater_than_max"
	ErrConfigCannotBeChangedOnUpdate          = "clusterconfig.config_cannot_be_changed_on_update"
	ErrInvalidAvailabilityZone                = "clusterconfig.invalid_availability_zone"
	ErrUnsupportedAvailabilityZone            = "clusterconfig.unsupported_availability_zone"
	ErrNotEnoughValidDefaultAvailibilityZones = "clusterconfig.not_enough_valid_default_availability_zones"
	ErrDidNotMatchStrictS3Regex               = "clusterconfig.did_not_match_strict_s3_regex"
	ErrNATRequiredWithPrivateSubnetVisibility = "clusterconfig.nat_required_with_private_subnet_visibility"
	ErrS3RegionDiffersFromCluster             = "clusterconfig.s3_region_differs_from_cluster"
	ErrInvalidInstanceType                    = "clusterconfig.invalid_instance_type"
	ErrIOPSNotSupported                       = "clusterconfig.iops_not_supported"
	ErrIOPSTooLarge                           = "clusterconfig.iops_too_large"
	ErrCantOverrideDefaultTag                 = "clusterconfig.cant_override_default_tag"
	ErrSSLCertificateARNNotFound              = "clusterconfig.ssl_certificate_arn_not_found"
)
View Source
const (
	ClusterNameTag = "cortex.dev/cluster-name"
)

Variables

View Source
var AccessPromptValidation = &cr.PromptValidation{
	SkipNonNilFields: true,
	PromptItemValidations: []*cr.PromptItemValidation{
		{
			StructField: "ClusterName",
			PromptOpts: &prompt.Options{
				Prompt: ClusterNameUserKey,
			},
			StringPtrValidation: &cr.StringPtrValidation{
				Default:   pointer.String("cortex"),
				MaxLength: 63,
				MinLength: 3,
				Validator: validateClusterName,
			},
		},
		{
			StructField: "Region",
			PromptOpts: &prompt.Options{
				Prompt: RegionUserKey,
			},
			StringPtrValidation: &cr.StringPtrValidation{
				Validator: RegionValidator,
				Default:   pointer.String("us-east-1"),
			},
		},
	},
}
View Source
var AccessValidation = &cr.StructValidation{
	AllowExtraFields: true,
	StructFieldValidations: []*cr.StructFieldValidation{
		{
			StructField: "ClusterName",
			StringPtrValidation: &cr.StringPtrValidation{
				MaxLength: 63,
				MinLength: 3,
				Validator: validateClusterName,
			},
		},
		{
			StructField: "Region",
			StringPtrValidation: &cr.StringPtrValidation{
				Validator: RegionValidator,
			},
		},
		{
			StructField: "ImageManager",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/manager:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
	},
}
View Source
var UserValidation = &cr.StructValidation{
	Required: true,
	StructFieldValidations: []*cr.StructFieldValidation{
		{
			StructField: "InstanceType",
			StringPtrValidation: &cr.StringPtrValidation{
				Validator: validateInstanceType,
			},
		},
		{
			StructField: "MinInstances",
			Int64PtrValidation: &cr.Int64PtrValidation{
				GreaterThanOrEqualTo: pointer.Int64(0),
			},
		},
		{
			StructField: "MaxInstances",
			Int64PtrValidation: &cr.Int64PtrValidation{
				GreaterThan: pointer.Int64(0),
			},
		},
		{
			StructField: "InstanceVolumeSize",
			Int64Validation: &cr.Int64Validation{
				Default:              50,
				GreaterThanOrEqualTo: pointer.Int64(20),
				LessThanOrEqualTo:    pointer.Int64(16384),
			},
		},
		{
			StructField: "InstanceVolumeType",
			StringValidation: &cr.StringValidation{
				AllowedValues: VolumeTypesStrings(),
				Default:       GP2VolumeType.String(),
			},
			Parser: func(str string) (interface{}, error) {
				return VolumeTypeFromString(str), nil
			},
		},
		{
			StructField: "Tags",
			StringMapValidation: &cr.StringMapValidation{
				AllowExplicitNull:  true,
				AllowEmpty:         true,
				ConvertNullToEmpty: true,
				KeyStringValidator: &cr.StringValidation{
					MinLength:                  1,
					MaxLength:                  127,
					DisallowLeadingWhitespace:  true,
					DisallowTrailingWhitespace: true,
					InvalidPrefixes:            _invalidTagPrefixes,
					AWSTag:                     true,
				},
				ValueStringValidator: &cr.StringValidation{
					MinLength:                  1,
					MaxLength:                  255,
					DisallowLeadingWhitespace:  true,
					DisallowTrailingWhitespace: true,
					InvalidPrefixes:            _invalidTagPrefixes,
					AWSTag:                     true,
				},
			},
		},
		{
			StructField: "SSLCertificateARN",
			StringPtrValidation: &cr.StringPtrValidation{
				AllowExplicitNull: true,
			},
		},
		{
			StructField: "InstanceVolumeIOPS",
			Int64PtrValidation: &cr.Int64PtrValidation{
				GreaterThanOrEqualTo: pointer.Int64(100),
				LessThanOrEqualTo:    pointer.Int64(64000),
				AllowExplicitNull:    true,
			},
		},
		{
			StructField: "Spot",
			BoolPtrValidation: &cr.BoolPtrValidation{
				Default: pointer.Bool(false),
			},
		},
		{
			StructField: "SpotConfig",
			StructValidation: &cr.StructValidation{
				DefaultNil:        true,
				AllowExplicitNull: true,
				StructFieldValidations: []*cr.StructFieldValidation{
					{
						StructField: "InstanceDistribution",
						StringListValidation: &cr.StringListValidation{
							DisallowDups:      true,
							Validator:         validateInstanceDistribution,
							AllowExplicitNull: true,
						},
					},
					{
						StructField: "OnDemandBaseCapacity",
						Int64PtrValidation: &cr.Int64PtrValidation{
							GreaterThanOrEqualTo: pointer.Int64(0),
							AllowExplicitNull:    true,
						},
					},
					{
						StructField: "OnDemandPercentageAboveBaseCapacity",
						Int64PtrValidation: &cr.Int64PtrValidation{
							GreaterThanOrEqualTo: pointer.Int64(0),
							LessThanOrEqualTo:    pointer.Int64(100),
							AllowExplicitNull:    true,
						},
					},
					{
						StructField: "MaxPrice",
						Float64PtrValidation: &cr.Float64PtrValidation{
							GreaterThan:       pointer.Float64(0),
							AllowExplicitNull: true,
						},
					},
					{
						StructField: "InstancePools",
						Int64PtrValidation: &cr.Int64PtrValidation{
							GreaterThanOrEqualTo: pointer.Int64(1),
							LessThanOrEqualTo:    pointer.Int64(int64(_maxInstancePools)),
							AllowExplicitNull:    true,
						},
					},
					{
						StructField: "OnDemandBackup",
						BoolPtrValidation: &cr.BoolPtrValidation{
							Default: pointer.Bool(true),
						},
					},
				},
			},
		},
		{
			StructField: "ClusterName",
			StringValidation: &cr.StringValidation{
				Default:   "cortex",
				MaxLength: 63,
				MinLength: 3,
				Validator: validateClusterName,
			},
		},
		{
			StructField: "Region",
			StringPtrValidation: &cr.StringPtrValidation{
				Validator: RegionValidator,
			},
		},
		{
			StructField: "AvailabilityZones",
			StringListValidation: &cr.StringListValidation{
				AllowEmpty:        true,
				AllowExplicitNull: true,
				DisallowDups:      true,
				InvalidLengths:    []int{1},
			},
		},
		{
			StructField: "Bucket",
			StringValidation: &cr.StringValidation{
				AllowEmpty:       true,
				TreatNullAsEmpty: true,
				Validator:        validateBucketNameOrEmpty,
			},
		},
		{
			StructField: "LogGroup",
			StringValidation: &cr.StringValidation{
				MaxLength: 63,
			},
			DefaultField: "ClusterName",
		},
		{
			StructField: "SubnetVisibility",
			StringValidation: &cr.StringValidation{
				AllowedValues: SubnetVisibilityStrings(),
				Default:       PublicSubnetVisibility.String(),
			},
			Parser: func(str string) (interface{}, error) {
				return SubnetVisibilityFromString(str), nil
			},
		},
		{
			StructField: "NATGateway",
			StringValidation: &cr.StringValidation{
				AllowedValues: NATGatewayStrings(),
			},
			Parser: func(str string) (interface{}, error) {
				return NATGatewayFromString(str), nil
			},
			DefaultField: "SubnetVisibility",
			DefaultFieldFunc: func(val interface{}) interface{} {
				if val.(SubnetVisibility) == PublicSubnetVisibility {
					return NoneNATGateway.String()
				}
				return SingleNATGateway.String()
			},
		},
		{
			StructField: "APILoadBalancerScheme",
			StringValidation: &cr.StringValidation{
				AllowedValues: LoadBalancerSchemeStrings(),
				Default:       InternetFacingLoadBalancerScheme.String(),
			},
			Parser: func(str string) (interface{}, error) {
				return LoadBalancerSchemeFromString(str), nil
			},
		},
		{
			StructField: "OperatorLoadBalancerScheme",
			StringValidation: &cr.StringValidation{
				AllowedValues: LoadBalancerSchemeStrings(),
				Default:       InternetFacingLoadBalancerScheme.String(),
			},
			Parser: func(str string) (interface{}, error) {
				return LoadBalancerSchemeFromString(str), nil
			},
		},
		{
			StructField: "APIGatewaySetting",
			StringValidation: &cr.StringValidation{
				AllowedValues: APIGatewaySettingStrings(),
				Default:       PublicAPIGatewaySetting.String(),
			},
			Parser: func(str string) (interface{}, error) {
				return APIGatewaySettingFromString(str), nil
			},
		},
		{
			StructField: "VPCCIDR",
			StringPtrValidation: &cr.StringPtrValidation{
				Validator: validateVPCCIDR,
			},
		},
		{
			StructField: "ImageOperator",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/operator:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageManager",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/manager:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageDownloader",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/downloader:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageRequestMonitor",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/request-monitor:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageClusterAutoscaler",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/cluster-autoscaler:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageMetricsServer",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/metrics-server:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageInferentia",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/inferentia:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageNeuronRTD",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/neuron-rtd:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageNvidia",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/nvidia:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageFluentd",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/fluentd:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageStatsd",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/statsd:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageIstioProxy",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/istio-proxy:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageIstioPilot",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/istio-pilot:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageIstioCitadel",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/istio-citadel:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
		{
			StructField: "ImageIstioGalley",
			StringValidation: &cr.StringValidation{
				Default:   "cortexlabs/istio-galley:" + consts.CortexVersion,
				Validator: validateImageVersion,
			},
		},
	},
}
View Source
var Validation = &cr.StructValidation{
	StructFieldValidations: append(UserValidation.StructFieldValidations,
		&cr.StructFieldValidation{
			StructField: "Telemetry",
			BoolValidation: &cr.BoolValidation{
				Default: true,
			},
		},
	),
}

Functions

func APIGatewaySettingStrings added in v0.19.0

func APIGatewaySettingStrings() []string

func AutoGenerateSpotConfig

func AutoGenerateSpotConfig(awsClient *aws.Client, spotConfig *SpotConfig, region string, instanceType string) error

func CheckSpotInstanceCompatibility

func CheckSpotInstanceCompatibility(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error

func CheckSpotInstancePriceCompatibility added in v0.15.0

func CheckSpotInstancePriceCompatibility(target aws.InstanceMetadata, suggested aws.InstanceMetadata, maxPrice *float64, spotInstancePrice float64) error

func ConfigurePrompt added in v0.17.0

func ConfigurePrompt(userClusterConfig *Config, cachedClusterConfig *Config, skipPopulatedFields bool, disallowPrompt bool) error

func ErrorCantOverrideDefaultTag added in v0.18.0

func ErrorCantOverrideDefaultTag() error

func ErrorConfigCannotBeChangedOnUpdate

func ErrorConfigCannotBeChangedOnUpdate(configKey string, prevVal interface{}) error

func ErrorConfiguredWhenSpotIsNotEnabled

func ErrorConfiguredWhenSpotIsNotEnabled(configKey string) error

func ErrorDidNotMatchStrictS3Regex

func ErrorDidNotMatchStrictS3Regex() error

func ErrorIOPSNotSupported added in v0.16.0

func ErrorIOPSNotSupported(volumeType VolumeType) error

func ErrorIOPSTooLarge added in v0.16.0

func ErrorIOPSTooLarge(iops int64, volumeSize int64) error

func ErrorIncompatibleSpotInstanceTypeCPU

func ErrorIncompatibleSpotInstanceTypeCPU(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error

func ErrorIncompatibleSpotInstanceTypeGPU

func ErrorIncompatibleSpotInstanceTypeGPU(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error

func ErrorIncompatibleSpotInstanceTypeInf added in v0.18.0

func ErrorIncompatibleSpotInstanceTypeInf(suggested aws.InstanceMetadata) error

func ErrorIncompatibleSpotInstanceTypeMemory

func ErrorIncompatibleSpotInstanceTypeMemory(target aws.InstanceMetadata, suggested aws.InstanceMetadata) error

func ErrorInstanceTypeNotSupported

func ErrorInstanceTypeNotSupported(instanceType string) error

func ErrorInstanceTypeNotSupportedInRegion

func ErrorInstanceTypeNotSupportedInRegion(instanceType string, region string) error

func ErrorInstanceTypeTooSmall

func ErrorInstanceTypeTooSmall() error

func ErrorInvalidAvailabilityZone

func ErrorInvalidAvailabilityZone(userZone string, allZones strset.Set, region string) error

func ErrorInvalidInstanceType

func ErrorInvalidInstanceType(instanceType string) error

func ErrorInvalidRegion added in v0.15.0

func ErrorInvalidRegion(region string) error

func ErrorMinInstancesGreaterThanMax

func ErrorMinInstancesGreaterThanMax(min int64, max int64) error

func ErrorNATRequiredWithPrivateSubnetVisibility added in v0.16.0

func ErrorNATRequiredWithPrivateSubnetVisibility() error

func ErrorNotEnoughDefaultSupportedZones added in v0.15.0

func ErrorNotEnoughDefaultSupportedZones(region string, validZones strset.Set, instanceType string, instanceTypes ...string) error

func ErrorOnDemandBaseCapacityGreaterThanMax

func ErrorOnDemandBaseCapacityGreaterThanMax(onDemandBaseCapacity int64, max int64) error

func ErrorS3RegionDiffersFromCluster

func ErrorS3RegionDiffersFromCluster(bucketName string, bucketRegion string, clusterRegion string) error

func ErrorSSLCertificateARNNotFound added in v0.17.0

func ErrorSSLCertificateARNNotFound(sslCertificateARN string, region string) error

func ErrorSpotPriceGreaterThanMaxPrice

func ErrorSpotPriceGreaterThanMaxPrice(suggestedSpotPrice float64, maxPrice float64, suggested aws.InstanceMetadata) error

func ErrorSpotPriceGreaterThanTargetOnDemand

func ErrorSpotPriceGreaterThanTargetOnDemand(spotPrice float64, target aws.InstanceMetadata, suggested aws.InstanceMetadata) error

func ErrorUnsupportedAvailabilityZone added in v0.15.0

func ErrorUnsupportedAvailabilityZone(userZone string, instanceType string, instanceTypes ...string) error

func InstallPrompt

func InstallPrompt(clusterConfig *Config, disallowPrompt bool) error

func LoadBalancerSchemeStrings added in v0.16.0

func LoadBalancerSchemeStrings() []string

func NATGatewayStrings added in v0.16.0

func NATGatewayStrings() []string

func RegionPrompt

func RegionPrompt(clusterConfig *Config, disallowPrompt bool) error

func RegionValidator added in v0.16.0

func RegionValidator(region string) (string, error)

func SQSNamePrefix added in v0.19.0

func SQSNamePrefix(clusterName string) string

func SetDefaults

func SetDefaults(cc *Config) error

This does not set defaults for fields that are prompted from the user

func SubnetVisibilityStrings added in v0.16.0

func SubnetVisibilityStrings() []string

func ValidateRegion added in v0.15.0

func ValidateRegion(region string) error

func VolumeTypesStrings added in v0.16.0

func VolumeTypesStrings() []string

Types

type APIGatewaySetting added in v0.19.0

type APIGatewaySetting int
const (
	UnknownAPIGatewaySetting APIGatewaySetting = iota
	PublicAPIGatewaySetting
	NoneAPIGatewaySetting
)

func APIGatewaySettingFromString added in v0.19.0

func APIGatewaySettingFromString(s string) APIGatewaySetting

func (APIGatewaySetting) MarshalBinary added in v0.19.0

func (t APIGatewaySetting) MarshalBinary() ([]byte, error)

MarshalBinary satisfies BinaryMarshaler

func (APIGatewaySetting) MarshalText added in v0.19.0

func (t APIGatewaySetting) MarshalText() ([]byte, error)

MarshalText satisfies TextMarshaler

func (APIGatewaySetting) String added in v0.19.0

func (t APIGatewaySetting) String() string

func (*APIGatewaySetting) UnmarshalBinary added in v0.19.0

func (t *APIGatewaySetting) UnmarshalBinary(data []byte) error

UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack

func (*APIGatewaySetting) UnmarshalText added in v0.19.0

func (t *APIGatewaySetting) UnmarshalText(text []byte) error

UnmarshalText satisfies TextUnmarshaler

type AccessConfig

type AccessConfig struct {
	ClusterName  *string `json:"cluster_name" yaml:"cluster_name"`
	Region       *string `json:"region" yaml:"region"`
	ImageManager string  `json:"image_manager" yaml:"image_manager"`
}

The bare minimum to identify a cluster

func DefaultAccessConfig

func DefaultAccessConfig() (*AccessConfig, error)

type Config

type Config struct {
	InstanceType               *string            `json:"instance_type" yaml:"instance_type"`
	MinInstances               *int64             `json:"min_instances" yaml:"min_instances"`
	MaxInstances               *int64             `json:"max_instances" yaml:"max_instances"`
	InstanceVolumeSize         int64              `json:"instance_volume_size" yaml:"instance_volume_size"`
	InstanceVolumeType         VolumeType         `json:"instance_volume_type" yaml:"instance_volume_type"`
	InstanceVolumeIOPS         *int64             `json:"instance_volume_iops" yaml:"instance_volume_iops"`
	Tags                       map[string]string  `json:"tags" yaml:"tags"`
	Spot                       *bool              `json:"spot" yaml:"spot"`
	SpotConfig                 *SpotConfig        `json:"spot_config" yaml:"spot_config"`
	ClusterName                string             `json:"cluster_name" yaml:"cluster_name"`
	Region                     *string            `json:"region" yaml:"region"`
	AvailabilityZones          []string           `json:"availability_zones" yaml:"availability_zones"`
	SSLCertificateARN          *string            `json:"ssl_certificate_arn,omitempty" yaml:"ssl_certificate_arn,omitempty"`
	Bucket                     string             `json:"bucket" yaml:"bucket"`
	LogGroup                   string             `json:"log_group" yaml:"log_group"`
	SubnetVisibility           SubnetVisibility   `json:"subnet_visibility" yaml:"subnet_visibility"`
	NATGateway                 NATGateway         `json:"nat_gateway" yaml:"nat_gateway"`
	APILoadBalancerScheme      LoadBalancerScheme `json:"api_load_balancer_scheme" yaml:"api_load_balancer_scheme"`
	OperatorLoadBalancerScheme LoadBalancerScheme `json:"operator_load_balancer_scheme" yaml:"operator_load_balancer_scheme"`
	APIGatewaySetting          APIGatewaySetting  `json:"api_gateway" yaml:"api_gateway"`
	VPCCIDR                    *string            `json:"vpc_cidr,omitempty" yaml:"vpc_cidr,omitempty"`
	Telemetry                  bool               `json:"telemetry" yaml:"telemetry"`
	ImageOperator              string             `json:"image_operator" yaml:"image_operator"`
	ImageManager               string             `json:"image_manager" yaml:"image_manager"`
	ImageDownloader            string             `json:"image_downloader" yaml:"image_downloader"`
	ImageRequestMonitor        string             `json:"image_request_monitor" yaml:"image_request_monitor"`
	ImageClusterAutoscaler     string             `json:"image_cluster_autoscaler" yaml:"image_cluster_autoscaler"`
	ImageMetricsServer         string             `json:"image_metrics_server" yaml:"image_metrics_server"`
	ImageInferentia            string             `json:"image_inferentia" yaml:"image_inferentia"`
	ImageNeuronRTD             string             `json:"image_neuron_rtd" yaml:"image_neuron_rtd"`
	ImageNvidia                string             `json:"image_nvidia" yaml:"image_nvidia"`
	ImageFluentd               string             `json:"image_fluentd" yaml:"image_fluentd"`
	ImageStatsd                string             `json:"image_statsd" yaml:"image_statsd"`
	ImageIstioProxy            string             `json:"image_istio_proxy" yaml:"image_istio_proxy"`
	ImageIstioPilot            string             `json:"image_istio_pilot" yaml:"image_istio_pilot"`
	ImageIstioCitadel          string             `json:"image_istio_citadel" yaml:"image_istio_citadel"`
	ImageIstioGalley           string             `json:"image_istio_galley" yaml:"image_istio_galley"`
}

func GetDefaults

func GetDefaults() (*Config, error)

This does not set defaults for fields that are prompted from the user

func (*Config) FillEmptySpotFields added in v0.16.0

func (cc *Config) FillEmptySpotFields(awsClient *aws.Client) error

func (*Config) SQSNamePrefix added in v0.19.0

func (cc *Config) SQSNamePrefix() string

returns hash of cluster name and adds trailing "-"

func (*Config) ToAccessConfig

func (cc *Config) ToAccessConfig() AccessConfig

func (*Config) UserStr

func (cc *Config) UserStr() string

func (*Config) UserTable

func (cc *Config) UserTable() table.KeyValuePairs

func (*Config) Validate

func (cc *Config) Validate(awsClient *aws.Client) error

this validates the user-provided cluster config

type InternalConfig

type InternalConfig struct {
	Config

	// Populated by operator
	ID                 string                    `json:"id"`
	APIVersion         string                    `json:"api_version"`
	OperatorInCluster  bool                      `json:"operator_in_cluster"`
	InstanceMetadata   aws.InstanceMetadata      `json:"instance_metadata"`
	APIGateway         *apigatewayv2.Api         `json:"api_gateway"`
	VPCLink            *apigatewayv2.VpcLink     `json:"vpc_link"`
	VPCLinkIntegration *apigatewayv2.Integration `json:"vpc_link_integration"`
}

func (*InternalConfig) UserStr

func (cc *InternalConfig) UserStr() string

func (*InternalConfig) UserTable

func (cc *InternalConfig) UserTable() table.KeyValuePairs

type LoadBalancerScheme added in v0.16.0

type LoadBalancerScheme int
const (
	UnknownLoadBalancerScheme LoadBalancerScheme = iota
	InternetFacingLoadBalancerScheme
	InternalLoadBalancerScheme
)

func LoadBalancerSchemeFromString added in v0.16.0

func LoadBalancerSchemeFromString(s string) LoadBalancerScheme

func (LoadBalancerScheme) MarshalBinary added in v0.16.0

func (t LoadBalancerScheme) MarshalBinary() ([]byte, error)

MarshalBinary satisfies BinaryMarshaler

func (LoadBalancerScheme) MarshalText added in v0.16.0

func (t LoadBalancerScheme) MarshalText() ([]byte, error)

MarshalText satisfies TextMarshaler

func (LoadBalancerScheme) String added in v0.16.0

func (t LoadBalancerScheme) String() string

func (*LoadBalancerScheme) UnmarshalBinary added in v0.16.0

func (t *LoadBalancerScheme) UnmarshalBinary(data []byte) error

UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack

func (*LoadBalancerScheme) UnmarshalText added in v0.16.0

func (t *LoadBalancerScheme) UnmarshalText(text []byte) error

UnmarshalText satisfies TextUnmarshaler

type NATGateway added in v0.16.0

type NATGateway int
const (
	UnknownNATGateway NATGateway = iota
	NoneNATGateway
	SingleNATGateway
	HighlyAvailableNATGateway
)

func NATGatewayFromString added in v0.16.0

func NATGatewayFromString(s string) NATGateway

func (NATGateway) MarshalBinary added in v0.16.0

func (t NATGateway) MarshalBinary() ([]byte, error)

MarshalBinary satisfies BinaryMarshaler

func (NATGateway) MarshalText added in v0.16.0

func (t NATGateway) MarshalText() ([]byte, error)

MarshalText satisfies TextMarshaler

func (NATGateway) String added in v0.16.0

func (t NATGateway) String() string

func (*NATGateway) UnmarshalBinary added in v0.16.0

func (t *NATGateway) UnmarshalBinary(data []byte) error

UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack

func (*NATGateway) UnmarshalText added in v0.16.0

func (t *NATGateway) UnmarshalText(text []byte) error

UnmarshalText satisfies TextUnmarshaler

type SpotConfig

type SpotConfig struct {
	InstanceDistribution                []string `json:"instance_distribution" yaml:"instance_distribution"`
	OnDemandBaseCapacity                *int64   `json:"on_demand_base_capacity" yaml:"on_demand_base_capacity"`
	OnDemandPercentageAboveBaseCapacity *int64   `json:"on_demand_percentage_above_base_capacity" yaml:"on_demand_percentage_above_base_capacity"`
	MaxPrice                            *float64 `json:"max_price" yaml:"max_price"`
	InstancePools                       *int64   `json:"instance_pools" yaml:"instance_pools"`
	OnDemandBackup                      *bool    `json:"on_demand_backup" yaml:"on_demand_backup"`
}

type SubnetVisibility added in v0.16.0

type SubnetVisibility int
const (
	UnknownSubnetVisibility SubnetVisibility = iota
	PublicSubnetVisibility
	PrivateSubnetVisibility
)

func SubnetVisibilityFromString added in v0.16.0

func SubnetVisibilityFromString(s string) SubnetVisibility

func (SubnetVisibility) MarshalBinary added in v0.16.0

func (t SubnetVisibility) MarshalBinary() ([]byte, error)

MarshalBinary satisfies BinaryMarshaler

func (SubnetVisibility) MarshalText added in v0.16.0

func (t SubnetVisibility) MarshalText() ([]byte, error)

MarshalText satisfies TextMarshaler

func (SubnetVisibility) String added in v0.16.0

func (t SubnetVisibility) String() string

func (*SubnetVisibility) UnmarshalBinary added in v0.16.0

func (t *SubnetVisibility) UnmarshalBinary(data []byte) error

UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack

func (*SubnetVisibility) UnmarshalText added in v0.16.0

func (t *SubnetVisibility) UnmarshalText(text []byte) error

UnmarshalText satisfies TextUnmarshaler

type VolumeType added in v0.16.0

type VolumeType int
const (
	UnknownVolumeType VolumeType = iota
	GP2VolumeType
	IO1VolumeType
	SC1VolumeType
	ST1VolumeType
)

func VolumeTypeFromString added in v0.16.0

func VolumeTypeFromString(s string) VolumeType

VolumeTypeFromString turns string into StorageType

func (VolumeType) MarshalBinary added in v0.16.0

func (t VolumeType) MarshalBinary() ([]byte, error)

MarshalBinary satisfies BinaryMarshaler

func (VolumeType) MarshalText added in v0.16.0

func (t VolumeType) MarshalText() ([]byte, error)

MarshalText satisfies TextMarshaler

func (VolumeType) String added in v0.16.0

func (t VolumeType) String() string

func (*VolumeType) UnmarshalBinary added in v0.16.0

func (t *VolumeType) UnmarshalBinary(data []byte) error

UnmarshalBinary satisfies BinaryUnmarshaler Needed for msgpack

func (*VolumeType) UnmarshalText added in v0.16.0

func (t *VolumeType) UnmarshalText(text []byte) error

UnmarshalText satisfies TextUnmarshaler

Jump to

Keyboard shortcuts

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