From c6fdfb5960f3915a78781bbd37e1a36cba7b5633 Mon Sep 17 00:00:00 2001 From: Gergely Brautigam <182850+Skarlso@users.noreply.github.com> Date: Thu, 9 May 2024 10:52:26 +0200 Subject: [PATCH 1/2] feat: generate an HTML based output for a given CRD when format is defined --- cmd/generate.go | 18 +- pkg/create_html_output.go | 179 + pkg/generate.go | 6 +- pkg/templates/index.html | 81 - pkg/templates/view.html | 33 +- ...nfrastructure.cluster.x-k8s.io_sample.html | 7470 +++++++++++++++++ 6 files changed, 7694 insertions(+), 93 deletions(-) create mode 100644 pkg/create_html_output.go delete mode 100644 pkg/templates/index.html create mode 100644 sample-crd/awsclusters.infrastructure.cluster.x-k8s.io_sample.html diff --git a/cmd/generate.go b/cmd/generate.go index 95e379c..104999b 100644 --- a/cmd/generate.go +++ b/cmd/generate.go @@ -16,6 +16,11 @@ import ( "github.com/Skarlso/crd-to-sample-yaml/pkg/fetcher" ) +const ( + FormatHTML = "html" + FormatYAML = "yaml" +) + var ( // generateCmd is root for various `generate ...` commands. generateCmd = &cobra.Command{ @@ -27,6 +32,7 @@ var ( fileLocation string url string output string + format string stdOut bool comments bool ) @@ -38,6 +44,7 @@ func init() { f.StringVarP(&fileLocation, "crd", "c", "", "The CRD file to generate a yaml from.") f.StringVarP(&url, "url", "u", "", "If provided, will use this URL to fetch CRD YAML content from.") f.StringVarP(&output, "output", "o", "", "The location of the output file. Default is next to the CRD.") + f.StringVarP(&format, "format", "f", FormatYAML, "The format in which to output. Default is YAML. Options are: yaml, html.") f.BoolVarP(&stdOut, "stdout", "s", false, "If set, it will output the generated content to stdout") f.BoolVarP(&comments, "comments", "m", false, "If set, it will add descriptions as comments to each line where available") } @@ -68,13 +75,14 @@ func runGenerate(_ *cobra.Command, _ []string) error { if err := yaml.Unmarshal(content, crd); err != nil { return errors.New("failed to unmarshal into custom resource definition") } + if stdOut { w = os.Stdout } else { if output == "" { output = filepath.Dir(fileLocation) } - outputLocation := filepath.Join(output, crd.Name+"_sample.yaml") + outputLocation := filepath.Join(output, crd.Name+"_sample."+format) outputFile, err := os.Create(outputLocation) if err != nil { return fmt.Errorf("failed to create file at: '%s': %w", outputLocation, err) @@ -82,5 +90,13 @@ func runGenerate(_ *cobra.Command, _ []string) error { w = outputFile } + if format == FormatHTML { + if err := pkg.LoadTemplates(); err != nil { + return fmt.Errorf("failed to load templates: %w", err) + } + + return pkg.RenderContent(w, content, comments) + } + return pkg.Generate(crd, w, comments) } diff --git a/pkg/create_html_output.go b/pkg/create_html_output.go new file mode 100644 index 0000000..1492a27 --- /dev/null +++ b/pkg/create_html_output.go @@ -0,0 +1,179 @@ +package pkg + +import ( + "bytes" + "embed" + "fmt" + "html/template" + "io" + "io/fs" + "sort" + + "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" + "k8s.io/apimachinery/pkg/util/yaml" +) + +// Version wraps a top level version resource which contains the underlying openAPIV3Schema. +type Version struct { + Version string + Kind string + Group string + Properties []*Property + Description string + YAML string +} + +// ViewPage is the template for view.html. +type ViewPage struct { + Versions []Version +} + +var ( + //go:embed templates + files embed.FS + templates map[string]*template.Template +) + +// LoadTemplates creates a map of loaded templates that are primed and ready to be rendered. +func LoadTemplates() error { + if templates == nil { + templates = make(map[string]*template.Template) + } + tmplFiles, err := fs.ReadDir(files, "templates") + if err != nil { + return err + } + + for _, tmpl := range tmplFiles { + if tmpl.IsDir() { + continue + } + pt, err := template.ParseFS(files, "templates/"+tmpl.Name()) + if err != nil { + return err + } + + templates[tmpl.Name()] = pt + } + + return nil +} + +// RenderContent creates an HTML website from the CRD content. +func RenderContent(w io.Writer, crdContent []byte, comments bool) error { + crd := &v1beta1.CustomResourceDefinition{} + if err := yaml.Unmarshal(crdContent, crd); err != nil { + return fmt.Errorf("failed to unmarshal into custom resource definition: %w", err) + } + versions := make([]Version, 0) + for _, version := range crd.Spec.Versions { + out, err := parseCRD(version.Schema.OpenAPIV3Schema.Properties, version.Name, version.Schema.OpenAPIV3Schema.Required) + if err != nil { + return fmt.Errorf("failed to parse properties: %w", err) + } + var buffer []byte + buf := bytes.NewBuffer(buffer) + if err := ParseProperties(crd.Spec.Group, version.Name, crd.Spec.Names.Kind, version.Schema.OpenAPIV3Schema.Properties, buf, 0, false, comments); err != nil { + return fmt.Errorf("failed to generate yaml sample: %w", err) + } + versions = append(versions, Version{ + Version: version.Name, + Properties: out, + Kind: crd.Spec.Names.Kind, + Group: crd.Spec.Group, + Description: version.Schema.OpenAPIV3Schema.Description, + YAML: buf.String(), + }) + } + view := ViewPage{ + Versions: versions, + } + t := templates["view.html"] + if err := t.Execute(w, view); err != nil { + return fmt.Errorf("failed to execute template: %w", err) + } + + return nil +} + +// Property builds up a Tree structure of embedded things. +type Property struct { + Name string + Description string + Type string + Nullable bool + Patterns string + Format string + Indent int + Version string + Default string + Required bool + Properties []*Property +} + +// parseCRD takes the properties and constructs a linked list out of the embedded properties that the recursive +// template can call and construct linked divs. +func parseCRD(properties map[string]v1beta1.JSONSchemaProps, version string, requiredList []string) ([]*Property, error) { + output := make([]*Property, 0, len(properties)) + sortedKeys := make([]string, 0, len(properties)) + + for k := range properties { + sortedKeys = append(sortedKeys, k) + } + sort.Strings(sortedKeys) + + for _, k := range sortedKeys { + // Create the Property with the values necessary. + // Check if there are properties for it in Properties or in Array -> Properties. + // If yes, call parseCRD and add the result to the created properties Properties list. + // If not, or if we are done, add this new property to the list of properties and return it. + v := properties[k] + required := false + for _, item := range requiredList { + if item == k { + required = true + + break + } + } + p := &Property{ + Name: k, + Type: v.Type, + Description: v.Description, + Patterns: v.Pattern, + Format: v.Format, + Nullable: v.Nullable, + Version: version, + Required: required, + } + if v.Default != nil { + p.Default = string(v.Default.Raw) + } + + if len(properties[k].Properties) > 0 && properties[k].AdditionalProperties == nil { + requiredList = v.Required + out, err := parseCRD(properties[k].Properties, version, requiredList) + if err != nil { + return nil, err + } + p.Properties = out + } else if properties[k].Type == array && properties[k].Items.Schema != nil && len(properties[k].Items.Schema.Properties) > 0 { + requiredList = v.Required + out, err := parseCRD(properties[k].Items.Schema.Properties, version, requiredList) + if err != nil { + return nil, err + } + p.Properties = out + } else if properties[k].AdditionalProperties != nil { + requiredList = v.Required + out, err := parseCRD(properties[k].AdditionalProperties.Schema.Properties, version, requiredList) + if err != nil { + return nil, err + } + p.Properties = out + } + output = append(output, p) + } + + return output, nil +} diff --git a/pkg/generate.go b/pkg/generate.go index fa904da..1e91b99 100644 --- a/pkg/generate.go +++ b/pkg/generate.go @@ -10,6 +10,8 @@ import ( "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" ) +const array = "array" + // Generate takes a CRD content and path, and outputs. func Generate(crd *v1beta1.CustomResourceDefinition, w io.WriteCloser, enableComments bool) (err error) { defer func() { @@ -87,7 +89,7 @@ func ParseProperties(group, version, kind string, properties map[string]v1beta1. // If we are dealing with an array, and we have properties to parse // we need to reparse all of them again. var result string - if properties[k].Type == "array" && properties[k].Items.Schema != nil && len(properties[k].Items.Schema.Properties) > 0 { + if properties[k].Type == array && properties[k].Items.Schema != nil && len(properties[k].Items.Schema.Properties) > 0 { w.write(file, fmt.Sprintf("\n%s- ", strings.Repeat(" ", indent))) if err := ParseProperties(group, version, kind, properties[k].Items.Schema.Properties, file, indent+2, true, comments); err != nil { return err @@ -141,7 +143,7 @@ func outputValueType(v v1beta1.JSONSchemaProps) string { return "true" case "object": return "{}" - case "array": // deal with arrays of other types that weren't objects + case array: // deal with arrays of other types that weren't objects t := v.Items.Schema.Type var s string if t == st { diff --git a/pkg/templates/index.html b/pkg/templates/index.html deleted file mode 100644 index fbd730d..0000000 --- a/pkg/templates/index.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - Preview CRDs - - - - - - - - - - - - - -
- -
-{{if .Msg}} - -{{end}} -
-
-
-
- - -
- -
-
-
- - diff --git a/pkg/templates/view.html b/pkg/templates/view.html index 08e43ea..3dac724 100644 --- a/pkg/templates/view.html +++ b/pkg/templates/view.html @@ -6,15 +6,34 @@ rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" /> + + + Preview CRDs - - - - - + + @@ -88,10 +107,6 @@

console.log("todo: loop through all elements and collapse them") } - - diff --git a/sample-crd/awsclusters.infrastructure.cluster.x-k8s.io_sample.html b/sample-crd/awsclusters.infrastructure.cluster.x-k8s.io_sample.html new file mode 100644 index 0000000..0690d88 --- /dev/null +++ b/sample-crd/awsclusters.infrastructure.cluster.x-k8s.io_sample.html @@ -0,0 +1,7470 @@ + + + + + + + + + Preview CRDs + + + + + + + + +
+
+
+ +

+ Version: infrastructure.cluster.x-k8s.io/v1beta1
+ Kind: AWSCluster +

+

+

+

AWSCluster is the schema for Amazon EC2 based Kubernetes Cluster API.

