Documentation ¶
Overview ¶
Package adapter contains the required logic for creating data structures used for feeding CloudFormation templates.
It follows the adapter pattern https://en.wikipedia.org/wiki/Adapter_pattern in the sense that it has the knowledge to transform a aws custom object into a data structure easily interpolable into the templates without any additional view logic.
There's a base template in `service/templates/cloudformation/guest/main.yaml` which defines the basic structure and includes the rest of templates that form the stack as nested templates. Those subtemplates should use a `define` action with the name that will be used to refer to them from the main template, as explained here https://golang.org/pkg/text/template/#hdr-Nested_template_definitions
Each adapter is related to one of these nested templates. It includes the data structure with all the values needed to interpolate in the related template and the logic required to obtain them, this logic is packed into functions called `hydraters`.
When extending the stack we will just need to: * Add the template file in `service/template/cloudformation/guest` and modify `service/template/cloudformation/main.yaml` to include the new template. * Add the adapter logic file in `service/resource/cloudformation/adapter` with the type definition and the Hydrater function to fill the fields (like asg.go or launch_configuration.go). * Add the new type to the Adapter type in `service/resource/cloudformation/adapter/adapter.go` and include the Hydrater function in the `hydraters` slice.
Index ¶
- func IsEmptyAmazonAccountID(err error) bool
- func IsInvalidConfig(err error) bool
- func IsMalformedAmazonAccountID(err error) bool
- func IsNotFound(err error) bool
- func IsTooFewResults(err error) bool
- func IsTooManyResults(err error) bool
- func IsWrongAmazonAccountIDLength(err error) bool
- func IsWrongType(err error) bool
- type APIWhitelist
- type Adapter
- type BlockDeviceMapping
- type Config
- type Gateway
- type GuestAdapter
- type GuestAutoScalingGroupAdapter
- type GuestIAMPoliciesAdapter
- type GuestInstanceAdapter
- type GuestInstanceAdapterCluster
- type GuestInstanceAdapterImage
- type GuestInstanceAdapterMaster
- type GuestInstanceAdapterMasterDockerVolume
- type GuestInstanceAdapterMasterEtcdVolume
- type GuestInstanceAdapterMasterInstance
- type GuestInstanceAdapterMasterLogVolume
- type GuestInternetGatewayAdapter
- type GuestLaunchConfigAdapter
- type GuestLifecycleHooksAdapter
- type GuestLifecycleHooksAdapterASG
- type GuestLifecycleHooksAdapterLifecycleHook
- type GuestLifecycleHooksAdapterWorker
- type GuestLoadBalancersAdapter
- type GuestLoadBalancersAdapterPortPair
- type GuestNATGatewayAdapter
- type GuestOutputsAdapter
- type GuestOutputsAdapterMaster
- type GuestOutputsAdapterMasterCloudConfig
- type GuestOutputsAdapterMasterDockerVolume
- type GuestOutputsAdapterMasterInstance
- type GuestOutputsAdapterVersionBundle
- type GuestOutputsAdapterWorker
- type GuestOutputsAdapterWorkerASG
- type GuestOutputsAdapterWorkerCloudConfig
- type GuestRecordSetsAdapter
- type GuestRouteTablesAdapter
- type GuestSecurityGroupsAdapter
- type GuestSubnetsAdapter
- type GuestVPCAdapter
- type Hydrater
- type RouteTableAssociation
- type RouteTableName
- type SmallCloudconfigConfig
- type StackState
- type Subnet
- type Whitelist
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsEmptyAmazonAccountID ¶
IsEmptyAmazonAccountID asserts emptyAmazonAccountIDError.
func IsInvalidConfig ¶
IsInvalidConfig asserts invalidConfigError.
func IsMalformedAmazonAccountID ¶
IsMalformedAmazonAccountID asserts malformedAmazonAccountIDError.
func IsTooFewResults ¶
IsTooFewResults asserts tooFewResultsError.
func IsTooManyResults ¶
IsTooManyResults asserts tooManyResultsError.
func IsWrongAmazonAccountIDLength ¶
IsWrongAmazonAccountIDLength asserts wrongAmazonAccountIDLengthError.
Types ¶
type APIWhitelist ¶
APIWhitelist defines guest cluster k8s public/private api whitelisting.
type Adapter ¶
type Adapter struct {
Guest GuestAdapter
}
type BlockDeviceMapping ¶
type Config ¶
type Config struct { APIWhitelist APIWhitelist ControlPlaneAccountID string ControlPlaneNATGatewayAddresses []*ec2.Address ControlPlanePeerRoleARN string ControlPlaneVPCID string ControlPlaneVPCCidr string CustomObject v1alpha1.AWSConfig EncrypterBackend string GuestAccountID string InstallationName string PublicRouteTables string Route53Enabled bool StackState StackState TenantClusterAccountID string TenantClusterKMSKeyARN string }
type GuestAdapter ¶
type GuestAdapter struct { AutoScalingGroup GuestAutoScalingGroupAdapter IAMPolicies GuestIAMPoliciesAdapter InternetGateway GuestInternetGatewayAdapter Instance GuestInstanceAdapter LaunchConfiguration GuestLaunchConfigAdapter LifecycleHooks GuestLifecycleHooksAdapter LoadBalancers GuestLoadBalancersAdapter NATGateway GuestNATGatewayAdapter Outputs GuestOutputsAdapter RecordSets GuestRecordSetsAdapter RouteTables GuestRouteTablesAdapter SecurityGroups GuestSecurityGroupsAdapter Subnets GuestSubnetsAdapter VPC GuestVPCAdapter }
type GuestAutoScalingGroupAdapter ¶
type GuestAutoScalingGroupAdapter struct { ASGDesiredCapacity int ASGMaxSize int ASGMinSize int ASGType string ClusterID string HealthCheckGracePeriod int MaxBatchSize string MinInstancesInService string PrivateSubnets []string RollingUpdatePauseTime string WorkerAZs []string }
func (*GuestAutoScalingGroupAdapter) Adapt ¶
func (a *GuestAutoScalingGroupAdapter) Adapt(cfg Config) error
type GuestIAMPoliciesAdapter ¶
type GuestIAMPoliciesAdapter struct { ClusterID string EC2ServiceDomain string KMSKeyARN string MasterRoleName string MasterPolicyName string MasterProfileName string RegionARN string S3Bucket string WorkerRoleName string WorkerPolicyName string WorkerProfileName string }
func (*GuestIAMPoliciesAdapter) Adapt ¶
func (i *GuestIAMPoliciesAdapter) Adapt(cfg Config) error
type GuestInstanceAdapter ¶
type GuestInstanceAdapter struct { Cluster GuestInstanceAdapterCluster Image GuestInstanceAdapterImage Master GuestInstanceAdapterMaster }
func (*GuestInstanceAdapter) Adapt ¶
func (i *GuestInstanceAdapter) Adapt(config Config) error
type GuestInstanceAdapterCluster ¶
type GuestInstanceAdapterCluster struct {
ID string
}
type GuestInstanceAdapterImage ¶
type GuestInstanceAdapterImage struct {
ID string
}
type GuestInstanceAdapterMaster ¶
type GuestInstanceAdapterMaster struct { AZ string CloudConfig string EncrypterBackend string DockerVolume GuestInstanceAdapterMasterDockerVolume EtcdVolume GuestInstanceAdapterMasterEtcdVolume LogVolume GuestInstanceAdapterMasterLogVolume Instance GuestInstanceAdapterMasterInstance PrivateSubnet string }
type GuestInstanceAdapterMasterEtcdVolume ¶
type GuestInstanceAdapterMasterEtcdVolume struct {
Name string
}
type GuestInstanceAdapterMasterLogVolume ¶
type GuestInstanceAdapterMasterLogVolume struct {
Name string
}
type GuestInternetGatewayAdapter ¶
func (*GuestInternetGatewayAdapter) Adapt ¶
func (a *GuestInternetGatewayAdapter) Adapt(cfg Config) error
type GuestLaunchConfigAdapter ¶
type GuestLaunchConfigAdapter struct { ASGType string WorkerAssociatePublicIPAddress bool WorkerBlockDeviceMappings []BlockDeviceMapping WorkerInstanceMonitoring bool WorkerInstanceType string WorkerImageID string WorkerSecurityGroupID string WorkerSmallCloudConfig string }
func (*GuestLaunchConfigAdapter) Adapt ¶
func (l *GuestLaunchConfigAdapter) Adapt(config Config) error
type GuestLifecycleHooksAdapter ¶
type GuestLifecycleHooksAdapter struct {
Worker GuestLifecycleHooksAdapterWorker
}
func (*GuestLifecycleHooksAdapter) Adapt ¶
func (a *GuestLifecycleHooksAdapter) Adapt(config Config) error
type GuestLifecycleHooksAdapterASG ¶
type GuestLifecycleHooksAdapterASG struct {
Ref string
}
type GuestLifecycleHooksAdapterLifecycleHook ¶
type GuestLifecycleHooksAdapterLifecycleHook struct {
Name string
}
type GuestLifecycleHooksAdapterWorker ¶
type GuestLifecycleHooksAdapterWorker struct { ASG GuestLifecycleHooksAdapterASG LifecycleHook GuestLifecycleHooksAdapterLifecycleHook }
type GuestLoadBalancersAdapter ¶
type GuestLoadBalancersAdapter struct { APIElbHealthCheckTarget string APIElbName string APIInternalElbName string APIElbPortsToOpen []GuestLoadBalancersAdapterPortPair APIElbScheme string APIInternalElbScheme string APIElbSecurityGroupID string EtcdElbHealthCheckTarget string EtcdElbName string EtcdElbPortsToOpen []GuestLoadBalancersAdapterPortPair EtcdElbScheme string EtcdElbSecurityGroupID string ELBHealthCheckHealthyThreshold int ELBHealthCheckInterval int ELBHealthCheckTimeout int ELBHealthCheckUnhealthyThreshold int IngressElbHealthCheckTarget string IngressElbName string IngressInternalElbName string IngressElbPortsToOpen []GuestLoadBalancersAdapterPortPair IngressElbScheme string IngressInternalElbScheme string MasterInstanceResourceName string PublicSubnets []string PrivateSubnets []string }
func (*GuestLoadBalancersAdapter) Adapt ¶
func (a *GuestLoadBalancersAdapter) Adapt(cfg Config) error
type GuestNATGatewayAdapter ¶
type GuestNATGatewayAdapter struct {
Gateways []Gateway
}
func (*GuestNATGatewayAdapter) Adapt ¶
func (a *GuestNATGatewayAdapter) Adapt(cfg Config) error
type GuestOutputsAdapter ¶
type GuestOutputsAdapter struct { Master GuestOutputsAdapterMaster Worker GuestOutputsAdapterWorker Route53Enabled bool VersionBundle GuestOutputsAdapterVersionBundle }
func (*GuestOutputsAdapter) Adapt ¶
func (a *GuestOutputsAdapter) Adapt(config Config) error
type GuestOutputsAdapterMaster ¶
type GuestOutputsAdapterMaster struct { ImageID string Instance GuestOutputsAdapterMasterInstance CloudConfig GuestOutputsAdapterMasterCloudConfig DockerVolume GuestOutputsAdapterMasterDockerVolume }
type GuestOutputsAdapterMasterCloudConfig ¶
type GuestOutputsAdapterMasterCloudConfig struct {
Version string
}
type GuestOutputsAdapterMasterDockerVolume ¶
type GuestOutputsAdapterMasterDockerVolume struct {
ResourceName string
}
type GuestOutputsAdapterVersionBundle ¶
type GuestOutputsAdapterVersionBundle struct {
Version string
}
type GuestOutputsAdapterWorker ¶
type GuestOutputsAdapterWorker struct { ASG GuestOutputsAdapterWorkerASG CloudConfig GuestOutputsAdapterWorkerCloudConfig DockerVolumeSizeGB string ImageID string InstanceType string }
type GuestOutputsAdapterWorkerASG ¶
type GuestOutputsAdapterWorkerASG struct {
Ref string
}
type GuestOutputsAdapterWorkerCloudConfig ¶
type GuestOutputsAdapterWorkerCloudConfig struct {
Version string
}
type GuestRecordSetsAdapter ¶
type GuestRecordSetsAdapter struct { BaseDomain string EtcdDomain string ClusterID string MasterInstanceResourceName string Route53Enabled bool VPCRegion string }
func (*GuestRecordSetsAdapter) Adapt ¶
func (a *GuestRecordSetsAdapter) Adapt(config Config) error
type GuestRouteTablesAdapter ¶
type GuestRouteTablesAdapter struct { HostClusterCIDR string PublicRouteTableName RouteTableName PrivateRouteTableNames []RouteTableName }
func (*GuestRouteTablesAdapter) Adapt ¶
func (r *GuestRouteTablesAdapter) Adapt(cfg Config) error
type GuestSecurityGroupsAdapter ¶
type GuestSecurityGroupsAdapter struct { APIInternalELBSecurityGroupName string APIInternalELBSecurityGroupRules []securityGroupRule APIWhitelistEnabled bool PrivateAPIWhitelistEnabled bool MasterSecurityGroupName string MasterSecurityGroupRules []securityGroupRule WorkerSecurityGroupName string WorkerSecurityGroupRules []securityGroupRule IngressSecurityGroupName string IngressSecurityGroupRules []securityGroupRule EtcdELBSecurityGroupName string EtcdELBSecurityGroupRules []securityGroupRule }
func (*GuestSecurityGroupsAdapter) Adapt ¶
func (s *GuestSecurityGroupsAdapter) Adapt(cfg Config) error
type GuestSubnetsAdapter ¶
func (*GuestSubnetsAdapter) Adapt ¶
func (s *GuestSubnetsAdapter) Adapt(cfg Config) error
type GuestVPCAdapter ¶
type GuestVPCAdapter struct { CidrBlock string ClusterID string InstallationName string HostAccountID string PeerVPCID string PeerRoleArn string Region string RegionARN string RouteTableNames []RouteTableName }
func (*GuestVPCAdapter) Adapt ¶
func (v *GuestVPCAdapter) Adapt(cfg Config) error
type RouteTableAssociation ¶
type RouteTableName ¶
type SmallCloudconfigConfig ¶
SmallCloudconfigConfig represents the data structure required for executing the small cloudconfig template.
type StackState ¶
type StackState struct { Name string DockerVolumeResourceName string MasterImageID string MasterInstanceType string MasterInstanceResourceName string // TODO the cloud config versions shouldn't be injected here. These should // actually always only be the ones the operator has hard coded. No other // version should be used here ever. MasterCloudConfigVersion string MasterInstanceMonitoring bool // TODO the cloud config versions shouldn't be injected here. These should // actually always only be the ones the operator has hard coded. No other // version should be used here ever. WorkerCloudConfigVersion string WorkerDesired int WorkerDockerVolumeSizeGB string WorkerKubeletVolumeSizeGB string WorkerLogVolumeSizeGB string WorkerImageID string WorkerInstanceMonitoring bool WorkerInstanceType string WorkerMax int WorkerMin int VersionBundleVersion string }
TODO we copy this because of a circular import issue with the cloudformation resource. The way how the resource works with the adapter and how infromation is passed has to be reworked at some point. Just hacking this now to keep going and to keep the changes as minimal as possible.
Source Files ¶
- adapter.go
- error.go
- guest_auto_scaling_group.go
- guest_iam_policies.go
- guest_instance.go
- guest_internet_gateway.go
- guest_launch_configuration.go
- guest_lifecycle_hooks.go
- guest_load_balancers.go
- guest_nat_gateway.go
- guest_outputs.go
- guest_record_sets.go
- guest_route_tables.go
- guest_security_groups.go
- guest_subnets.go
- guest_vpc.go
- spec.go