+
+ +
+
+
+
# APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+apiVersion: infrastructure.cluster.x-k8s.io/v1beta1
+# Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+kind: AWSCluster
+metadata: {}
+# AWSClusterSpec defines the desired state of an EC2-based Kubernetes cluster.
+spec:
+  # AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.
+  additionalTags: {}
+  # Bastion contains options to configure the bastion host.
+  bastion:
+    # AllowedCIDRBlocks is a list of CIDR blocks allowed to access the bastion host. They are set as ingress rules for the Bastion host's Security Group (defaults to 0.0.0.0/0).
+    allowedCIDRBlocks: ["string"]
+    # AMI will use the specified AMI to boot the bastion. If not specified, the AMI will default to one picked out in public space.
+    ami: string
+    # DisableIngressRules will ensure there are no Ingress rules in the bastion host's security group. Requires AllowedCIDRBlocks to be empty.
+    disableIngressRules: true
+    # Enabled allows this provider to create a bastion host instance with a public ip to access the VPC private network.
+    enabled: true
+    # InstanceType will use the specified instance type for the bastion. If not specified, Cluster API Provider AWS will use t3.micro for all regions except us-east-1, where t2.micro will be the default.
+    instanceType: string
+  # ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.
+  controlPlaneEndpoint:
+    # The hostname on which the API server is serving.
+    host: string
+    # The port on which the API server is serving.
+    port: 1
+  # ControlPlaneLoadBalancer is optional configuration for customizing control plane behavior.
+  controlPlaneLoadBalancer:
+    # AdditionalSecurityGroups sets the security groups used by the load balancer. Expected to be security group IDs This is optional - if not provided new security groups will be created for the load balancer
+    additionalSecurityGroups: ["string"]
+    # CrossZoneLoadBalancing enables the classic ELB cross availability zone balancing. 
+    #  With cross-zone load balancing, each load balancer node for your Classic Load Balancer distributes requests evenly across the registered instances in all enabled Availability Zones. If cross-zone load balancing is disabled, each load balancer node distributes requests evenly across the registered instances in its Availability Zone only. 
+    #  Defaults to false.
+    crossZoneLoadBalancing: true
+    # HealthCheckProtocol sets the protocol type for classic ELB health check target default value is ClassicELBProtocolSSL
+    healthCheckProtocol: string
+    # Name sets the name of the classic ELB load balancer. As per AWS, the name must be unique within your set of load balancers for the region, must have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and cannot begin or end with a hyphen. Once set, the value cannot be changed.
+    name: string
+    # Scheme sets the scheme of the load balancer (defaults to internet-facing)
+    scheme: "internet-facing"
+    # Subnets sets the subnets that should be applied to the control plane load balancer (defaults to discovered subnets for managed VPCs or an empty set for unmanaged VPCs)
+    subnets: ["string"]
+  # IdentityRef is a reference to a identity to be used when reconciling this cluster
+  identityRef:
+    # Kind of the identity.
+    kind: AWSCluster
+    # Name of the identity.
+    name: string
+  # ImageLookupBaseOS is the name of the base operating system used to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupBaseOS.
+  imageLookupBaseOS: string
+  # ImageLookupFormat is the AMI naming format to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg. Supports substitutions for {{.BaseOS}} and {{.K8sVersion}} with the base OS and kubernetes version, respectively. The BaseOS will be the value in ImageLookupBaseOS or ubuntu (the default), and the kubernetes version as defined by the packages produced by kubernetes/release without v as a prefix: 1.13.0, 1.12.5-mybuild.1, or 1.17.3. For example, the default image format of capa-ami-{{.BaseOS}}-?{{.K8sVersion}}-* will end up searching for AMIs that match the pattern capa-ami-ubuntu-?1.18.0-* for a Machine that is targeting kubernetes v1.18.0 and the ubuntu base OS. See also: https://golang.org/pkg/text/template/
+  imageLookupFormat: string
+  # ImageLookupOrg is the AWS Organization ID to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg.
+  imageLookupOrg: string
+  # NetworkSpec encapsulates all things related to AWS network.
+  network:
+    # CNI configuration
+    cni:
+      # CNIIngressRules specify rules to apply to control plane and worker node security groups. The source for the rule will be set to control plane and worker security group IDs.
+      cniIngressRules:
+      - description: string
+        fromPort: 1
+        # SecurityGroupProtocol defines the protocol type for a security group rule.
+        protocol: string
+        toPort: 1
+    # SecurityGroupOverrides is an optional set of security groups to use for cluster instances This is optional - if not provided new security groups will be created for the cluster
+    securityGroupOverrides: {}
+    # Subnets configuration.
+    subnets:
+    - availabilityZone: string
+      # CidrBlock is the CIDR block to be used when the provider creates a managed VPC.
+      cidrBlock: string
+      # ID defines a unique identifier to reference this resource.
+      id: string
+      # IPv6CidrBlock is the IPv6 CIDR block to be used when the provider creates a managed VPC. A subnet can have an IPv4 and an IPv6 address. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.
+      ipv6CidrBlock: string
+      # IsIPv6 defines the subnet as an IPv6 subnet. A subnet is IPv6 when it is associated with a VPC that has IPv6 enabled. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.
+      isIpv6: true
+      # IsPublic defines the subnet as a public subnet. A subnet is public when it is associated with a route table that has a route to an internet gateway.
+      isPublic: true
+      # NatGatewayID is the NAT gateway id associated with the subnet. Ignored unless the subnet is managed by the provider, in which case this is set on the public subnet where the NAT gateway resides. It is then used to determine routes for private subnets in the same AZ as the public subnet.
+      natGatewayId: string
+      # RouteTableID is the routing table id associated with the subnet.
+      routeTableId: string
+      # Tags is a collection of tags describing the resource.
+      tags: {}
+    # VPC configuration.
+    vpc:
+      # AvailabilityZoneSelection specifies how AZs should be selected if there are more AZs in a region than specified by AvailabilityZoneUsageLimit. There are 2 selection schemes: Ordered - selects based on alphabetical order Random - selects AZs randomly in a region Defaults to Ordered
+      availabilityZoneSelection: "Ordered"
+      # AvailabilityZoneUsageLimit specifies the maximum number of availability zones (AZ) that should be used in a region when automatically creating subnets. If a region has more than this number of AZs then this number of AZs will be picked randomly when creating default subnets. Defaults to 3
+      availabilityZoneUsageLimit: 3
+      # CidrBlock is the CIDR block to be used when the provider creates a managed VPC. Defaults to 10.0.0.0/16.
+      cidrBlock: string
+      # ID is the vpc-id of the VPC this provider should use to create resources.
+      id: string
+      # InternetGatewayID is the id of the internet gateway associated with the VPC.
+      internetGatewayId: string
+      # IPv6 contains ipv6 specific settings for the network. Supported only in managed clusters. This field cannot be set on AWSCluster object.
+      ipv6:
+        # CidrBlock is the CIDR block provided by Amazon when VPC has enabled IPv6.
+        cidrBlock: string
+        # EgressOnlyInternetGatewayID is the id of the egress only internet gateway associated with an IPv6 enabled VPC.
+        egressOnlyInternetGatewayId: string
+        # PoolID is the IP pool which must be defined in case of BYO IP is defined.
+        poolId: string
+      # Tags is a collection of tags describing the resource.
+      tags: {}
+  # The AWS Region the cluster lives in.
+  region: string
+  # S3Bucket contains options to configure a supporting S3 bucket for this cluster - currently used for nodes requiring Ignition (https://coreos.github.io/ignition/) for bootstrapping (requires BootstrapFormatIgnition feature flag to be enabled).
+  s3Bucket:
+    # ControlPlaneIAMInstanceProfile is a name of the IAMInstanceProfile, which will be allowed to read control-plane node bootstrap data from S3 Bucket.
+    controlPlaneIAMInstanceProfile: string
+    # Name defines name of S3 Bucket to be created.
+    name: string
+    # NodesIAMInstanceProfiles is a list of IAM instance profiles, which will be allowed to read worker nodes bootstrap data from S3 Bucket.
+    nodesIAMInstanceProfiles: ["string"]
+  # SSHKeyName is the name of the ssh key to attach to the bastion host. Valid values are empty string (do not use SSH keys), a valid SSH key name, or omitted (use the default SSH key name)
+  sshKeyName: string
+# AWSClusterStatus defines the observed state of AWSCluster.
+status:
+  # Instance describes an AWS instance.
+  bastion:
+    # Addresses contains the AWS instance associated addresses.
+    addresses:
+    - address: string
+      # Machine address type, one of Hostname, ExternalIP or InternalIP.
+      type: string
+    # Availability zone of instance
+    availabilityZone: string
+    # Indicates whether the instance is optimized for Amazon EBS I/O.
+    ebsOptimized: true
+    # Specifies whether enhanced networking with ENA is enabled.
+    enaSupport: true
+    # The name of the IAM instance profile associated with the instance, if applicable.
+    iamProfile: string
+    id: string
+    # The ID of the AMI used to launch the instance.
+    imageId: string
+    # The current state of the instance.
+    instanceState: string
+    # Specifies ENIs attached to instance
+    networkInterfaces: ["string"]
+    # Configuration options for the non root storage volumes.
+    nonRootVolumes:
+    - deviceName: string
+      # Encrypted is whether the volume should be encrypted or not.
+      encrypted: true
+      # EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.
+      encryptionKey: string
+      # IOPS is the number of IOPS requested for the disk. Not applicable to all types.
+      iops: 1
+      # Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).
+      size: 1
+      # Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
+      throughput: 1
+      # Type is the type of the volume (e.g. gp2, io1, etc...).
+      type: string
+    # The private IPv4 address assigned to the instance.
+    privateIp: string
+    # The public IPv4 address assigned to the instance, if applicable.
+    publicIp: string
+    # Configuration options for the root storage volume.
+    rootVolume:
+      # Device name
+      deviceName: string
+      # Encrypted is whether the volume should be encrypted or not.
+      encrypted: true
+      # EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.
+      encryptionKey: string
+      # IOPS is the number of IOPS requested for the disk. Not applicable to all types.
+      iops: 1
+      # Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).
+      size: 1
+      # Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
+      throughput: 1
+      # Type is the type of the volume (e.g. gp2, io1, etc...).
+      type: string
+    # SecurityGroupIDs are one or more security group IDs this instance belongs to.
+    securityGroupIds: ["string"]
+    # SpotMarketOptions option for configuring instances to be run using AWS Spot instances.
+    spotMarketOptions:
+      # MaxPrice defines the maximum price the user is willing to pay for Spot VM instances
+      maxPrice: string
+    # The name of the SSH key pair.
+    sshKeyName: string
+    # The ID of the subnet of the instance.
+    subnetId: string
+    # The tags associated with the instance.
+    tags: {}
+    # Tenancy indicates if instance should run on shared or single-tenant hardware.
+    tenancy: string
+    # The instance type.
+    type: string
+    # UserData is the raw data script passed to the instance which is run upon bootstrap. This field must not be base64 encoded and should only be used when running a new instance.
+    userData: string
+    # IDs of the instance's volumes
+    volumeIDs: ["string"]
+  # Conditions provide observations of the operational state of a Cluster API resource.
+  conditions:
+  - lastTransitionTime: string
+    # A human readable message indicating details about the transition. This field may be empty.
+    message: string
+    # The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.
+    reason: string
+    # Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.
+    severity: string
+    # Status of the condition, one of True, False, Unknown.
+    status: string
+    # Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.
+    type: string
+  # FailureDomains is a slice of FailureDomains.
+  failureDomains:
+    # Attributes is a free form map of attributes an infrastructure provider might use or require.
+    attributes: {}
+    # ControlPlane determines if this failure domain is suitable for use by control plane machines.
+    controlPlane: true
+  # NetworkStatus encapsulates AWS networking resources.
+  networkStatus:
+    # APIServerELB is the Kubernetes api server classic load balancer.
+    apiServerElb:
+      # Attributes defines extra attributes associated with the load balancer.
+      attributes:
+        # CrossZoneLoadBalancing enables the classic load balancer load balancing.
+        crossZoneLoadBalancing: true
+        # IdleTimeout is time that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer.
+        idleTimeout: 1
+      # AvailabilityZones is an array of availability zones in the VPC attached to the load balancer.
+      availabilityZones: ["string"]
+      # DNSName is the dns name of the load balancer.
+      dnsName: string
+      # HealthCheck is the classic elb health check associated with the load balancer.
+      healthChecks:
+        healthyThreshold: 1
+        # A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.
+        interval: 1
+        target: string
+        # A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.
+        timeout: 1
+        unhealthyThreshold: 1
+      # Listeners is an array of classic elb listeners associated with the load balancer. There must be at least one.
+      listeners:
+      - instancePort: 1
+        # ClassicELBProtocol defines listener protocols for a classic load balancer.
+        instanceProtocol: string
+        port: 1
+        # ClassicELBProtocol defines listener protocols for a classic load balancer.
+        protocol: string
+      # The name of the load balancer. It must be unique within the set of load balancers defined in the region. It also serves as identifier.
+      name: string
+      # Scheme is the load balancer scheme, either internet-facing or private.
+      scheme: string
+      # SecurityGroupIDs is an array of security groups assigned to the load balancer.
+      securityGroupIds: ["string"]
+      # SubnetIDs is an array of subnets in the VPC attached to the load balancer.
+      subnetIds: ["string"]
+      # Tags is a map of tags associated with the load balancer.
+      tags: {}
+    # SecurityGroups is a map from the role/kind of the security group to its unique name, if any.
+    securityGroups:
+      # ID is a unique identifier.
+      id: string
+      # IngressRules is the inbound rules associated with the security group.
+      ingressRule:
+      - cidrBlocks: ["string"]
+        description: string
+        fromPort: 1
+        # List of IPv6 CIDR blocks to allow access from. Cannot be specified with SourceSecurityGroupID.
+        ipv6CidrBlocks: ["string"]
+        # SecurityGroupProtocol defines the protocol type for a security group rule.
+        protocol: string
+        # The security group id to allow access from. Cannot be specified with CidrBlocks.
+        sourceSecurityGroupIds: ["string"]
+        toPort: 1
+      # Name is the security group name.
+      name: string
+      # Tags is a map of tags associated with the security group.
+      tags: {}
+  ready: false
+
+
+
+
+

+
+ + +
+
+ +
+ + apiVersion string + + + + + +
+
+

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

+
+ + + +
+
+
+ +
+ + kind string + + + + + +
+
+

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

+
+ + + +
+
+
+ +
+ + metadata object + + + + + +
+
+

+
+ + + +
+
+
+ +
+ + spec object + + + + + +
+
+

AWSClusterSpec defines the desired state of an EC2-based Kubernetes cluster.

+
+ + + +
+ + additionalTags object + + + + + +
+
+

AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.

+
+
+ + + + +
+
+
+
+ +
+ + bastion object + + + + + +
+
+

Bastion contains options to configure the bastion host.

+
+
+ + + + +
+ + allowedCIDRBlocks array + + + + + +
+
+

AllowedCIDRBlocks is a list of CIDR blocks allowed to access the bastion host. They are set as ingress rules for the Bastion host's Security Group (defaults to 0.0.0.0/0).

+
+
+ + + + +
+
+
+
+ +
+ + ami string + + + + + +
+
+

AMI will use the specified AMI to boot the bastion. If not specified, the AMI will default to one picked out in public space.

+
+
+ + + + +
+
+
+
+ +
+ + disableIngressRules boolean + + + + + +
+
+

DisableIngressRules will ensure there are no Ingress rules in the bastion host's security group. Requires AllowedCIDRBlocks to be empty.

+
+
+ + + + +
+
+
+
+ +
+ + enabled boolean + + + + + +
+
+

Enabled allows this provider to create a bastion host instance with a public ip to access the VPC private network.

+
+
+ + + + +
+
+
+
+ +
+ + instanceType string + + + + + +
+
+

InstanceType will use the specified instance type for the bastion. If not specified, Cluster API Provider AWS will use t3.micro for all regions except us-east-1, where t2.micro will be the default.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + controlPlaneEndpoint object + + + + + +
+
+

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+
+ + + + +
+ + host string + + + + + required + + +
+
+

The hostname on which the API server is serving.

+
+
+ + + + +
+
+
+
+ +
+ + port integer + + int32 + + + + + required + + +
+
+

The port on which the API server is serving.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + controlPlaneLoadBalancer object + + + + + +
+
+

ControlPlaneLoadBalancer is optional configuration for customizing control plane behavior.

+
+
+ + + + +
+ + additionalSecurityGroups array + + + + + +
+
+

AdditionalSecurityGroups sets the security groups used by the load balancer. Expected to be security group IDs This is optional - if not provided new security groups will be created for the load balancer

+
+
+ + + + +
+
+
+
+ +
+ + crossZoneLoadBalancing boolean + + + + + +
+
+

CrossZoneLoadBalancing enables the classic ELB cross availability zone balancing. + With cross-zone load balancing, each load balancer node for your Classic Load Balancer distributes requests evenly across the registered instances in all enabled Availability Zones. If cross-zone load balancing is disabled, each load balancer node distributes requests evenly across the registered instances in its Availability Zone only. + Defaults to false.

+
+
+ + + + +
+
+
+
+ +
+ + healthCheckProtocol string + + + + + +
+
+

HealthCheckProtocol sets the protocol type for classic ELB health check target default value is ClassicELBProtocolSSL

+
+
+ + + + +
+
+
+
+ +
+ + name string + + + ^[A-Za-z0-9]([A-Za-z0-9]{0,31}|[-A-Za-z0-9]{0,30}[A-Za-z0-9])$ + + + + +
+
+

Name sets the name of the classic ELB load balancer. As per AWS, the name must be unique within your set of load balancers for the region, must have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and cannot begin or end with a hyphen. Once set, the value cannot be changed.

+
+
+ + + + +
+
+
+
+ +
+ + scheme string + + + + "internet-facing" + + + +
+
+

Scheme sets the scheme of the load balancer (defaults to internet-facing)

+
+
+ + + + +
+
+
+
+ +
+ + subnets array + + + + + +
+
+

Subnets sets the subnets that should be applied to the control plane load balancer (defaults to discovered subnets for managed VPCs or an empty set for unmanaged VPCs)

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + identityRef object + + + + + +
+
+

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+ + + + +
+ + kind string + + + + + required + + +
+
+

Kind of the identity.

+
+
+ + + + +
+
+
+
+ +
+ + name string + + + + + required + + +
+
+

Name of the identity.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + imageLookupBaseOS string + + + + + +
+
+

ImageLookupBaseOS is the name of the base operating system used to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupBaseOS.

+
+
+ + + + +
+
+
+
+ +
+ + imageLookupFormat string + + + + + +
+
+

ImageLookupFormat is the AMI naming format to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg. Supports substitutions for {{.BaseOS}} and {{.K8sVersion}} with the base OS and kubernetes version, respectively. The BaseOS will be the value in ImageLookupBaseOS or ubuntu (the default), and the kubernetes version as defined by the packages produced by kubernetes/release without v as a prefix: 1.13.0, 1.12.5-mybuild.1, or 1.17.3. For example, the default image format of capa-ami-{{.BaseOS}}-?{{.K8sVersion}}-* will end up searching for AMIs that match the pattern capa-ami-ubuntu-?1.18.0-* for a Machine that is targeting kubernetes v1.18.0 and the ubuntu base OS. See also: https://golang.org/pkg/text/template/

+
+
+ + + + +
+
+
+
+ +
+ + imageLookupOrg string + + + + + +
+
+

ImageLookupOrg is the AWS Organization ID to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg.

+
+
+ + + + +
+
+
+
+ +
+ + network object + + + + + +
+
+

NetworkSpec encapsulates all things related to AWS network.

+
+
+ + + + +
+ + cni object + + + + + +
+
+

CNI configuration

+
+
+ + + + +
+ + cniIngressRules array + + + + + +
+
+

CNIIngressRules specify rules to apply to control plane and worker node security groups. The source for the rule will be set to control plane and worker security group IDs.

+
+
+ + + + +
+ + description string + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + fromPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + protocol string + + + + + +
+
+

SecurityGroupProtocol defines the protocol type for a security group rule.

+
+
+ + + + +
+
+
+
+ +
+ + toPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ +
+ + securityGroupOverrides object + + + + + +
+
+

SecurityGroupOverrides is an optional set of security groups to use for cluster instances This is optional - if not provided new security groups will be created for the cluster

+
+
+ + + + +
+
+
+
+ +
+ + subnets array + + + + + +
+
+

Subnets configuration.

+
+
+ + + + +
+ + availabilityZone string + + + + + +
+
+

AvailabilityZone defines the availability zone to use for this subnet in the cluster's region.

+
+
+ + + + +
+
+
+
+ +
+ + cidrBlock string + + + + + +
+
+

CidrBlock is the CIDR block to be used when the provider creates a managed VPC.

+
+
+ + + + +
+
+
+
+ +
+ + id string + + + + + +
+
+

ID defines a unique identifier to reference this resource.

+
+
+ + + + +
+
+
+
+ +
+ + ipv6CidrBlock string + + + + + +
+
+

IPv6CidrBlock is the IPv6 CIDR block to be used when the provider creates a managed VPC. A subnet can have an IPv4 and an IPv6 address. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.

+
+
+ + + + +
+
+
+
+ +
+ + isIpv6 boolean + + + + + +
+
+

IsIPv6 defines the subnet as an IPv6 subnet. A subnet is IPv6 when it is associated with a VPC that has IPv6 enabled. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.

+
+
+ + + + +
+
+
+
+ +
+ + isPublic boolean + + + + + +
+
+

IsPublic defines the subnet as a public subnet. A subnet is public when it is associated with a route table that has a route to an internet gateway.

+
+
+ + + + +
+
+
+
+ +
+ + natGatewayId string + + + + + +
+
+

NatGatewayID is the NAT gateway id associated with the subnet. Ignored unless the subnet is managed by the provider, in which case this is set on the public subnet where the NAT gateway resides. It is then used to determine routes for private subnets in the same AZ as the public subnet.

+
+
+ + + + +
+
+
+
+ +
+ + routeTableId string + + + + + +
+
+

RouteTableID is the routing table id associated with the subnet.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a collection of tags describing the resource.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + vpc object + + + + + +
+
+

VPC configuration.

+
+
+ + + + +
+ + availabilityZoneSelection string + + + + "Ordered" + + + +
+
+

AvailabilityZoneSelection specifies how AZs should be selected if there are more AZs in a region than specified by AvailabilityZoneUsageLimit. There are 2 selection schemes: Ordered - selects based on alphabetical order Random - selects AZs randomly in a region Defaults to Ordered

+
+
+ + + + +
+
+
+
+ +
+ + availabilityZoneUsageLimit integer + + + + 3 + + + +
+
+

AvailabilityZoneUsageLimit specifies the maximum number of availability zones (AZ) that should be used in a region when automatically creating subnets. If a region has more than this number of AZs then this number of AZs will be picked randomly when creating default subnets. Defaults to 3

+
+
+ + + + +
+
+
+
+ +
+ + cidrBlock string + + + + + +
+
+

CidrBlock is the CIDR block to be used when the provider creates a managed VPC. Defaults to 10.0.0.0/16.

+
+
+ + + + +
+
+
+
+ +
+ + id string + + + + + +
+
+

ID is the vpc-id of the VPC this provider should use to create resources.

+
+
+ + + + +
+
+
+
+ +
+ + internetGatewayId string + + + + + +
+
+

InternetGatewayID is the id of the internet gateway associated with the VPC.

+
+
+ + + + +
+
+
+
+ +
+ + ipv6 object + + + + + +
+
+

IPv6 contains ipv6 specific settings for the network. Supported only in managed clusters. This field cannot be set on AWSCluster object.

+
+
+ + + + +
+ + cidrBlock string + + + + + +
+
+

CidrBlock is the CIDR block provided by Amazon when VPC has enabled IPv6.

+
+
+ + + + +
+
+
+
+ +
+ + egressOnlyInternetGatewayId string + + + + + +
+
+

EgressOnlyInternetGatewayID is the id of the egress only internet gateway associated with an IPv6 enabled VPC.

+
+
+ + + + +
+
+
+
+ +
+ + poolId string + + + + + +
+
+

PoolID is the IP pool which must be defined in case of BYO IP is defined.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a collection of tags describing the resource.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ +
+ + region string + + + + + +
+
+

The AWS Region the cluster lives in.

+
+
+ + + + +
+
+
+
+ +
+ + s3Bucket object + + + + + +
+
+

S3Bucket contains options to configure a supporting S3 bucket for this cluster - currently used for nodes requiring Ignition (https://coreos.github.io/ignition/) for bootstrapping (requires BootstrapFormatIgnition feature flag to be enabled).

+
+
+ + + + +
+ + controlPlaneIAMInstanceProfile string + + + + + required + + +
+
+

ControlPlaneIAMInstanceProfile is a name of the IAMInstanceProfile, which will be allowed to read control-plane node bootstrap data from S3 Bucket.

+
+
+ + + + +
+
+
+
+ +
+ + name string + + + ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$ + + + + required + + +
+
+

Name defines name of S3 Bucket to be created.

+
+
+ + + + +
+
+
+
+ +
+ + nodesIAMInstanceProfiles array + + + + + required + + +
+
+

NodesIAMInstanceProfiles is a list of IAM instance profiles, which will be allowed to read worker nodes bootstrap data from S3 Bucket.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + sshKeyName string + + + + + +
+
+

SSHKeyName is the name of the ssh key to attach to the bastion host. Valid values are empty string (do not use SSH keys), a valid SSH key name, or omitted (use the default SSH key name)

+
+
+ + + + +
+
+
+
+ + + +
+
+
+ +
+ + status object + + + + + +
+
+

AWSClusterStatus defines the observed state of AWSCluster.

+
+ + + +
+ + bastion object + + + + + +
+
+

Instance describes an AWS instance.

+
+
+ + + + +
+ + addresses array + + + + + +
+
+

Addresses contains the AWS instance associated addresses.

+
+
+ + + + +
+ + address string + + + + + +
+
+

The machine address.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Machine address type, one of Hostname, ExternalIP or InternalIP.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + availabilityZone string + + + + + +
+
+

Availability zone of instance

+
+
+ + + + +
+
+
+
+ +
+ + ebsOptimized boolean + + + + + +
+
+

Indicates whether the instance is optimized for Amazon EBS I/O.

+
+
+ + + + +
+
+
+
+ +
+ + enaSupport boolean + + + + + +
+
+

Specifies whether enhanced networking with ENA is enabled.

+
+
+ + + + +
+
+
+
+ +
+ + iamProfile string + + + + + +
+
+

The name of the IAM instance profile associated with the instance, if applicable.

+
+
+ + + + +
+
+
+
+ +
+ + id string + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + imageId string + + + + + +
+
+

The ID of the AMI used to launch the instance.

+
+
+ + + + +
+
+
+
+ +
+ + instanceState string + + + + + +
+
+

The current state of the instance.

+
+
+ + + + +
+
+
+
+ +
+ + networkInterfaces array + + + + + +
+
+

Specifies ENIs attached to instance

+
+
+ + + + +
+
+
+
+ +
+ + nonRootVolumes array + + + + + +
+
+

Configuration options for the non root storage volumes.

+
+
+ + + + +
+ + deviceName string + + + + + +
+
+

Device name

+
+
+ + + + +
+
+
+
+ +
+ + encrypted boolean + + + + + +
+
+

Encrypted is whether the volume should be encrypted or not.

+
+
+ + + + +
+
+
+
+ +
+ + encryptionKey string + + + + + +
+
+

EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.

+
+
+ + + + +
+
+
+
+ +
+ + iops integer + + int64 + + + + + +
+
+

IOPS is the number of IOPS requested for the disk. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + size integer + + int64 + + + + + +
+
+

Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).

+
+
+ + + + +
+
+
+
+ +
+ + throughput integer + + int64 + + + + + +
+
+

Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Type is the type of the volume (e.g. gp2, io1, etc...).

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + privateIp string + + + + + +
+
+

The private IPv4 address assigned to the instance.

+
+
+ + + + +
+
+
+
+ +
+ + publicIp string + + + + + +
+
+

The public IPv4 address assigned to the instance, if applicable.

+
+
+ + + + +
+
+
+
+ +
+ + rootVolume object + + + + + +
+
+

Configuration options for the root storage volume.

+
+
+ + + + +
+ + deviceName string + + + + + +
+
+

Device name

+
+
+ + + + +
+
+
+
+ +
+ + encrypted boolean + + + + + +
+
+

Encrypted is whether the volume should be encrypted or not.

+
+
+ + + + +
+
+
+
+ +
+ + encryptionKey string + + + + + +
+
+

EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.

+
+
+ + + + +
+
+
+
+ +
+ + iops integer + + int64 + + + + + +
+
+

IOPS is the number of IOPS requested for the disk. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + size integer + + int64 + + + + + required + + +
+
+

Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).

+
+
+ + + + +
+
+
+
+ +
+ + throughput integer + + int64 + + + + + +
+
+

Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Type is the type of the volume (e.g. gp2, io1, etc...).

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + securityGroupIds array + + + + + +
+
+

SecurityGroupIDs are one or more security group IDs this instance belongs to.

+
+
+ + + + +
+
+
+
+ +
+ + spotMarketOptions object + + + + + +
+
+

SpotMarketOptions option for configuring instances to be run using AWS Spot instances.

+
+
+ + + + +
+ + maxPrice string + + + + + +
+
+

MaxPrice defines the maximum price the user is willing to pay for Spot VM instances

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + sshKeyName string + + + + + +
+
+

The name of the SSH key pair.

+
+
+ + + + +
+
+
+
+ +
+ + subnetId string + + + + + +
+
+

The ID of the subnet of the instance.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

The tags associated with the instance.

+
+
+ + + + +
+
+
+
+ +
+ + tenancy string + + + + + +
+
+

Tenancy indicates if instance should run on shared or single-tenant hardware.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

The instance type.

+
+
+ + + + +
+
+
+
+ +
+ + userData string + + + + + +
+
+

UserData is the raw data script passed to the instance which is run upon bootstrap. This field must not be base64 encoded and should only be used when running a new instance.

+
+
+ + + + +
+
+
+
+ +
+ + volumeIDs array + + + + + +
+
+

IDs of the instance's volumes

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + conditions array + + + + + +
+
+

Conditions provide observations of the operational state of a Cluster API resource.

+
+
+ + + + +
+ + lastTransitionTime string + + date-time + + + + + +
+
+

Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

+
+
+ + + + +
+
+
+
+ +
+ + message string + + + + + +
+
+

A human readable message indicating details about the transition. This field may be empty.

+
+
+ + + + +
+
+
+
+ +
+ + reason string + + + + + +
+
+

The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.

+
+
+ + + + +
+
+
+
+ +
+ + severity string + + + + + +
+
+

Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.

+
+
+ + + + +
+
+
+
+ +
+ + status string + + + + + +
+
+

Status of the condition, one of True, False, Unknown.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + failureDomains object + + + + + +
+
+

FailureDomains is a slice of FailureDomains.

+
+
+ + + + +
+ + attributes object + + + + + +
+
+

Attributes is a free form map of attributes an infrastructure provider might use or require.

+
+
+ + + + +
+
+
+
+ +
+ + controlPlane boolean + + + + + +
+
+

ControlPlane determines if this failure domain is suitable for use by control plane machines.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + networkStatus object + + + + + +
+
+

NetworkStatus encapsulates AWS networking resources.

+
+
+ + + + +
+ + apiServerElb object + + + + + +
+
+

APIServerELB is the Kubernetes api server classic load balancer.

+
+
+ + + + +
+ + attributes object + + + + + +
+
+

Attributes defines extra attributes associated with the load balancer.

+
+
+ + + + +
+ + crossZoneLoadBalancing boolean + + + + + +
+
+

CrossZoneLoadBalancing enables the classic load balancer load balancing.

+
+
+ + + + +
+
+
+
+ +
+ + idleTimeout integer + + int64 + + + + + +
+
+

IdleTimeout is time that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + availabilityZones array + + + + + +
+
+

AvailabilityZones is an array of availability zones in the VPC attached to the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + dnsName string + + + + + +
+
+

DNSName is the dns name of the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + healthChecks object + + + + + +
+
+

HealthCheck is the classic elb health check associated with the load balancer.

+
+
+ + + + +
+ + healthyThreshold integer + + int64 + + + + + required + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + interval integer + + int64 + + + + + required + + +
+
+

A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.

+
+
+ + + + +
+
+
+
+ +
+ + target string + + + + + required + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + timeout integer + + int64 + + + + + required + + +
+
+

A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.

+
+
+ + + + +
+
+
+
+ +
+ + unhealthyThreshold integer + + int64 + + + + + required + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + listeners array + + + + + +
+
+

Listeners is an array of classic elb listeners associated with the load balancer. There must be at least one.

+
+
+ + + + +
+ + instancePort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + instanceProtocol string + + + + + +
+
+

ClassicELBProtocol defines listener protocols for a classic load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + port integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + protocol string + + + + + +
+
+

ClassicELBProtocol defines listener protocols for a classic load balancer.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + name string + + + + + +
+
+

The name of the load balancer. It must be unique within the set of load balancers defined in the region. It also serves as identifier.

+
+
+ + + + +
+
+
+
+ +
+ + scheme string + + + + + +
+
+

Scheme is the load balancer scheme, either internet-facing or private.

+
+
+ + + + +
+
+
+
+ +
+ + securityGroupIds array + + + + + +
+
+

SecurityGroupIDs is an array of security groups assigned to the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + subnetIds array + + + + + +
+
+

SubnetIDs is an array of subnets in the VPC attached to the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a map of tags associated with the load balancer.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + securityGroups object + + + + + +
+
+

SecurityGroups is a map from the role/kind of the security group to its unique name, if any.

+
+
+ + + + +
+ + id string + + + + + +
+
+

ID is a unique identifier.

+
+
+ + + + +
+
+
+
+ +
+ + ingressRule array + + + + + +
+
+

IngressRules is the inbound rules associated with the security group.

+
+
+ + + + +
+ + cidrBlocks array + + + + + +
+
+

List of CIDR blocks to allow access from. Cannot be specified with SourceSecurityGroupID.

+
+
+ + + + +
+
+
+
+ +
+ + description string + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + fromPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + ipv6CidrBlocks array + + + + + +
+
+

List of IPv6 CIDR blocks to allow access from. Cannot be specified with SourceSecurityGroupID.

+
+
+ + + + +
+
+
+
+ +
+ + protocol string + + + + + +
+
+

SecurityGroupProtocol defines the protocol type for a security group rule.

+
+
+ + + + +
+
+
+
+ +
+ + sourceSecurityGroupIds array + + + + + +
+
+

The security group id to allow access from. Cannot be specified with CidrBlocks.

+
+
+ + + + +
+
+
+
+ +
+ + toPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + name string + + + + + +
+
+

Name is the security group name.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a map of tags associated with the security group.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ +
+ + ready boolean + + + + false + + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+ +
+ +

+ Version: infrastructure.cluster.x-k8s.io/v1beta2
+ Kind: AWSCluster +

+

+

+

AWSCluster is the schema for Amazon EC2 based Kubernetes Cluster API.

+
+ +
+
+
+
# APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
+apiVersion: infrastructure.cluster.x-k8s.io/v1beta2
+# Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
+kind: AWSCluster
+metadata: {}
+# AWSClusterSpec defines the desired state of an EC2-based Kubernetes cluster.
+spec:
+  # AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.
+  additionalTags: {}
+  # Bastion contains options to configure the bastion host.
+  bastion:
+    # AllowedCIDRBlocks is a list of CIDR blocks allowed to access the bastion host. They are set as ingress rules for the Bastion host's Security Group (defaults to 0.0.0.0/0).
+    allowedCIDRBlocks: ["string"]
+    # AMI will use the specified AMI to boot the bastion. If not specified, the AMI will default to one picked out in public space.
+    ami: string
+    # DisableIngressRules will ensure there are no Ingress rules in the bastion host's security group. Requires AllowedCIDRBlocks to be empty.
+    disableIngressRules: true
+    # Enabled allows this provider to create a bastion host instance with a public ip to access the VPC private network.
+    enabled: true
+    # InstanceType will use the specified instance type for the bastion. If not specified, Cluster API Provider AWS will use t3.micro for all regions except us-east-1, where t2.micro will be the default.
+    instanceType: string
+  # ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.
+  controlPlaneEndpoint:
+    # The hostname on which the API server is serving.
+    host: string
+    # The port on which the API server is serving.
+    port: 1
+  # ControlPlaneLoadBalancer is optional configuration for customizing control plane behavior.
+  controlPlaneLoadBalancer:
+    # AdditionalSecurityGroups sets the security groups used by the load balancer. Expected to be security group IDs This is optional - if not provided new security groups will be created for the load balancer
+    additionalSecurityGroups: ["string"]
+    # CrossZoneLoadBalancing enables the classic ELB cross availability zone balancing. 
+    #  With cross-zone load balancing, each load balancer node for your Classic Load Balancer distributes requests evenly across the registered instances in all enabled Availability Zones. If cross-zone load balancing is disabled, each load balancer node distributes requests evenly across the registered instances in its Availability Zone only. 
+    #  Defaults to false.
+    crossZoneLoadBalancing: true
+    # HealthCheckProtocol sets the protocol type for classic ELB health check target default value is ClassicELBProtocolSSL
+    healthCheckProtocol: string
+    # Name sets the name of the classic ELB load balancer. As per AWS, the name must be unique within your set of load balancers for the region, must have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and cannot begin or end with a hyphen. Once set, the value cannot be changed.
+    name: string
+    # Scheme sets the scheme of the load balancer (defaults to internet-facing)
+    scheme: "internet-facing"
+    # Subnets sets the subnets that should be applied to the control plane load balancer (defaults to discovered subnets for managed VPCs or an empty set for unmanaged VPCs)
+    subnets: ["string"]
+  # IdentityRef is a reference to a identity to be used when reconciling this cluster
+  identityRef:
+    # Kind of the identity.
+    kind: AWSCluster
+    # Name of the identity.
+    name: string
+  # ImageLookupBaseOS is the name of the base operating system used to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupBaseOS.
+  imageLookupBaseOS: string
+  # ImageLookupFormat is the AMI naming format to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg. Supports substitutions for {{.BaseOS}} and {{.K8sVersion}} with the base OS and kubernetes version, respectively. The BaseOS will be the value in ImageLookupBaseOS or ubuntu (the default), and the kubernetes version as defined by the packages produced by kubernetes/release without v as a prefix: 1.13.0, 1.12.5-mybuild.1, or 1.17.3. For example, the default image format of capa-ami-{{.BaseOS}}-?{{.K8sVersion}}-* will end up searching for AMIs that match the pattern capa-ami-ubuntu-?1.18.0-* for a Machine that is targeting kubernetes v1.18.0 and the ubuntu base OS. See also: https://golang.org/pkg/text/template/
+  imageLookupFormat: string
+  # ImageLookupOrg is the AWS Organization ID to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg.
+  imageLookupOrg: string
+  # NetworkSpec encapsulates all things related to AWS network.
+  network:
+    # CNI configuration
+    cni:
+      # CNIIngressRules specify rules to apply to control plane and worker node security groups. The source for the rule will be set to control plane and worker security group IDs.
+      cniIngressRules:
+      - description: string
+        fromPort: 1
+        # SecurityGroupProtocol defines the protocol type for a security group rule.
+        protocol: string
+        toPort: 1
+    # SecurityGroupOverrides is an optional set of security groups to use for cluster instances This is optional - if not provided new security groups will be created for the cluster
+    securityGroupOverrides: {}
+    # Subnets configuration.
+    subnets:
+    - availabilityZone: string
+      # CidrBlock is the CIDR block to be used when the provider creates a managed VPC.
+      cidrBlock: string
+      # ID defines a unique identifier to reference this resource.
+      id: string
+      # IPv6CidrBlock is the IPv6 CIDR block to be used when the provider creates a managed VPC. A subnet can have an IPv4 and an IPv6 address. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.
+      ipv6CidrBlock: string
+      # IsIPv6 defines the subnet as an IPv6 subnet. A subnet is IPv6 when it is associated with a VPC that has IPv6 enabled. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.
+      isIpv6: true
+      # IsPublic defines the subnet as a public subnet. A subnet is public when it is associated with a route table that has a route to an internet gateway.
+      isPublic: true
+      # NatGatewayID is the NAT gateway id associated with the subnet. Ignored unless the subnet is managed by the provider, in which case this is set on the public subnet where the NAT gateway resides. It is then used to determine routes for private subnets in the same AZ as the public subnet.
+      natGatewayId: string
+      # RouteTableID is the routing table id associated with the subnet.
+      routeTableId: string
+      # Tags is a collection of tags describing the resource.
+      tags: {}
+    # VPC configuration.
+    vpc:
+      # AvailabilityZoneSelection specifies how AZs should be selected if there are more AZs in a region than specified by AvailabilityZoneUsageLimit. There are 2 selection schemes: Ordered - selects based on alphabetical order Random - selects AZs randomly in a region Defaults to Ordered
+      availabilityZoneSelection: "Ordered"
+      # AvailabilityZoneUsageLimit specifies the maximum number of availability zones (AZ) that should be used in a region when automatically creating subnets. If a region has more than this number of AZs then this number of AZs will be picked randomly when creating default subnets. Defaults to 3
+      availabilityZoneUsageLimit: 3
+      # CidrBlock is the CIDR block to be used when the provider creates a managed VPC. Defaults to 10.0.0.0/16.
+      cidrBlock: string
+      # ID is the vpc-id of the VPC this provider should use to create resources.
+      id: string
+      # InternetGatewayID is the id of the internet gateway associated with the VPC.
+      internetGatewayId: string
+      # IPv6 contains ipv6 specific settings for the network. Supported only in managed clusters. This field cannot be set on AWSCluster object.
+      ipv6:
+        # CidrBlock is the CIDR block provided by Amazon when VPC has enabled IPv6.
+        cidrBlock: string
+        # EgressOnlyInternetGatewayID is the id of the egress only internet gateway associated with an IPv6 enabled VPC.
+        egressOnlyInternetGatewayId: string
+        # PoolID is the IP pool which must be defined in case of BYO IP is defined.
+        poolId: string
+      # Tags is a collection of tags describing the resource.
+      tags: {}
+  # The AWS Region the cluster lives in.
+  region: string
+  # S3Bucket contains options to configure a supporting S3 bucket for this cluster - currently used for nodes requiring Ignition (https://coreos.github.io/ignition/) for bootstrapping (requires BootstrapFormatIgnition feature flag to be enabled).
+  s3Bucket:
+    # ControlPlaneIAMInstanceProfile is a name of the IAMInstanceProfile, which will be allowed to read control-plane node bootstrap data from S3 Bucket.
+    controlPlaneIAMInstanceProfile: string
+    # Name defines name of S3 Bucket to be created.
+    name: string
+    # NodesIAMInstanceProfiles is a list of IAM instance profiles, which will be allowed to read worker nodes bootstrap data from S3 Bucket.
+    nodesIAMInstanceProfiles: ["string"]
+  # SSHKeyName is the name of the ssh key to attach to the bastion host. Valid values are empty string (do not use SSH keys), a valid SSH key name, or omitted (use the default SSH key name)
+  sshKeyName: string
+# AWSClusterStatus defines the observed state of AWSCluster.
+status:
+  # Instance describes an AWS instance.
+  bastion:
+    # Addresses contains the AWS instance associated addresses.
+    addresses:
+    - address: string
+      # Machine address type, one of Hostname, ExternalIP or InternalIP.
+      type: string
+    # Availability zone of instance
+    availabilityZone: string
+    # Indicates whether the instance is optimized for Amazon EBS I/O.
+    ebsOptimized: true
+    # Specifies whether enhanced networking with ENA is enabled.
+    enaSupport: true
+    # The name of the IAM instance profile associated with the instance, if applicable.
+    iamProfile: string
+    id: string
+    # The ID of the AMI used to launch the instance.
+    imageId: string
+    # The current state of the instance.
+    instanceState: string
+    # Specifies ENIs attached to instance
+    networkInterfaces: ["string"]
+    # Configuration options for the non root storage volumes.
+    nonRootVolumes:
+    - deviceName: string
+      # Encrypted is whether the volume should be encrypted or not.
+      encrypted: true
+      # EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.
+      encryptionKey: string
+      # IOPS is the number of IOPS requested for the disk. Not applicable to all types.
+      iops: 1
+      # Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).
+      size: 1
+      # Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
+      throughput: 1
+      # Type is the type of the volume (e.g. gp2, io1, etc...).
+      type: string
+    # The private IPv4 address assigned to the instance.
+    privateIp: string
+    # The public IPv4 address assigned to the instance, if applicable.
+    publicIp: string
+    # Configuration options for the root storage volume.
+    rootVolume:
+      # Device name
+      deviceName: string
+      # Encrypted is whether the volume should be encrypted or not.
+      encrypted: true
+      # EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.
+      encryptionKey: string
+      # IOPS is the number of IOPS requested for the disk. Not applicable to all types.
+      iops: 1
+      # Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).
+      size: 1
+      # Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.
+      throughput: 1
+      # Type is the type of the volume (e.g. gp2, io1, etc...).
+      type: string
+    # SecurityGroupIDs are one or more security group IDs this instance belongs to.
+    securityGroupIds: ["string"]
+    # SpotMarketOptions option for configuring instances to be run using AWS Spot instances.
+    spotMarketOptions:
+      # MaxPrice defines the maximum price the user is willing to pay for Spot VM instances
+      maxPrice: string
+    # The name of the SSH key pair.
+    sshKeyName: string
+    # The ID of the subnet of the instance.
+    subnetId: string
+    # The tags associated with the instance.
+    tags: {}
+    # Tenancy indicates if instance should run on shared or single-tenant hardware.
+    tenancy: string
+    # The instance type.
+    type: string
+    # UserData is the raw data script passed to the instance which is run upon bootstrap. This field must not be base64 encoded and should only be used when running a new instance.
+    userData: string
+    # IDs of the instance's volumes
+    volumeIDs: ["string"]
+  # Conditions provide observations of the operational state of a Cluster API resource.
+  conditions:
+  - lastTransitionTime: string
+    # A human readable message indicating details about the transition. This field may be empty.
+    message: string
+    # The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.
+    reason: string
+    # Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.
+    severity: string
+    # Status of the condition, one of True, False, Unknown.
+    status: string
+    # Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.
+    type: string
+  # FailureDomains is a slice of FailureDomains.
+  failureDomains:
+    # Attributes is a free form map of attributes an infrastructure provider might use or require.
+    attributes: {}
+    # ControlPlane determines if this failure domain is suitable for use by control plane machines.
+    controlPlane: true
+  # NetworkStatus encapsulates AWS networking resources.
+  networkStatus:
+    # APIServerELB is the Kubernetes api server classic load balancer.
+    apiServerElb:
+      # Attributes defines extra attributes associated with the load balancer.
+      attributes:
+        # CrossZoneLoadBalancing enables the classic load balancer load balancing.
+        crossZoneLoadBalancing: true
+        # IdleTimeout is time that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer.
+        idleTimeout: 1
+      # AvailabilityZones is an array of availability zones in the VPC attached to the load balancer.
+      availabilityZones: ["string"]
+      # DNSName is the dns name of the load balancer.
+      dnsName: string
+      # HealthCheck is the classic elb health check associated with the load balancer.
+      healthChecks:
+        healthyThreshold: 1
+        # A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.
+        interval: 1
+        target: string
+        # A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.
+        timeout: 1
+        unhealthyThreshold: 1
+      # Listeners is an array of classic elb listeners associated with the load balancer. There must be at least one.
+      listeners:
+      - instancePort: 1
+        # ClassicELBProtocol defines listener protocols for a classic load balancer.
+        instanceProtocol: string
+        port: 1
+        # ClassicELBProtocol defines listener protocols for a classic load balancer.
+        protocol: string
+      # The name of the load balancer. It must be unique within the set of load balancers defined in the region. It also serves as identifier.
+      name: string
+      # Scheme is the load balancer scheme, either internet-facing or private.
+      scheme: string
+      # SecurityGroupIDs is an array of security groups assigned to the load balancer.
+      securityGroupIds: ["string"]
+      # SubnetIDs is an array of subnets in the VPC attached to the load balancer.
+      subnetIds: ["string"]
+      # Tags is a map of tags associated with the load balancer.
+      tags: {}
+    # SecurityGroups is a map from the role/kind of the security group to its unique name, if any.
+    securityGroups:
+      # ID is a unique identifier.
+      id: string
+      # IngressRules is the inbound rules associated with the security group.
+      ingressRule:
+      - cidrBlocks: ["string"]
+        description: string
+        fromPort: 1
+        # List of IPv6 CIDR blocks to allow access from. Cannot be specified with SourceSecurityGroupID.
+        ipv6CidrBlocks: ["string"]
+        # SecurityGroupProtocol defines the protocol type for a security group rule.
+        protocol: string
+        # The security group id to allow access from. Cannot be specified with CidrBlocks.
+        sourceSecurityGroupIds: ["string"]
+        toPort: 1
+      # Name is the security group name.
+      name: string
+      # Tags is a map of tags associated with the security group.
+      tags: {}
+  ready: false
+
+
+
+
+

+
+ + +
+
+ +
+ + apiVersion string + + + + + +
+
+

APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

+
+ + + +
+
+
+ +
+ + kind string + + + + + +
+
+

Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

+
+ + + +
+
+
+ +
+ + metadata object + + + + + +
+
+

+
+ + + +
+
+
+ +
+ + spec object + + + + + +
+
+

AWSClusterSpec defines the desired state of an EC2-based Kubernetes cluster.

+
+ + + +
+ + additionalTags object + + + + + +
+
+

AdditionalTags is an optional set of tags to add to AWS resources managed by the AWS provider, in addition to the ones added by default.

+
+
+ + + + +
+
+
+
+ +
+ + bastion object + + + + + +
+
+

Bastion contains options to configure the bastion host.

+
+
+ + + + +
+ + allowedCIDRBlocks array + + + + + +
+
+

AllowedCIDRBlocks is a list of CIDR blocks allowed to access the bastion host. They are set as ingress rules for the Bastion host's Security Group (defaults to 0.0.0.0/0).

+
+
+ + + + +
+
+
+
+ +
+ + ami string + + + + + +
+
+

AMI will use the specified AMI to boot the bastion. If not specified, the AMI will default to one picked out in public space.

+
+
+ + + + +
+
+
+
+ +
+ + disableIngressRules boolean + + + + + +
+
+

DisableIngressRules will ensure there are no Ingress rules in the bastion host's security group. Requires AllowedCIDRBlocks to be empty.

+
+
+ + + + +
+
+
+
+ +
+ + enabled boolean + + + + + +
+
+

Enabled allows this provider to create a bastion host instance with a public ip to access the VPC private network.

+
+
+ + + + +
+
+
+
+ +
+ + instanceType string + + + + + +
+
+

InstanceType will use the specified instance type for the bastion. If not specified, Cluster API Provider AWS will use t3.micro for all regions except us-east-1, where t2.micro will be the default.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + controlPlaneEndpoint object + + + + + +
+
+

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+
+ + + + +
+ + host string + + + + + required + + +
+
+

The hostname on which the API server is serving.

+
+
+ + + + +
+
+
+
+ +
+ + port integer + + int32 + + + + + required + + +
+
+

The port on which the API server is serving.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + controlPlaneLoadBalancer object + + + + + +
+
+

ControlPlaneLoadBalancer is optional configuration for customizing control plane behavior.

+
+
+ + + + +
+ + additionalSecurityGroups array + + + + + +
+
+

AdditionalSecurityGroups sets the security groups used by the load balancer. Expected to be security group IDs This is optional - if not provided new security groups will be created for the load balancer

+
+
+ + + + +
+
+
+
+ +
+ + crossZoneLoadBalancing boolean + + + + + +
+
+

CrossZoneLoadBalancing enables the classic ELB cross availability zone balancing. + With cross-zone load balancing, each load balancer node for your Classic Load Balancer distributes requests evenly across the registered instances in all enabled Availability Zones. If cross-zone load balancing is disabled, each load balancer node distributes requests evenly across the registered instances in its Availability Zone only. + Defaults to false.

+
+
+ + + + +
+
+
+
+ +
+ + healthCheckProtocol string + + + + + +
+
+

HealthCheckProtocol sets the protocol type for classic ELB health check target default value is ClassicELBProtocolSSL

+
+
+ + + + +
+
+
+
+ +
+ + name string + + + ^[A-Za-z0-9]([A-Za-z0-9]{0,31}|[-A-Za-z0-9]{0,30}[A-Za-z0-9])$ + + + + +
+
+

Name sets the name of the classic ELB load balancer. As per AWS, the name must be unique within your set of load balancers for the region, must have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and cannot begin or end with a hyphen. Once set, the value cannot be changed.

+
+
+ + + + +
+
+
+
+ +
+ + scheme string + + + + "internet-facing" + + + +
+
+

Scheme sets the scheme of the load balancer (defaults to internet-facing)

+
+
+ + + + +
+
+
+
+ +
+ + subnets array + + + + + +
+
+

Subnets sets the subnets that should be applied to the control plane load balancer (defaults to discovered subnets for managed VPCs or an empty set for unmanaged VPCs)

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + identityRef object + + + + + +
+
+

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+ + + + +
+ + kind string + + + + + required + + +
+
+

Kind of the identity.

+
+
+ + + + +
+
+
+
+ +
+ + name string + + + + + required + + +
+
+

Name of the identity.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + imageLookupBaseOS string + + + + + +
+
+

ImageLookupBaseOS is the name of the base operating system used to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupBaseOS.

+
+
+ + + + +
+
+
+
+ +
+ + imageLookupFormat string + + + + + +
+
+

ImageLookupFormat is the AMI naming format to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg. Supports substitutions for {{.BaseOS}} and {{.K8sVersion}} with the base OS and kubernetes version, respectively. The BaseOS will be the value in ImageLookupBaseOS or ubuntu (the default), and the kubernetes version as defined by the packages produced by kubernetes/release without v as a prefix: 1.13.0, 1.12.5-mybuild.1, or 1.17.3. For example, the default image format of capa-ami-{{.BaseOS}}-?{{.K8sVersion}}-* will end up searching for AMIs that match the pattern capa-ami-ubuntu-?1.18.0-* for a Machine that is targeting kubernetes v1.18.0 and the ubuntu base OS. See also: https://golang.org/pkg/text/template/

+
+
+ + + + +
+
+
+
+ +
+ + imageLookupOrg string + + + + + +
+
+

ImageLookupOrg is the AWS Organization ID to look up machine images when a machine does not specify an AMI. When set, this will be used for all cluster machines unless a machine specifies a different ImageLookupOrg.

+
+
+ + + + +
+
+
+
+ +
+ + network object + + + + + +
+
+

NetworkSpec encapsulates all things related to AWS network.

+
+
+ + + + +
+ + cni object + + + + + +
+
+

CNI configuration

+
+
+ + + + +
+ + cniIngressRules array + + + + + +
+
+

CNIIngressRules specify rules to apply to control plane and worker node security groups. The source for the rule will be set to control plane and worker security group IDs.

+
+
+ + + + +
+ + description string + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + fromPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + protocol string + + + + + +
+
+

SecurityGroupProtocol defines the protocol type for a security group rule.

+
+
+ + + + +
+
+
+
+ +
+ + toPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ +
+ + securityGroupOverrides object + + + + + +
+
+

SecurityGroupOverrides is an optional set of security groups to use for cluster instances This is optional - if not provided new security groups will be created for the cluster

+
+
+ + + + +
+
+
+
+ +
+ + subnets array + + + + + +
+
+

Subnets configuration.

+
+
+ + + + +
+ + availabilityZone string + + + + + +
+
+

AvailabilityZone defines the availability zone to use for this subnet in the cluster's region.

+
+
+ + + + +
+
+
+
+ +
+ + cidrBlock string + + + + + +
+
+

CidrBlock is the CIDR block to be used when the provider creates a managed VPC.

+
+
+ + + + +
+
+
+
+ +
+ + id string + + + + + +
+
+

ID defines a unique identifier to reference this resource.

+
+
+ + + + +
+
+
+
+ +
+ + ipv6CidrBlock string + + + + + +
+
+

IPv6CidrBlock is the IPv6 CIDR block to be used when the provider creates a managed VPC. A subnet can have an IPv4 and an IPv6 address. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.

+
+
+ + + + +
+
+
+
+ +
+ + isIpv6 boolean + + + + + +
+
+

IsIPv6 defines the subnet as an IPv6 subnet. A subnet is IPv6 when it is associated with a VPC that has IPv6 enabled. IPv6 is only supported in managed clusters, this field cannot be set on AWSCluster object.

+
+
+ + + + +
+
+
+
+ +
+ + isPublic boolean + + + + + +
+
+

IsPublic defines the subnet as a public subnet. A subnet is public when it is associated with a route table that has a route to an internet gateway.

+
+
+ + + + +
+
+
+
+ +
+ + natGatewayId string + + + + + +
+
+

NatGatewayID is the NAT gateway id associated with the subnet. Ignored unless the subnet is managed by the provider, in which case this is set on the public subnet where the NAT gateway resides. It is then used to determine routes for private subnets in the same AZ as the public subnet.

+
+
+ + + + +
+
+
+
+ +
+ + routeTableId string + + + + + +
+
+

RouteTableID is the routing table id associated with the subnet.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a collection of tags describing the resource.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + vpc object + + + + + +
+
+

VPC configuration.

+
+
+ + + + +
+ + availabilityZoneSelection string + + + + "Ordered" + + + +
+
+

AvailabilityZoneSelection specifies how AZs should be selected if there are more AZs in a region than specified by AvailabilityZoneUsageLimit. There are 2 selection schemes: Ordered - selects based on alphabetical order Random - selects AZs randomly in a region Defaults to Ordered

+
+
+ + + + +
+
+
+
+ +
+ + availabilityZoneUsageLimit integer + + + + 3 + + + +
+
+

AvailabilityZoneUsageLimit specifies the maximum number of availability zones (AZ) that should be used in a region when automatically creating subnets. If a region has more than this number of AZs then this number of AZs will be picked randomly when creating default subnets. Defaults to 3

+
+
+ + + + +
+
+
+
+ +
+ + cidrBlock string + + + + + +
+
+

CidrBlock is the CIDR block to be used when the provider creates a managed VPC. Defaults to 10.0.0.0/16.

+
+
+ + + + +
+
+
+
+ +
+ + id string + + + + + +
+
+

ID is the vpc-id of the VPC this provider should use to create resources.

+
+
+ + + + +
+
+
+
+ +
+ + internetGatewayId string + + + + + +
+
+

InternetGatewayID is the id of the internet gateway associated with the VPC.

+
+
+ + + + +
+
+
+
+ +
+ + ipv6 object + + + + + +
+
+

IPv6 contains ipv6 specific settings for the network. Supported only in managed clusters. This field cannot be set on AWSCluster object.

+
+
+ + + + +
+ + cidrBlock string + + + + + +
+
+

CidrBlock is the CIDR block provided by Amazon when VPC has enabled IPv6.

+
+
+ + + + +
+
+
+
+ +
+ + egressOnlyInternetGatewayId string + + + + + +
+
+

EgressOnlyInternetGatewayID is the id of the egress only internet gateway associated with an IPv6 enabled VPC.

+
+
+ + + + +
+
+
+
+ +
+ + poolId string + + + + + +
+
+

PoolID is the IP pool which must be defined in case of BYO IP is defined.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a collection of tags describing the resource.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ +
+ + region string + + + + + +
+
+

The AWS Region the cluster lives in.

+
+
+ + + + +
+
+
+
+ +
+ + s3Bucket object + + + + + +
+
+

S3Bucket contains options to configure a supporting S3 bucket for this cluster - currently used for nodes requiring Ignition (https://coreos.github.io/ignition/) for bootstrapping (requires BootstrapFormatIgnition feature flag to be enabled).

+
+
+ + + + +
+ + controlPlaneIAMInstanceProfile string + + + + + required + + +
+
+

ControlPlaneIAMInstanceProfile is a name of the IAMInstanceProfile, which will be allowed to read control-plane node bootstrap data from S3 Bucket.

+
+
+ + + + +
+
+
+
+ +
+ + name string + + + ^[a-z0-9][a-z0-9.-]{1,61}[a-z0-9]$ + + + + required + + +
+
+

Name defines name of S3 Bucket to be created.

+
+
+ + + + +
+
+
+
+ +
+ + nodesIAMInstanceProfiles array + + + + + required + + +
+
+

NodesIAMInstanceProfiles is a list of IAM instance profiles, which will be allowed to read worker nodes bootstrap data from S3 Bucket.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + sshKeyName string + + + + + +
+
+

SSHKeyName is the name of the ssh key to attach to the bastion host. Valid values are empty string (do not use SSH keys), a valid SSH key name, or omitted (use the default SSH key name)

+
+
+ + + + +
+
+
+
+ + + +
+
+
+ +
+ + status object + + + + + +
+
+

AWSClusterStatus defines the observed state of AWSCluster.

+
+ + + +
+ + bastion object + + + + + +
+
+

Instance describes an AWS instance.

+
+
+ + + + +
+ + addresses array + + + + + +
+
+

Addresses contains the AWS instance associated addresses.

+
+
+ + + + +
+ + address string + + + + + +
+
+

The machine address.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Machine address type, one of Hostname, ExternalIP or InternalIP.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + availabilityZone string + + + + + +
+
+

Availability zone of instance

+
+
+ + + + +
+
+
+
+ +
+ + ebsOptimized boolean + + + + + +
+
+

Indicates whether the instance is optimized for Amazon EBS I/O.

+
+
+ + + + +
+
+
+
+ +
+ + enaSupport boolean + + + + + +
+
+

Specifies whether enhanced networking with ENA is enabled.

+
+
+ + + + +
+
+
+
+ +
+ + iamProfile string + + + + + +
+
+

The name of the IAM instance profile associated with the instance, if applicable.

+
+
+ + + + +
+
+
+
+ +
+ + id string + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + imageId string + + + + + +
+
+

The ID of the AMI used to launch the instance.

+
+
+ + + + +
+
+
+
+ +
+ + instanceState string + + + + + +
+
+

The current state of the instance.

+
+
+ + + + +
+
+
+
+ +
+ + networkInterfaces array + + + + + +
+
+

Specifies ENIs attached to instance

+
+
+ + + + +
+
+
+
+ +
+ + nonRootVolumes array + + + + + +
+
+

Configuration options for the non root storage volumes.

+
+
+ + + + +
+ + deviceName string + + + + + +
+
+

Device name

+
+
+ + + + +
+
+
+
+ +
+ + encrypted boolean + + + + + +
+
+

Encrypted is whether the volume should be encrypted or not.

+
+
+ + + + +
+
+
+
+ +
+ + encryptionKey string + + + + + +
+
+

EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.

+
+
+ + + + +
+
+
+
+ +
+ + iops integer + + int64 + + + + + +
+
+

IOPS is the number of IOPS requested for the disk. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + size integer + + int64 + + + + + +
+
+

Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).

+
+
+ + + + +
+
+
+
+ +
+ + throughput integer + + int64 + + + + + +
+
+

Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Type is the type of the volume (e.g. gp2, io1, etc...).

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + privateIp string + + + + + +
+
+

The private IPv4 address assigned to the instance.

+
+
+ + + + +
+
+
+
+ +
+ + publicIp string + + + + + +
+
+

The public IPv4 address assigned to the instance, if applicable.

+
+
+ + + + +
+
+
+
+ +
+ + rootVolume object + + + + + +
+
+

Configuration options for the root storage volume.

+
+
+ + + + +
+ + deviceName string + + + + + +
+
+

Device name

+
+
+ + + + +
+
+
+
+ +
+ + encrypted boolean + + + + + +
+
+

Encrypted is whether the volume should be encrypted or not.

+
+
+ + + + +
+
+
+
+ +
+ + encryptionKey string + + + + + +
+
+

EncryptionKey is the KMS key to use to encrypt the volume. Can be either a KMS key ID or ARN. If Encrypted is set and this is omitted, the default AWS key will be used. The key must already exist and be accessible by the controller.

+
+
+ + + + +
+
+
+
+ +
+ + iops integer + + int64 + + + + + +
+
+

IOPS is the number of IOPS requested for the disk. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + size integer + + int64 + + + + + required + + +
+
+

Size specifies size (in Gi) of the storage device. Must be greater than the image snapshot size or 8 (whichever is greater).

+
+
+ + + + +
+
+
+
+ +
+ + throughput integer + + int64 + + + + + +
+
+

Throughput to provision in MiB/s supported for the volume type. Not applicable to all types.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Type is the type of the volume (e.g. gp2, io1, etc...).

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + securityGroupIds array + + + + + +
+
+

SecurityGroupIDs are one or more security group IDs this instance belongs to.

+
+
+ + + + +
+
+
+
+ +
+ + spotMarketOptions object + + + + + +
+
+

SpotMarketOptions option for configuring instances to be run using AWS Spot instances.

+
+
+ + + + +
+ + maxPrice string + + + + + +
+
+

MaxPrice defines the maximum price the user is willing to pay for Spot VM instances

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + sshKeyName string + + + + + +
+
+

The name of the SSH key pair.

+
+
+ + + + +
+
+
+
+ +
+ + subnetId string + + + + + +
+
+

The ID of the subnet of the instance.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

The tags associated with the instance.

+
+
+ + + + +
+
+
+
+ +
+ + tenancy string + + + + + +
+
+

Tenancy indicates if instance should run on shared or single-tenant hardware.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

The instance type.

+
+
+ + + + +
+
+
+
+ +
+ + userData string + + + + + +
+
+

UserData is the raw data script passed to the instance which is run upon bootstrap. This field must not be base64 encoded and should only be used when running a new instance.

+
+
+ + + + +
+
+
+
+ +
+ + volumeIDs array + + + + + +
+
+

IDs of the instance's volumes

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + conditions array + + + + + +
+
+

Conditions provide observations of the operational state of a Cluster API resource.

+
+
+ + + + +
+ + lastTransitionTime string + + date-time + + + + + +
+
+

Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

+
+
+ + + + +
+
+
+
+ +
+ + message string + + + + + +
+
+

A human readable message indicating details about the transition. This field may be empty.

+
+
+ + + + +
+
+
+
+ +
+ + reason string + + + + + +
+
+

The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.

+
+
+ + + + +
+
+
+
+ +
+ + severity string + + + + + +
+
+

Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.

+
+
+ + + + +
+
+
+
+ +
+ + status string + + + + + +
+
+

Status of the condition, one of True, False, Unknown.

+
+
+ + + + +
+
+
+
+ +
+ + type string + + + + + +
+
+

Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + failureDomains object + + + + + +
+
+

FailureDomains is a slice of FailureDomains.

+
+
+ + + + +
+ + attributes object + + + + + +
+
+

Attributes is a free form map of attributes an infrastructure provider might use or require.

+
+
+ + + + +
+
+
+
+ +
+ + controlPlane boolean + + + + + +
+
+

ControlPlane determines if this failure domain is suitable for use by control plane machines.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + networkStatus object + + + + + +
+
+

NetworkStatus encapsulates AWS networking resources.

+
+
+ + + + +
+ + apiServerElb object + + + + + +
+
+

APIServerELB is the Kubernetes api server classic load balancer.

+
+
+ + + + +
+ + attributes object + + + + + +
+
+

Attributes defines extra attributes associated with the load balancer.

+
+
+ + + + +
+ + crossZoneLoadBalancing boolean + + + + + +
+
+

CrossZoneLoadBalancing enables the classic load balancer load balancing.

+
+
+ + + + +
+
+
+
+ +
+ + idleTimeout integer + + int64 + + + + + +
+
+

IdleTimeout is time that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + availabilityZones array + + + + + +
+
+

AvailabilityZones is an array of availability zones in the VPC attached to the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + dnsName string + + + + + +
+
+

DNSName is the dns name of the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + healthChecks object + + + + + +
+
+

HealthCheck is the classic elb health check associated with the load balancer.

+
+
+ + + + +
+ + healthyThreshold integer + + int64 + + + + + required + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + interval integer + + int64 + + + + + required + + +
+
+

A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.

+
+
+ + + + +
+
+
+
+ +
+ + target string + + + + + required + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + timeout integer + + int64 + + + + + required + + +
+
+

A Duration represents the elapsed time between two instants as an int64 nanosecond count. The representation limits the largest representable duration to approximately 290 years.

+
+
+ + + + +
+
+
+
+ +
+ + unhealthyThreshold integer + + int64 + + + + + required + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + listeners array + + + + + +
+
+

Listeners is an array of classic elb listeners associated with the load balancer. There must be at least one.

+
+
+ + + + +
+ + instancePort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + instanceProtocol string + + + + + +
+
+

ClassicELBProtocol defines listener protocols for a classic load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + port integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + protocol string + + + + + +
+
+

ClassicELBProtocol defines listener protocols for a classic load balancer.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + name string + + + + + +
+
+

The name of the load balancer. It must be unique within the set of load balancers defined in the region. It also serves as identifier.

+
+
+ + + + +
+
+
+
+ +
+ + scheme string + + + + + +
+
+

Scheme is the load balancer scheme, either internet-facing or private.

+
+
+ + + + +
+
+
+
+ +
+ + securityGroupIds array + + + + + +
+
+

SecurityGroupIDs is an array of security groups assigned to the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + subnetIds array + + + + + +
+
+

SubnetIDs is an array of subnets in the VPC attached to the load balancer.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a map of tags associated with the load balancer.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + securityGroups object + + + + + +
+
+

SecurityGroups is a map from the role/kind of the security group to its unique name, if any.

+
+
+ + + + +
+ + id string + + + + + +
+
+

ID is a unique identifier.

+
+
+ + + + +
+
+
+
+ +
+ + ingressRule array + + + + + +
+
+

IngressRules is the inbound rules associated with the security group.

+
+
+ + + + +
+ + cidrBlocks array + + + + + +
+
+

List of CIDR blocks to allow access from. Cannot be specified with SourceSecurityGroupID.

+
+
+ + + + +
+
+
+
+ +
+ + description string + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + fromPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ +
+ + ipv6CidrBlocks array + + + + + +
+
+

List of IPv6 CIDR blocks to allow access from. Cannot be specified with SourceSecurityGroupID.

+
+
+ + + + +
+
+
+
+ +
+ + protocol string + + + + + +
+
+

SecurityGroupProtocol defines the protocol type for a security group rule.

+
+
+ + + + +
+
+
+
+ +
+ + sourceSecurityGroupIds array + + + + + +
+
+

The security group id to allow access from. Cannot be specified with CidrBlocks.

+
+
+ + + + +
+
+
+
+ +
+ + toPort integer + + int64 + + + + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ +
+ + name string + + + + + +
+
+

Name is the security group name.

+
+
+ + + + +
+
+
+
+ +
+ + tags object + + + + + +
+
+

Tags is a map of tags associated with the security group.

+
+
+ + + + +
+
+
+
+ + + +
+
+
+
+ + + +
+
+
+
+ +
+ + ready boolean + + + + false + + + +
+
+

+
+
+ + + + +
+
+
+
+ + + +
+
+
+ +
+ +
+
+
+ + + + + + From 8748c223e235f0c8839caee609681b859ea2f3fa Mon Sep 17 00:00:00 2001 From: Gergely Brautigam <182850+Skarlso@users.noreply.github.com> Date: Thu, 9 May 2024 10:59:41 +0200 Subject: [PATCH 2/2] remove lint failure --- pkg/create_html_output.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/create_html_output.go b/pkg/create_html_output.go index 1492a27..b5d5c26 100644 --- a/pkg/create_html_output.go +++ b/pkg/create_html_output.go @@ -150,21 +150,22 @@ func parseCRD(properties map[string]v1beta1.JSONSchemaProps, version string, req p.Default = string(v.Default.Raw) } - if len(properties[k].Properties) > 0 && properties[k].AdditionalProperties == nil { + switch { + case len(properties[k].Properties) > 0 && properties[k].AdditionalProperties == nil: requiredList = v.Required out, err := parseCRD(properties[k].Properties, version, requiredList) if err != nil { return nil, err } p.Properties = out - } else if properties[k].Type == array && properties[k].Items.Schema != nil && len(properties[k].Items.Schema.Properties) > 0 { + case properties[k].Type == array && properties[k].Items.Schema != nil && len(properties[k].Items.Schema.Properties) > 0: requiredList = v.Required out, err := parseCRD(properties[k].Items.Schema.Properties, version, requiredList) if err != nil { return nil, err } p.Properties = out - } else if properties[k].AdditionalProperties != nil { + case properties[k].AdditionalProperties != nil: requiredList = v.Required out, err := parseCRD(properties[k].AdditionalProperties.Schema.Properties, version, requiredList) if err != nil { @@ -172,6 +173,7 @@ func parseCRD(properties map[string]v1beta1.JSONSchemaProps, version string, req } p.Properties = out } + output = append(output, p) }