Types

Types

Overview

Package entity contains type definitions for Kublr.

type AWSAPIAccessKeySpec

AWSAPIAccessKeySpec defines AWS Access Key and Secret Key.

type AWSAPIAccessKeySpec struct {
    AccessKeyID     string `json:"accessKeyId" yaml:"accessKeyId"`
    SecretAccessKey string `json:"secretAccessKey" yaml:"secretAccessKey"`
    // AWS session token
    // Since version 1.24
    SessionToken string `json:"sessionToken,omitempty" yaml:"sessionToken,omitempty"`
    // Partition AWS partition
    // Since version 1.20
    Partition string `json:"partition,omitempty" yaml:"partition,omitempty"`
}

type AWSAvailabilityZoneCloudFormationExtrasSpec

AWSAvailabilityZoneCloudFormationExtrasSpec overrides, customizations, and additional properties for Kublr-generated CloudFormation template and CloudFormation template resources for a specific AZ Since version 1.24

type AWSAvailabilityZoneCloudFormationExtrasSpec struct {
    // NatGateway overrides and extended properties for NAT Gateway in this AZ
    NatGateway interface{} `json:"natGateway,omitempty" yaml:"natGateway,omitempty"`
    // NatGatewayElasticIP overrides and extended properties for the NAT Gateway EIP in this AZ
    NatGatewayElasticIP interface{} `json:"natGatewayElasticIP,omitempty" yaml:"natGatewayElasticIP,omitempty"`
    // RouteTablePrivate overrides and extended properties for the private route table in this AZ
    RouteTablePrivate interface{} `json:"routeTablePrivate,omitempty" yaml:"routeTablePrivate,omitempty"`
    // RouteTablePrivateRouteToInternet overrides and extended properties for the private internet Route AWS resources in this AZ
    RouteTablePrivateRouteToInternet interface{} `json:"routeTablePrivateRouteToInternet,omitempty" yaml:"routeTablePrivateRouteToInternet,omitempty"`

    // Subnet overrides and extended properties for all subnets in this AZ
    Subnet interface{} `json:"subnet,omitempty" yaml:"subnet,omitempty"`
    // SubnetRouteTableAssociation overrides and extended properties for all subnets route table associations in this AZ;
    // currently only routeTableAssociation.Properties.RouteTableId override makes sense.
    SubnetRouteTableAssociation interface{} `json:"subnetRouteTableAssociation,omitempty" yaml:"subnetRouteTableAssociation,omitempty"`
}

type AWSBlockDeviceMapping

AWSBlockDeviceMapping object for instance groups

type AWSBlockDeviceMapping struct {
    // DeviceName specifies name of the device within Amazon EC2
    DeviceName *string `json:"deviceName,omitempty" yaml:"deviceName,omitempty"`
    // Ebs is Elastic Block Storage volume information.
    Ebs *AWSEbsVolumeSpec `json:"ebs,omitempty" yaml:"ebs,omitempty"`
    // NoDevice suppresses the device mapping.
    NoDevice *bool `json:"noDevice,omitempty" yaml:"noDevice,omitempty"`
    // VirtualName is virtual name associated with the device.
    VirtualName *string `json:"virtualName,omitempty" yaml:"virtualName,omitempty"`
}

type AWSCloudWatchLogSinkSpec

AWSCloudWatchLogSinkSpec is a spec for log sink in AWS CloudWatch.

type AWSCloudWatchLogSinkSpec struct {
    // Enabled indicates if this sink is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
}

type AWSEbsVolumeSpec

AWSEbsVolumeSpec is a spec for EBS volume.

type AWSEbsVolumeSpec struct {
    // Type specifies type of the volume. See EBS Volume Types.
    Type *string `json:"type,omitempty" yaml:"type,omitempty"`
    // Size determines size of the volume, in GBs.
    Size *int64 `json:"size,omitempty" yaml:"size,omitempty"`
    // Iops specifies required iops for the volume. Valiod only for Volume type with provisioned iops.
    Iops *int64 `json:"iops,omitempty" yaml:"iops,omitempty"`
    // Encrypted flag indicates if EBS volume should be encrypted.
    Encrypted *bool `json:"encrypted,omitempty" yaml:"encrypted,omitempty"`
    // KmsKeyID The Amazon Resource Name (ARN) of the AWS Key Management Service master key that is used to create the
    // encrypted volume, such as arn:aws:kms:us-east-1:012345678910:key/abcd1234-a123-456a-a12b-a123b4cd56ef.
    // If you create an encrypted volume and don’t specify this property, AWS CloudFormation uses the default master key.
    //+optional
    KmsKeyID interface{} `json:"kmsKeyId,omitempty" yaml:"kmsKeyId,omitempty"`
    // SnapshotID is AWS Snapshot ID to create EBS volume from
    SnapshotID interface{} `json:"snapshotId,omitempty" yaml:"snapshotId,omitempty" bson:"snapshotId,omitempty"`
    // DeleteOnTermination property for ASG EBS mapping volumes
    DeleteOnTermination *bool `json:"deleteOnTermination,omitempty" yaml:"deleteOnTermination,omitempty"`
}

type AWSEipAllocationPolicyEnum

AWSEipAllocationPolicyEnum -

type AWSEipAllocationPolicyEnum string

type AWSInstanceGroupLocationCloudFormationExtrasSpec

AWSInstanceGroupLocationCloudFormationExtrasSpec optional overrides, customizations, and additional properties for Kublr-generated CloudFormation template and CloudFormation template resources Since version 1.24

type AWSInstanceGroupLocationCloudFormationExtrasSpec struct {
    // MasterEBS overrides and extended properties for master etcd EBS common for all masters (ignored for non-master groups)
    MasterEBS interface{} `json:"masterEBS,omitempty" yaml:"masterEBS,omitempty"`
    // MasterEBSByOrdinal overrides and extended properties for master etcd EBS specific to each master (ignored for non-master groups)
    MasterEBSByOrdinal []interface{} `json:"masterEBSByOrdinal,omitempty" yaml:"masterEBSByOrdinal,omitempty"`

    // AutoScalingGroup overrides and extended properties for the group ASG
    AutoScalingGroup interface{} `json:"autoScalingGroup,omitempty" yaml:"autoScalingGroup,omitempty"`
    // LaunchConfiguration overrides and extended properties for the group LaunchConfiguration (if available)
    LaunchConfiguration interface{} `json:"launchConfiguration,omitempty" yaml:"launchConfiguration,omitempty"`
    // LaunchTemplate overrides and extended properties for the group LaunchTemplate (if available)
    LaunchTemplate interface{} `json:"launchTemplate,omitempty" yaml:"launchTemplate,omitempty"`
    // ElasticIP overrides and extended properties for the group Elastic IPs (if available).
    // This resource is created for masters or for stateful groups that use public IPs as public stable entry points.
    ElasticIP interface{} `json:"elasticIP,omitempty" yaml:"elasticIP,omitempty"`
}

type AWSInstanceGroupLocationSpec

AWSInstanceGroupLocationSpec is a spec for instance group location in AWS. It maps to auto-scaling group with a launch configuration.

type AWSInstanceGroupLocationSpec struct {
    // GroupType is a type of underlying structure supporting this group.
    // Currently 'asg' and 'elastigroup' are supported;
    // default value is 'asg'
    GroupType *AWSInstanceGroupLocationSpecGroupTypeEnum `json:"groupType,omitempty" yaml:"groupType,omitempty" bson:"groupType"`

    // SSHKey is a name of AWS SSH Key Pair used to access instances in the group.
    SSHKey *string `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`

    // PinToZone is 'pin' if instances must be pinned to a single AZ from the list, or 'span' if no pinning is necessary.
    // 'default' is the same as 'pin' for stateful groups and 'span' for stateless.
    PinToZone *InstanceGroupLocationSpecPinToZoneTypeEnum `json:"pinToZone,omitempty" yaml:"pinToZone,omitempty"`

    // AvailabilityZones is list of AZs that can be used in the location.
    // If omitted, generator will automatically assign it to all available zones.
    //+optional
    AvailabilityZones   []*string         `valid:"required" json:"availabilityZones,omitempty" yaml:"availabilityZones,omitempty"`
    InstanceType        *string           `json:"instanceType,omitempty" yaml:"instanceType,omitempty"`
    OverrideImageID     *string           `json:"overrideImageId,omitempty" yaml:"overrideImageId,omitempty"`
    ImageID             *string           `json:"imageId,omitempty" yaml:"imageId,omitempty"`
    ImageRootDeviceName *string           `json:"imageRootDeviceName,omitempty" yaml:"imageRootDeviceName,omitempty"`
    RootVolume          *AWSEbsVolumeSpec `json:"rootVolume,omitempty" yaml:"rootVolume,omitempty"`
    MasterVolume        *AWSEbsVolumeSpec `json:"masterVolume,omitempty" yaml:"masterVolume,omitempty"`

    // MasterNlbAllocationPolicy allocation policy for master NLB.
    //
    // Allowed values: 'none', 'private', 'public', 'privateAndPublic', 'auto' ('public' for multi-master,
    // and 'none' for single-master), or 'default' (same as 'auto', deprecated)
    //
    // By default (value empty):
    //   - set to 'auto' for new clusters created by Kublr 1.20+
    //   - set to 'none' for clusters created before Kublr 1.20 and updated in in Kublr 1.20+
    //
    // The property is ignored in non-master instance groups.
    //
    // Since version 1.20
    MasterNlbAllocationPolicy *MasterLBAllocationPolicyEnum `json:"masterNlbAllocationPolicy,omitempty" yaml:"masterNlbAllocationPolicy,omitempty"`

    // MasterElbAllocationPolicy allocation policy for master NLB.
    //
    // Allowed values: 'none', 'private', 'public', 'privateAndPublic', 'auto' ('public' for multi-master,
    // and 'none' for single-master), or 'default' (same as 'auto', deprecated)
    //
    // By default (value empty):
    //   - set to 'none' for new clusters created by Kublr 1.20 and later
    //   - set to 'auto' for clusters created before Kublr 1.20 and updated in in Kublr 1.20+
    //
    // The property is ignored in non-master instance groups.
    //
    //+deprecated use NLB instead of ELB
    MasterElbAllocationPolicy *MasterLBAllocationPolicyEnum `json:"masterElbAllocationPolicy,omitempty" yaml:"masterElbAllocationPolicy,omitempty"`

    // MasterEipAllocationPolicy master EIP allocation policy: 'default' ('none' for multi-master, and 'public' for single-master), 'none', or 'public'.
    //
    // The property is ignored in non-master instance groups.
    //
    //+deprecated the property is ignored if `eipAllocationPolicy` is defined, use `eipAllocationPolicy` instead
    MasterEipAllocationPolicy *AWSEipAllocationPolicyEnum `json:"masterEipAllocationPolicy,omitempty" yaml:"masterEipAllocationPolicy,omitempty"`

    // NodeIPAllocationPolicy is Instance IP allocation policy - 'default' (same as 'privateAndPublic'), 'private', or 'privateAndPublic'.
    NodeIPAllocationPolicy *NodeIPAllocationPolicyEnum `json:"nodeIpAllocationPolicy,omitempty" yaml:"nodeIpAllocationPolicy,omitempty"`

    // EipAllocationPolicy Groups EIP allocation policy - 'default', 'none', or 'public'.
    //
    // 'default' means:
    // - 'none' for multi-master groups (note that master groups are always stateful)
    // - 'none' for single-master groups with nodeIpAllocationPolicy==='private'
    // - 'public' for single-master groups with nodeIpAllocationPolicy!=='private'
    // - 'none' for stateful node groups with nodeIpAllocationPolicy==='private'
    // - 'public' for stateful node groups with nodeIpAllocationPolicy!=='private'
    // - 'none' for non-stateful node groups
    //
    // Constraints:
    // - eipAllocationPolicy may not be 'public' if nodeIpAllocationPolicy==='private'
    // - eipAllocationPolicy may not be 'public' if the group is not stateful
    EipAllocationPolicy *AWSEipAllocationPolicyEnum `json:"eipAllocationPolicy,omitempty" yaml:"eipAllocationPolicy,omitempty"`

    // InstanceMonitoring controls whether instances in this group are launched with detailed monitoring or not.
    // detailed monitoring for EC2 instances by default will be disabled
    // default value 'false'
    // Do not set omitempty flag because it affects behavior.
    InstanceMonitoring *bool `json:"instanceMonitoring,omitempty" yaml:"instanceMonitoring,omitempty"`

    // Cooldown AWS AutoScalingGroup parameter
    Cooldown *string `json:"cooldown,omitempty" yaml:"cooldown,omitempty"`
    // LoadBalancerNames names of additional load balancers to associate with the instance group's
    // autoscaling group
    LoadBalancerNames []interface{} `json:"loadBalancerNames,omitempty" yaml:"loadBalancerNames,omitempty"`
    // TargetGroupARNs ARNs of the target groups to associate with the instance group's autoscaling group
    TargetGroupARNs []interface{} `json:"targetGroupARNs,omitempty" yaml:"targetGroupARNs,omitempty"`

    // AWS LaunchConfiguration parameters:
    //  - BlockDeviceMappings
    //  - EbsOptimized
    //  - InstanceMonitoring
    //  - PlacementTenancy
    //  - SpotPrice
    BlockDeviceMappings []*AWSBlockDeviceMapping `json:"blockDeviceMappings,omitempty" yaml:"blockDeviceMappings,omitempty"`
    // EbsOptimized specifies whether the instance is optimized for Amazon EBS I/O
    EbsOptimized *bool `json:"ebsOptimized,omitempty" yaml:"ebsOptimized,omitempty"`

    // PlacementTenancy specifies the tenancy of the instance. It can be either default or dedicated.
    PlacementTenancy *string `json:"placementTenancy,omitempty" yaml:"placementTenancy,omitempty"`
    // SpotPrice specifies the price to bid when launching Spot Instances.
    SpotPrice *string `json:"spotPrice,omitempty" yaml:"spotPrice,omitempty"`

    // SubnetIds IDs of subnets to be used for this instance group.
    //
    // If omitted, subnets will be created to accommodate this instance group, otherwise corresponding autoscaling group
    // will be assigned to the specified subnets.
    //
    // Subnets must be specified corresponding to each AZ in availabilityZones array, so that for example, if
    // `availabilityZones == ['us-east1a', 'us-east-1c', 'us-east-1d']` and
    // `subnetIds == ['subnet1', '', 'subnet3']`, then generator will assume that `subnet1` exist in AZ `us-east-1a`,
    // `subnet3` exists in `us-east-1d`, and it will create a new subnet in `us-east-1c`.
    //
    // Note also that if a subnet id is specified in a certain position of `subnetIds` array, a correct
    // AZ in which this subnet is located MUST also be specified in corresponding position of `availabilityZones`
    // array.
    //
    // SubnetIds values may be string IDs of specific subnets, or objects allowed for inclusion into
    // a Cloudformation stack templates, such as `{ Ref: MySubnet }`
    SubnetIds []interface{} `json:"subnetIds,omitempty" yaml:"subnetIds,omitempty"`

    // PrivateMasterPublicLbSubnetIds IDs of subnets to use for public ELB and/or NLB of private master instances.
    //
    // If omitted, subnets will be created when necessary.
    //
    // These subnets are only necessary for public ELB and/or NLB to have access to private masters.
    // This property will be ignored in any other situation (e.g. this is a non-master group, or the group is
    // public, or no public ELB or NLB is needed).
    //
    // privateMasterPublicLbSubnetIds values may be string IDs of specific subnets, or objects allowed for inclusion into
    // a Cloudformation stack templates, such as `{ Ref: MySubnet }`
    //
    // Note also that if a subnet ID is specified in a certain position of `privateMasterPublicLbSubnetIds` array,
    // a correct AZ in which this subnet is located MUST also be specified in corresponding position of
    // `availabilityZones` array.
    //
    // Since version 1.20
    PrivateMasterPublicLbSubnetIds []interface{} `json:"privateMasterPublicLbSubnetIds,omitempty" yaml:"privateMasterPublicLbSubnetIds,omitempty"`

    // ExistingSecurityGroupIds are in addition to security groups specified in `existingSecurityGroupIds`
    // property in `AWSLocationSpec` object.
    //
    // GroupId of existing security groups that need to be added to this node group instances.
    // These security groups are in addition to security groups specified in `existingSecurityGroupIds`
    // property in `AWSLocationSpec` object.
    //
    // existingSecurityGroupIds values may be string IDs of specific security groups, or objects
    // allowed for inclusion into a Cloudformation stack templates, such as `{ Ref: MySG }`
    ExistingSecurityGroupIds []interface{} `json:"existingSecurityGroupIds,omitempty" yaml:"existingSecurityGroupIds,omitempty"`

    // Elastigroup is a specification of elastigroup.
    //+optional if groupType != 'elastigroup'
    Elastigroup *ElastigroupSpec `json:"elastigroup,omitempty" yaml:"elastigroup,omitempty"`

    // ASGCloudFormationExtras additional AWS specific parameters for ASG
    //+deprecated since version 1.24, use cloudFormationExtras.autoScalingGroup instead
    ASGCloudFormationExtras StringMap `json:"asgCloudFormationExtras,omitempty" yaml:"asgCloudFormationExtras,omitempty"`
    // ASGPropertiesCloudFormationExtras additional AWS specific parameters for ASG
    //+deprecated since version 1.24, use cloudFormationExtras.autoScalingGroup.Properties instead
    ASGPropertiesCloudFormationExtras StringMap `json:"asgPropertiesCloudFormationExtras,omitempty" yaml:"asgPropertiesCloudFormationExtras,omitempty"`
    // LaunchConfigurationPropertiesCloudFormationExtras additional AWS specific parameters for LaunchConfiguration
    //+deprecated since version 1.24, use cloudFormationExtras.launchConfiguration.Properties instead
    LaunchConfigurationPropertiesCloudFormationExtras StringMap `json:"launchConfigurationPropertiesCloudFormationExtras,omitempty" yaml:"launchConfigurationPropertiesCloudFormationExtras,omitempty"`
    // LaunchTemplateDataCloudFormationExtras additional AWS specific parameters for LaunchTemplate
    //+deprecated since version 1.24, use cloudFormationExtras.launchTemplate.Properties.LaunchTemplateData instead
    LaunchTemplateDataCloudFormationExtras StringMap `json:"launchTemplateDataCloudFormationExtras,omitempty" yaml:"launchTemplateDataCloudFormationExtras,omitempty"`
    // MixedInstancesPolicyCloudFormationExtras additional AWS specific parameters for LaunchTemplate
    //+deprecated since version 1.24, use cloudFormationExtras.autoScalingGroup.Properties.MixedInstancesPolicy instead
    MixedInstancesPolicyCloudFormationExtras StringMap `json:"mixedInstancesPolicyCloudFormationExtras,omitempty" yaml:"mixedInstancesPolicyCloudFormationExtras,omitempty"`

    // CloudFormationExtras optional overrides, customizations, and additional properties for Kublr-generated CloudFormation template and
    // CloudFormation template resources
    // Since version 1.24
    //+optional
    CloudFormationExtras *AWSInstanceGroupLocationCloudFormationExtrasSpec `json:"cloudFormationExtras,omitempty" yaml:"cloudFormationExtras,omitempty"`
}

type AWSInstanceGroupLocationSpecGroupTypeEnum

AWSInstanceGroupLocationSpecGroupTypeEnum defines type of Instance Group in AWS.

type AWSInstanceGroupLocationSpecGroupTypeEnum string

type AWSLocationAvailabilityZoneSpec

AWSLocationAvailabilityZoneSpec specifies Kublr generator behavior for resources created within an AZ (such as subnets for example)

type AWSLocationAvailabilityZoneSpec struct {
    // specify Kublr generator behavior for subnets of different type created with an AZ
    SubnetMasterPublic  *AWSSubnetSpec `json:"subnetMasterPublic,omitempty" yaml:"subnetMasterPublic,omitempty"`
    SubnetMasterPrivate *AWSSubnetSpec `json:"subnetMasterPrivate,omitempty" yaml:"subnetMasterPrivate,omitempty"`
    SubnetNodePublic    *AWSSubnetSpec `json:"subnetNodePublic,omitempty" yaml:"subnetNodePublic,omitempty"`
    SubnetNodePrivate   *AWSSubnetSpec `json:"subnetNodePrivate,omitempty" yaml:"subnetNodePrivate,omitempty"`
    SubnetOtherPublic   *AWSSubnetSpec `json:"subnetOtherPublic,omitempty" yaml:"subnetOtherPublic,omitempty"`

    // CloudFormationExtras optional overrides, customizations, and additional properties for Kublr-generated
    // CloudFormation template and CloudFormation template resources for a specific AZ
    // Since version 1.24
    CloudFormationExtras *AWSAvailabilityZoneCloudFormationExtrasSpec `json:"cloudFormationExtras,omitempty" yaml:"cloudFormationExtras,omitempty"`
}

type AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum

AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum defines load balancer tagging policy

type AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum string

type AWSLocationCloudFormationExtrasSpec

AWSLocationCloudFormationExtrasSpec optional overrides, customizations, and additional properties for Kublr-generated CloudFormation template and CloudFormation template resources Since version 1.24

type AWSLocationCloudFormationExtrasSpec struct {
    // Resources map of additional CloudFormation AWS resources to include in the CloudFormation stack template
    Resources StringMap `json:"resources,omitempty" yaml:"resources,omitempty"`

    // Tags array of additional tags common for all resources in the CloudFormation stack template.
    // Note that these additional tags are not automatically added to additional AWS resources
    // specified in the 'resources' property.
    Tags []AWSTagSpec `json:"tags,omitempty" yaml:"tags,omitempty"`

    // Vpc overrides and extended properties for the VPC AWS resource in this location
    Vpc interface{} `json:"vpc,omitempty" yaml:"vpc,omitempty"`
    // VpcDhcpOptions overrides and extended properties for the VPC DHCPOptions AWS resource in this location
    VpcDhcpOptions interface{} `json:"vpcDhcpOptions,omitempty" yaml:"vpcDhcpOptions,omitempty"`
    // VpcDhcpOptionsAssociation overrides and extended properties for the VPC DHCPOptionsAssociation AWS resource in this location
    VpcDhcpOptionsAssociation interface{} `json:"vpcDhcpOptionsAssociation,omitempty" yaml:"vpcDhcpOptionsAssociation,omitempty"`

    // SecurityGroupDefault overrides and extended properties for the default SecurityGroup AWS resource created by Kublr in this location; note that this will only affect the security group created by Kublr for an existing (non-Kublr-created) VPC. If Kublr creates a new VPC (this is the default mode), the default VPC SecurityGroup is created automatically by AWS, and this override property is not used.
    SecurityGroupDefault interface{} `json:"securityGroupDefault,omitempty" yaml:"securityGroupDefault,omitempty"`
    // SecurityGroupMaster overrides and extended properties for the master nodes SecurityGroup AWS resource in this location
    SecurityGroupMaster interface{} `json:"securityGroupMaster,omitempty" yaml:"securityGroupMaster,omitempty"`
    // SecurityGroupNode overrides and extended properties for the worker nodes SecurityGroup AWS resource in this location
    SecurityGroupNode interface{} `json:"securityGroupNode,omitempty" yaml:"securityGroupNode,omitempty"`
    // SecurityGroupRuleByName overrides and extended properties for the SecurityGroupIngress and SecurityGroupEgress AWS resources in this location
    SecurityGroupRuleByName interface{} `json:"securityGroupRuleByName,omitempty" yaml:"securityGroupRuleByName,omitempty"`

    // Subnet overrides and extended properties common for all Subnet AWS resources in this location
    Subnet interface{} `json:"subnet,omitempty" yaml:"subnet,omitempty"`
    // SubnetRouteTableAssociation overrides and extended properties for all the subnets route table associations in this location; currently only routeTableAssociation.Properties.RouteTableId override makes sense.
    SubnetRouteTableAssociation interface{} `json:"subnetRouteTableAssociation,omitempty" yaml:"subnetRouteTableAssociation,omitempty"`

    // MasterElbPrivate overrides and extended properties for the master private ELB AWS resource in this location
    MasterElbPrivate interface{} `json:"masterElbPrivate,omitempty" yaml:"masterElbPrivate,omitempty"`
    // MasterElbPrivateListener overrides and extended properties for the listener of the master private ELB AWS resource in this location
    MasterElbPrivateListener interface{} `json:"masterElbPrivateListener,omitempty" yaml:"masterElbPrivateListener,omitempty"`
    // MasterElbPrivateSecurityGroup overrides and extended properties for the master private ELB SecurityGroup AWS resource in this location
    MasterElbPrivateSecurityGroup interface{} `json:"masterElbPrivateSecurityGroup,omitempty" yaml:"masterElbPrivateSecurityGroup,omitempty"`
    // MasterElbPrivateSecurityGroupIngress overrides and extended properties for the master private ELB SecurityGroup Ingress rules AWS resource in this location
    MasterElbPrivateSecurityGroupIngress interface{} `json:"masterElbPrivateSecurityGroupIngress,omitempty" yaml:"masterElbPrivateSecurityGroupIngress,omitempty"`
    // MasterElbPrivateSecurityGroupEgress overrides and extended properties for the master private ELB SecurityGroup Egress rules AWS resource in this location
    MasterElbPrivateSecurityGroupEgress interface{} `json:"masterElbPrivateSecurityGroupEgress,omitempty" yaml:"masterElbPrivateSecurityGroupEgress,omitempty"`

    // MasterElbPublic overrides and extended properties for the master public ELB AWS resource in this location
    MasterElbPublic interface{} `json:"masterElbPublic,omitempty" yaml:"masterElbPublic,omitempty"`
    // MasterElbPublicListener overrides and extended properties for the listener of the master public ELB AWS resource in this location
    MasterElbPublicListener interface{} `json:"masterElbPublicListener,omitempty" yaml:"masterElbPublicListener,omitempty"`
    // MasterElbPublicSecurityGroup overrides and extended properties for the master public ELB SecurityGroup AWS resource in this location
    MasterElbPublicSecurityGroup interface{} `json:"masterElbPublicSecurityGroup,omitempty" yaml:"masterElbPublicSecurityGroup,omitempty"`
    // MasterElbPublicSecurityGroupIngress overrides and extended properties for the master public ELB SecurityGroup Ingress rules AWS resource in this location
    MasterElbPublicSecurityGroupIngress interface{} `json:"masterElbPublicSecurityGroupIngress,omitempty" yaml:"masterElbPublicSecurityGroupIngress,omitempty"`
    // MasterElbPublicSecurityGroupEgress overrides and extended properties for the master public ELB SecurityGroup Egress rules AWS resource in this location
    MasterElbPublicSecurityGroupEgress interface{} `json:"masterElbPublicSecurityGroupEgress,omitempty" yaml:"masterElbPublicSecurityGroupEgress,omitempty"`

    // MasterNlbPrivate overrides and extended properties for the master private NLB AWS resource in this location
    MasterNlbPrivate interface{} `json:"masterNlbPrivate,omitempty" yaml:"masterNlbPrivate,omitempty"`
    // MasterNlbPrivateListener overrides and extended properties for the master private NLB Listener AWS resource in this location
    MasterNlbPrivateListener interface{} `json:"masterNlbPrivateListener,omitempty" yaml:"masterNlbPrivateListener,omitempty"`
    // MasterNlbPrivateListenerDefaultAction overrides and extended properties for the default action of the master private NLB Listener AWS resource in this location
    MasterNlbPrivateListenerDefaultAction interface{} `json:"masterNlbPrivateListenerDefaultAction,omitempty" yaml:"masterNlbPrivateListenerDefaultAction,omitempty"`
    // MasterNlbPrivateTargetGroup overrides and extended properties for the master private NLB Target Group AWS resource in this location
    MasterNlbPrivateTargetGroup interface{} `json:"masterNlbPrivateTargetGroup,omitempty" yaml:"masterNlbPrivateTargetGroup,omitempty"`

    // MasterNlbPublic overrides and extended properties for the master public NLB AWS resource in this location
    MasterNlbPublic interface{} `json:"masterNlbPublic,omitempty" yaml:"masterNlbPublic,omitempty"`
    // MasterNlbPublicListener overrides and extended properties for the master public NLB Listener AWS resource in this location
    MasterNlbPublicListener interface{} `json:"masterNlbPublicListener,omitempty" yaml:"masterNlbPublicListener,omitempty"`
    // MasterNlbPublicListenerDefaultAction overrides and extended properties for the default action of the master public NLB Listener AWS resource in this location
    MasterNlbPublicListenerDefaultAction interface{} `json:"masterNlbPublicListenerDefaultAction,omitempty" yaml:"masterNlbPublicListenerDefaultAction,omitempty"`
    // MasterNlbPublicTargetGroup overrides and extended properties for the master public NLB Target Group AWS resource in this location
    MasterNlbPublicTargetGroup interface{} `json:"masterNlbPublicTargetGroup,omitempty" yaml:"masterNlbPublicTargetGroup,omitempty"`

    // IamRoleMaster overrides and extended properties for Kublr-generated master IAM role AWS resource
    IamRoleMaster interface{} `json:"iamRoleMaster,omitempty" yaml:"iamRoleMaster,omitempty"`
    // IamProfileMaster overrides and extended properties for Kublr-generated master IAM profile AWS resource
    IamProfileMaster interface{} `json:"iamProfileMaster,omitempty" yaml:"iamProfileMaster,omitempty"`
    // IamRoleNode overrides and extended properties for Kublr-generated node IAM role AWS resource
    IamRoleNode interface{} `json:"iamRoleNode,omitempty" yaml:"iamRoleNode,omitempty"`
    // IamProfileNode overrides and extended properties for Kublr-generated node IAM profile AWS resource
    IamProfileNode interface{} `json:"iamProfileNode,omitempty" yaml:"iamProfileNode,omitempty"`

    // LogGroup overrides and extended properties for Kublr-generated log group AWS resource
    LogGroup interface{} `json:"logGroup,omitempty" yaml:"logGroup,omitempty"`

    // InternetGateway overrides and extended properties for the InternetGateway AWS resource in this location
    InternetGateway interface{} `json:"internetGateway,omitempty" yaml:"internetGateway,omitempty"`
    // VpcGatewayAttachment overrides and extended properties for the VPCGatewayAttachment AWS resource in this location
    VpcGatewayAttachment interface{} `json:"vpcGatewayAttachment,omitempty" yaml:"vpcGatewayAttachment,omitempty"`
    // RouteTablePublic overrides and extended properties for the public Route Table AWS resource in this location
    RouteTablePublic interface{} `json:"routeTablePublic,omitempty" yaml:"routeTablePublic,omitempty"`
    // RouteTablePublicRouteToInternet overrides and extended properties for the public internet Route AWS resource in this location
    RouteTablePublicRouteToInternet interface{} `json:"routeTablePublicRouteToInternet,omitempty" yaml:"routeTablePublicRouteToInternet,omitempty"`

    // NatGateway overrides and extended properties common for all the NatGateway AWS resources in this location
    NatGateway interface{} `json:"natGateway,omitempty" yaml:"natGateway,omitempty"`
    // NatGatewayElasticIP overrides and extended properties common for all the Nat gateway EIP AWS resources in this location
    NatGatewayElasticIP interface{} `json:"natGatewayElasticIP,omitempty" yaml:"natGatewayElasticIP,omitempty"`
    // RouteTablePrivate overrides and extended properties common for all the private Route Table AWS resources in this location
    RouteTablePrivate interface{} `json:"routeTablePrivate,omitempty" yaml:"routeTablePrivate,omitempty"`
    // RouteTablePrivateRouteToInternet overrides and extended properties common for all the private internet Route AWS resources in this location
    RouteTablePrivateRouteToInternet interface{} `json:"routeTablePrivateRouteToInternet,omitempty" yaml:"routeTablePrivateRouteToInternet,omitempty"`

    // SecretStoreS3Bucket overrides and extended properties for the secret store S3 Bucket AWS resource in this location
    SecretStoreS3Bucket interface{} `json:"secretStoreS3Bucket,omitempty" yaml:"secretStoreS3Bucket,omitempty"`
    // SecretStoreS3BucketVpcEndpoint overrides and extended properties for the secret store S3 Bucket VPC Endpoint AWS resource in this location
    SecretStoreS3BucketVpcEndpoint interface{} `json:"secretStoreS3BucketVpcEndpoint,omitempty" yaml:"secretStoreS3BucketVpcEndpoint,omitempty"`
    // SecretStoreS3BucketPolicy overrides and extended properties for the secret store S3 BucketPolicy AWS resource in this location
    SecretStoreS3BucketPolicy interface{} `json:"secretStoreS3BucketPolicy,omitempty" yaml:"secretStoreS3BucketPolicy,omitempty"`
    // SecretStoreS3BucketPolicyOverride overrides and extended properties for the secret store S3 BucketPolicy AWS resource in this location
    SecretStoreS3BucketPolicyOverride interface{} `json:"secretStoreS3BucketPolicyOverride,omitempty" yaml:"secretStoreS3BucketPolicyOverride,omitempty"`

    // AutoScalingGroup overrides and extended properties for all ASG AWS resources in this location
    AutoScalingGroup interface{} `json:"autoScalingGroup,omitempty" yaml:"autoScalingGroup,omitempty"`
    // LaunchConfiguration overrides and extended properties for all LaunchConfiguration AWS resources in this location
    LaunchConfiguration interface{} `json:"launchConfiguration,omitempty" yaml:"launchConfiguration,omitempty"`
    // LaunchTemplate overrides and extended properties for all LaunchTemplate AWS resources in this location
    LaunchTemplate interface{} `json:"launchTemplate,omitempty" yaml:"launchTemplate,omitempty"`
    // ElasticIP overrides and extended properties for all Elastic IPs AWS resources in this location.
    ElasticIP interface{} `json:"elasticIP,omitempty" yaml:"elasticIP,omitempty"`
}

type AWSLocationSpec

AWSLocationSpec is a spec for AWS Location.

type AWSLocationSpec struct {
    // AwsAPIAccessSecretRef is a reference to the secret object containing AWS access key and secret key to access this
    // location
    AwsAPIAccessSecretRef *string `json:"awsApiAccessSecretRef,omitempty" yaml:"awsApiAccessSecretRef,omitempty"`

    // AccountID is AWS accountId
    // If omitted, it will be populated automatically based on the secret.
    // If specified, it must correspond to the account specified in the secret.
    //+optional
    AccountID *string `json:"accountId,omitempty" yaml:"accountId,omitempty"`

    // Region is AWS region
    // If omitted, it will be populated automatically based on the secret.
    //+optional
    Region *string `json:"region,omitempty" yaml:"region,omitempty"`

    //VpcID is ID of the VPC to use.
    // If omitted, a new VPC will be created, otherwise existing VPC will be used.
    //+optional
    VpcID *string `json:"vpcId,omitempty" yaml:"vpcId,omitempty"`

    // VpcCIDRBlock is an IP address range for instances in this VPC.
    //*If omitted, one of 16 standard private /16 IP ranges (172.16.0.0/16, ... , 172.31.0.0/16) will be assigned.
    //+optional
    VpcCIDRBlock *string `json:"vpcCidrBlock,omitempty" yaml:"vpcCidrBlock,omitempty"`

    // AvailabilityZones are AWS region availability zones to be used for Kubernetes cluster in this location.
    // If omitted, it will be populated automatically to all zones available for this account in this region.
    //+optional
    AvailabilityZones []*string `valid:"required" json:"availabilityZones,omitempty" yaml:"availabilityZones,omitempty"`

    // MasterCIDRBlocks List of CIDR blocks for master subnets.
    // If omitted, generator will try to assign CIDRs automatically.
    //+deprecated since version 1.19, use cidrBlocks property instead
    //            If value is specified in this property, it will be copied to cidrBlocks
    MasterCIDRBlocks []*string `json:"masterCIDRBlocks,omitempty" yaml:"masterCIDRBlocks,omitempty"`

    // NodesCIDRBlocks List of CIDR blocks for node subnets.
    // If omitted, generator will try to assign CIDRs automatically.
    //+deprecated since version 1.19, use cidrBlocks property instead
    //            If value is specified in this property, it will be copied to cidrBlocks
    NodesCIDRBlocks []*string `json:"nodesCIDRBlocks,omitempty" yaml:"nodesCIDRBlocks,omitempty"`

    // PublicSubnetCidrBlocks List of CIDR blocks for public subnets.
    // These will currently be used only if neither nodes nor masters are public, so that no public subnets
    // exist to place NAT and/or public ELB.
    //+deprecated since version 1.19, use cidrBlocks property instead
    //            If value is specified in this property, it will be copied to cidrBlocks
    PublicSubnetCidrBlocks []*string `json:"publicSubnetCidrBlocks,omitempty" yaml:"publicSubnetCidrBlocks,omitempty"`

    // CidrBlocks is CIDR block allocation for various purpose subnets in this location.
    //
    // This replaces deprecated properties masterCIDRBlocks, nodesCIDRBlocks, and publicSubnetCidrBlocks
    //
    // CIDR blocks in the following arrays are specified according to availability zone indices.
    //
    // Availability zone index is the index of the zone in the list of all possible zones in this region, ordered in a standard
    // lexicographical order. E.g. zones 'us-east-1a', 'us-east-1c', and 'us-east-1d' have indices 0, 2, and 3 correspondingly.
    //
    // Therefore, for example, if three public masters are defined, and two masters are placed in the zone 'us-east-1b' (zone
    // index is 1) and one master is placed in the zone 'us-east-1d' (zone index is 3), then at least the following CIDRs
    // must be specified:
    //
    // masterPublic:
    //   - ''
    //   - '<cidr for master subnet in zone us-east-1b>'
    //   - ''
    //   - '<cidr for master subnet in zone us-east-1d>'
    //
    // Each value in these arrays must either be a valid CIDR or an empty string (if unused or undefined).
    //
    // Generator will use its own set of rules when trying to specify CIDR blocks that are needed but undefined in the spec.
    // It will not try to adjust these rules to accomodate user-specified CIDR's.
    //
    // Automatic CIDR generation rules on an example of 172.16.0.0/16 global CIDR:
    //  - 172.16.0.0/17 - reserved for public subnets
    //    - 172.16.0.0/20 - reserved for public master and other subnets
    //      - 172.16.0.0/23 - reserved for various non-master/auxilary public subnets
    //        - 172.16.0.0/26 - reserved
    //        - 172.16.0.64/26, ... , 172.16.1.192/26 - allocated for otherPublic (zones 0, 1, ... , 6) (7 * 64 IPs)
    //      - 172.16.2.0/23, ... , 172.16.14.0/23 - allocated for masterPublic (zones 0, 1, ... , 6) (7 * 512 IPs)
    //    - 172.16.16.0/20, ... , 172.16.112.0/20 - allocated for nodePublic (zones 0, 1, ... , 6) (7 * 16K IPs)
    //  - 172.16.128.0/17 - reserved for private subnets
    //    - 172.16.128.0/20 - reserved for private master and other subnets
    //      - 172.16.128.0/23 - reserved for various non-master/auxilary private subnets
    //      - 172.16.130.0/23, ... , 172.16.142.0/23 - allocated for masterPrivate (zones 0, 1, ... , 6) (7 * 512 IPs)
    //    - 172.16.144.0/20, ... , 172.16.240.0/20 - allocated for nodePrivate (zones 0, 1, ... , 6) (7 * 16K IPs)
    CidrBlocks *AWSLocationSpecCidrBlocks `json:"cidrBlocks,omitempty" yaml:"cidrBlocks,omitempty"`

    // OutpostArn If specified, the cluster subnets, master EBS disks, and the cluster S3 secret store will be created as AWS Ooutpost
    // Since version 1.24
    //+optional
    OutpostArn *string `json:"outpostArn,omitempty" yaml:"outpostArn,omitempty"`

    // IamRoleMasterPathName is a master role path name
    IamRoleMasterPathName *string `json:"iamRoleMasterPathName,omitempty" yaml:"iamRoleMasterPathName,omitempty"`

    // IamInstanceProfileMasterPathName is a master instance profile path name
    IamInstanceProfileMasterPathName *string `json:"iamInstanceProfileMasterPathName,omitempty" yaml:"iamInstanceProfileMasterPathName,omitempty"`

    // IamRoleNodePathName is a node role path name
    IamRoleNodePathName *string `json:"iamRoleNodePathName,omitempty" yaml:"iamRoleNodePathName,omitempty"`

    // IamInstanceProfileNodePathName is a node instance profile path name
    IamInstanceProfileNodePathName *string `json:"iamInstanceProfileNodePathName,omitempty" yaml:"iamInstanceProfileNodePathName,omitempty"`

    // IamRoleMasterCloudFormationExtras additional parameters (policies, statements) for Kublr-generated masters' IAM role
    // Since version 1.20
    //+deprecated since version 1.24, use cloudFormationExtras.iamRoleMaster instead
    IamRoleMasterCloudFormationExtras interface{} `json:"iamRoleMasterCloudFormationExtras,omitempty" yaml:"iamRoleMasterCloudFormationExtras,omitempty"`

    // IamRoleNodeCloudFormationExtras additional parameters (policies, statements) for Kublr-generated workers' IAM role
    // Since version 1.20
    //+deprecated since version 1.24, use cloudFormationExtras.iamRoleNode instead
    IamRoleNodeCloudFormationExtras interface{} `json:"iamRoleNodeCloudFormationExtras,omitempty" yaml:"iamRoleNodeCloudFormationExtras,omitempty"`

    // EnableTerminationProtection protects the AWS stack from deletion
    // this flag is used when creating a stack
    EnableTerminationProtection *bool `json:"enableTerminationProtection,omitempty" yaml:"enableTerminationProtection,omitempty" bson:"enableTerminationProtection,omitempty"`

    // SkipSecurityGroupNode flag indicates if creating default security groups should be skipped
    SkipSecurityGroupDefault *bool `json:"skipSecurityGroupDefault,omitempty" yaml:"skipSecurityGroupDefault,omitempty" bson:"skipSecurityGroupDefault,omitempty"`
    // SkipSecurityGroupNode flag indicates if creating security groups of master should be skipped
    SkipSecurityGroupMaster *bool `json:"skipSecurityGroupMaster,omitempty" yaml:"skipSecurityGroupMaster,omitempty" bson:"skipSecurityGroupMaster,omitempty"`
    // SkipSecurityGroupNode flag indicates if creating security groups of node should be skipped
    SkipSecurityGroupNode *bool `json:"skipSecurityGroupNode,omitempty" yaml:"skipSecurityGroupNode,omitempty" bson:"skipSecurityGroupNode,omitempty"`

    // Regexp to enable security group rules diabled by default.
    //
    // Rules which CloudFormation logical names match the provided regexp (if specified) will be enabled.
    //
    // Examples:
    // - 'SSH' - enable SSH access to master and worker nodes
    // - 'Master.*SSH' - enable SSH access to master nodes only
    // - 'Node.*SSH' - enable SSH access to worker nodes only
    //
    // Since version 1.21
    EnableSecurityGroupRulesRegexp *string `json:"enableSecurityGroupRulesRegexp,omitempty" yaml:"enableSecurityGroupRulesRegexp,omitempty" bson:"enableSecurityGroupRulesRegexp,omitempty"`

    // Regexp to disable security group rules enabled by default.
    //
    // Rules which CloudFormation logical names match the provided regexp (if specified) will be disabled.
    //
    // Examples:
    // - 'NodePort' - disable all NodePort range access
    // - 'NodePortUDP' - disable NodePort UDP access only
    // - 'KubeTLS' - disable master Kubernetes API public access
    //
    // Since version 1.21
    SkipSecurityGroupRulesRegexp *string `json:"skipSecurityGroupRulesRegexp,omitempty" yaml:"skipSecurityGroupRulesRegexp,omitempty" bson:"skipSecurityGroupRulesRegexp,omitempty"`

    // ExistingSecurityGroupIds GroupId of existing security groups that need to be added to all instances.
    //
    // More security groups may be added to specific node groups by specifying additional
    // GroupIds in `existingSecurityGroupIds` property of specific groups' `AWSInstanceGroupLocationSpec`
    // objects.
    //
    // existingSecurityGroupIds values may be string IDs of specific security groups, or objects
    // allowed for inclusion into a Cloudformation stack templates, such as `{ Ref: MySG }`
    ExistingSecurityGroupIds []interface{} `json:"existingSecurityGroupIds,omitempty" yaml:"existingSecurityGroupIds,omitempty"`

    // ResourcesCloudFormationExtras map of additional CloudFormation resources to be included in the CloudFormation stack template
    //+deprecated since version 1.24, use cloudFormationExtras.resources
    ResourcesCloudFormationExtras StringMap `json:"resourcesCloudFormationExtras,omitempty" yaml:"resourcesCloudFormationExtras,omitempty"`

    // SkipPublicSubnetsForPrivateGroups flag indicates that creation of default empty public subnets for
    // private node groups should be avoided.
    //
    // By default Kublr creates an empty public subnet for each AZ in which there is at least one
    // private node group. CIDRs for such public subnets are taken from cidrBlocks.otherPublic property.
    //
    // These public subnets are necessary for public ELB created by Kubernetes for Services of type
    // LoadBalancer to be able to connect to worker nodes running in private subnets in corresponding
    // AZs.
    //
    // Note that even if skipPublicSubnetsForPrivateGroups === true, public subnets may still be created
    // for NAT gateways for private master and/or worker groups;
    //
    // Public master subnets will also be created for private master groups if masterElbAllocationPolicy
    // or masterNlbAllocationPolicy requires public load blancer.
    //
    // Therefore it is only possible to fully disable public subnet creation in clusters with:
    // 1. all master and worker groups set to private
    // 2. masterElbAllocationPolicy and masterNlbAllocationPolicy that do not require public load
    //    balancer (none, private, or default in single-master cluster)
    // 3. natMode === 'none'
    // 4. skipPublicSubnetsForPrivateGroups === true
    SkipPublicSubnetsForPrivateGroups *bool `json:"skipPublicSubnetsForPrivateGroups,omitempty" yaml:"skipPublicSubnetsForPrivateGroups,omitempty"`

    // NatMode can be 'legacy', 'multi-zone' or 'none' (default: 'multi-zone' for new clusters, 'legacy' for
    // pre-existing ones):
    // 1. 'legacy' mode is supported for compatibility with AWS clusters created by pre-1.19 Kublr releases;
    // 2. 'multi-zone' mode is the default for all new clusters.
    // 3. 'none' mode is used to avoid automatic creation of NAT gateways.
    //
    // Migration from 'legacy' to 'multi-zone' is possible but may affect the cluster public egress addresses,
    // requires manual operation, and cannot be easily rolled back.
    //
    // With 'legacy' NAT mode only one NAT gateway is created in one of the availability zone, which is not
    // AZ fault tolerant. Public subnet used for the NAT gateway in 'legacy' mode can change depending on the
    // configuration of master and worker node groups, which may prevent CloudFormation stack from updating in
    // some situation.
    //
    // With 'multi-zone' NAT mode by default a NAT gateway is created for each AZ in which private node groups are
    // present.
    // It is also possible to only create NAT gateways in some AZs, and to specify which NAT gateways should be used
    // by which specific private subnets.
    // NAT gateways created in 'multi-zone' mode also do not create any issues with any configuration changes in
    // the clusters, thus never preventing CloudFormation stacks from updating.
    NatMode *AWSLocationSpecNatModeEnum `json:"natMode,omitempty" yaml:"natMode,omitempty"`

    // AZs for NAT gateways (default: undefined).
    //
    // Kublr creates one private subnet for each AZ in which there are/is (a) private node group(s).
    // Such private subnets require a NAT gateway created in a public subnet.
    // The NAT gateway does not have to be in the same AZ, but if the NAT gateway is in a different AZ,
    // the private subnet internet accessibility is vulnerable to the NAT gateway AZ failures.
    //
    // By default Kublr will create NAT gateway in each AZ with private node groups.
    //
    // natAvailabilityZones property allows overriding this behavior. When natAvailabilityZones
    // property is specified, for each AZ `availabilityZones[i]` NAT gateway from the AZ
    // `natAvailabilityZones[i % len(natAvailabilityZones)]` will be used.
    //
    // So for example:
    // 1. if `natAvailabilityZones == ['us-east-1c']`, then a single NAT gateway in AZ 'us-east-1c'
    //    will be used for all private subnets.
    // 2. if `natAvailabilityZones == ['us-east-1c', 'us-east-1a']`, and
    //    `availabilityZones == ['us-east-1a', 'us-east-1b', 'us-east-1d']` then NAT gateways in AZs
    //    'us-east-1c', 'us-east-1a', and 'us-east-1c' (again) will be used for private subnets in AZs
    //    'us-east-1a', 'us-east-1b', and 'us-east-1d' correspondingly.
    // 3. if `natAvailabilityZones` is undefined, null or empty, NAT gateways will be created in each
    //    AZ with private subnets and private subnet in each AZ will be setup with a NAT gateway in
    //    the same AZ.
    NatAvailabilityZones []*string `json:"natAvailabilityZones,omitempty" yaml:"natAvailabilityZones,omitempty"`

    // AvailabilityZoneSpec map allows to specify Kublr generator behavior for resources created per AZ (such as
    // subnets for example).
    AvailabilityZoneSpec map[string]*AWSLocationAvailabilityZoneSpec `json:"availabilityZoneSpec,omitempty" yaml:"availabilityZoneSpec,omitempty"`

    // SkipInternetGateway skip creating AWS Internet Gateway for the VPC.
    // Kublr by default automatically creates an AWS Internet Gateway for the VPC (if VPC is created).
    // In some situations it is not desirable or allowed, in which case this property can be used
    // to skip automatic Internet Gateway creation.
    // Since version 1.20
    SkipInternetGateway *bool `json:"skipInternetGateway,omitempty" yaml:"skipInternetGateway,omitempty"`

    // CloudFormationExtras optional overrides, customizations, and additional properties for Kublr-generated
    // CloudFormation template andCloudFormation template resources
    // Since version 1.24
    //+optional
    CloudFormationExtras *AWSLocationCloudFormationExtrasSpec `json:"cloudFormationExtras,omitempty" yaml:"cloudFormationExtras,omitempty"`
}

type AWSLocationSpecCidrBlocks

AWSLocationSpecCidrBlocks defines CIDR block allocation for various purpose subnets in this location.

type AWSLocationSpecCidrBlocks struct {
    // MasterPublic defines CIDR blocks for subnets used for public master groups
    //+optional
    MasterPublic []*string `json:"masterPublic,omitempty" yaml:"masterPublic,omitempty"`
    // MasterPrivate defines CIDR blocks for subnets used for private master groups
    //+optional
    MasterPrivate []*string `json:"masterPrivate,omitempty" yaml:"masterPrivate,omitempty"`
    // NodePublic defines CIDR blocks for subnets used for public node groups
    //+optional
    NodePublic []*string `json:"nodePublic,omitempty" yaml:"nodePublic,omitempty"`
    // NodePrivate defines CIDR blocks for subnets used for private node groups
    //+optional
    NodePrivate []*string `json:"nodePrivate,omitempty" yaml:"nodePrivate,omitempty"`
    // OtherPublic defines CIDR blocks used for public subnets necessary for other purposes (e.g. placing NAT and bastion host in situation
    //when no other public subnets exist)
    //+optional
    OtherPublic []*string `json:"otherPublic,omitempty" yaml:"otherPublic,omitempty"`
}

type AWSLocationSpecNatModeEnum

AWSLocationSpecNatModeEnum defines NAT mode for AWS.

type AWSLocationSpecNatModeEnum string

type AWSLocationState

AWSLocationState represents state of AWS Location.

type AWSLocationState struct {
    CloudFormationStackID    string `json:"cloudFormationStackId" yaml:"cloudFormationStackId"`
    LastChangeSetID          string `json:"changeSetId" yaml:"changeSetId"`
    CloudFormationStackState string `json:"cloudFormationStackState" yaml:"cloudFormationStackState"`
    LastStackEventID         string `json:"lastStackEventId" yaml:"lastStackEventId"`
    FirstStackError          string `json:"firstStackError" yaml:"firstStackError"`
    LastCreateUpdateError    string `json:"lastCreateUpdateError" yaml:"lastCreateUpdateError" bson:"lastCreateUpdateError"`
    PrepareToRecreateStack   bool   `json:"prepareToRecreateStack" yaml:"prepareToRecreateStack"`
    TemplateBodyHash         string `json:"templateBodyHash" yaml:"templateBodyHash"`
    // SnapshotIDs parameter is not used since 1.24
    //+deprecated since 1.24
    SnapshotIDs map[string]*string `json:"snapshotIds" yaml:"snapshotIds"`
    // LastActivityIDs stores the last activity ID for auto scaling groups
    // key - auto scaling group name
    // value - activity ID
    LastASGActivityIDs map[string]string `json:"lastActivityIDs" yaml:"lastActivityIDs" bson:"lastActivityIDs"`
}

type AWSS3SecretStoreSpec

AWSS3SecretStoreSpec is a spec for secret store in Amazon S3 Bucket.

type AWSS3SecretStoreSpec struct {
    // LocationRef a reference to an AWS location where the bucket will be created
    LocationRef string `json:"locationRef" yaml:"locationRef"`

    // S3BucketName S3 bucket name.
    // If left empty, the name will be gnerated randomly and stored in the spec.
    S3BucketName *string `json:"s3BucketName,omitempty" yaml:"s3BucketName,omitempty"`

    // SecretExchangeBucketCloudFormationExtras additional CloudFormation S3 bucket resource
    // properties that will be added into the S3 bucket CloudFormation resource as is.
    // Since version 1.20
    //+deprecated since version 1.24, use location.cloudFormationExtras.secretStoreS3Bucket
    SecretExchangeBucketCloudFormationExtras interface{} `json:"secretExchangeBucketCloudFormationExtras,omitempty" yaml:"secretExchangeBucketCloudFormationExtras,omitempty"`
}

type AWSSubnetCloudFormationExtrasSpec

AWSSubnetCloudFormationExtrasSpec optional overrides, customizations, and additional properties for Kublr-generated CloudFormation template and CloudFormation template resources for this type of subnet Since version 1.24

type AWSSubnetCloudFormationExtrasSpec struct {
    // Subnet overrides and extended properties for subnets
    Subnet interface{} `json:"subnet,omitempty" yaml:"subnet,omitempty"`

    // SubnetRouteTableAssociation overrides and extended properties for the subnets route table association;
    // currently only routeTableAssociation.Properties.RouteTableId override makes sense.
    // Since version 1.24
    SubnetRouteTableAssociation interface{} `json:"subnetRouteTableAssociation,omitempty" yaml:"subnetRouteTableAssociation,omitempty"`
}

type AWSSubnetSpec

AWSSubnetSpec specify Kublr generator behavior for a subnet

type AWSSubnetSpec struct {
    // tagging policy for the subnet for LoadBalancer Services
    ServiceLoadBalancerPublicPolicy   *AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum `json:"serviceLoadBalancerPublicPolicy,omitempty" yaml:"serviceLoadBalancerPublicPolicy,omitempty"`
    ServiceLoadBalancerInternalPolicy *AWSLocationAvailabilityZoneSubnetServiceLoadBalancerPolicyEnum `json:"serviceLoadBalancerInternalPolicy,omitempty" yaml:"serviceLoadBalancerInternalPolicy,omitempty"`

    // CloudFormationExtras optional overrides, customizations, and additional properties for Kublr-generated CloudFormation template and
    // CloudFormation template resources for this type of subnet
    // Since version 1.24
    //+optional
    CloudFormationExtras *AWSSubnetCloudFormationExtrasSpec `json:"cloudFormationExtras,omitempty" yaml:"cloudFormationExtras,omitempty"`
}

type AWSTagSpec

AWSTagSpec AWS tag specification Since version 1.24

type AWSTagSpec struct {
    Key               *string `json:"Key,omitempty" yaml:"Key,omitempty"`
    PropagateAtLaunch *bool   `json:"PropagateAtLaunch,omitempty" yaml:"PropagateAtLaunch,omitempty"`
    Value             *string `json:"Value,omitempty" yaml:"Value,omitempty"`
}

type AWSVolumeSnapshot

AWSVolumeSnapshot - Amazon volume snapshot

type AWSVolumeSnapshot struct {
    EbsVolumeID string `json:"ebsVolumeId" yaml:"ebsVolumeId" bson:"ebsVolumeId"`
    SnapshotID  string `json:"snapshotId" yaml:"snapshotId" bson:"snapshotId"`
    AccountID   string `json:"accountId" yaml:"accountId" bson:"accountId"`
    // used in cluster restoration process
    OriginalEbsVolumeID string `json:"originalEbsVolumeId" yaml:"originalEbsVolumeId" bson:"originalEbsVolumeId"`
}

type AcmeSpec

AcmeSpec is a spec for Let’s Encrypt ACME Protocol.

type AcmeSpec struct {
    // Enabled indicates if AMCE support is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
    // API URL Is an Let's Encrypt endpoint to use.
    APIURL *string `json:"apiUrl,omitempty" yaml:"apiUrl,omitempty"`
    // Email is an e-mail to use for.
    Email *string `json:"email,omitempty" yaml:"email,omitempty" bson:"email,omitempty"`
}

type AgentConfigMap

AgentConfigMap is a Kublr agent configuration flags

type AgentConfigMap map[string]interface{}

type AgentExtensionSpec

AgentExtensionSpec specifies a reference to a Kublr agent extension

type AgentExtensionSpec struct {
    // TgzURL specifies URL of a Kublr extension to use
    //+optional
    TgzURL *string `json:"tgzUrl,omitempty" yaml:"tgzUrl,omitempty"`

    // RepositorySecretRef specifies reference to the secret object containing username/password to access the extension repository
    //+optional
    RepositorySecretRef *string `json:"repositorySecretRef,omitempty" yaml:"repositorySecretRef,omitempty"`
}

type AgentExtensionsMap

AgentExtensionsMap a map of agent extensions

type AgentExtensionsMap map[string]AgentExtensionSpec

type AlertManagerSpec

AlertManagerSpec is a spec for AlertManager installation

type AlertManagerSpec struct {
    // Enabled indicates if AlertManager is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if storage is enabled.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
}

type AppFeatureSpec

AppFeatureSpec is a spec for application controller feature in cluster.

type AppFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    // Enabled indicates if this feature is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Namespace kubernetes namespace to which application controller will be installed.
    Namespace *string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
}

type AzureAPIAccessKey

AzureAPIAccessKey defines Azure credentials.

type AzureAPIAccessKey struct {
    TenantID        string `json:"tenantId" yaml:"tenantId"`
    SubscriptionID  string `json:"subscriptionId" yaml:"subscriptionId"`
    AadClientID     string `json:"aadClientId" yaml:"aadClientId"`
    AadClientSecret string `json:"aadClientSecret" yaml:"aadClientSecret"`
}

type AzureASSecretStoreSpec

AzureASSecretStoreSpec is a spec for secret store in Azure Account Storage.

type AzureASSecretStoreSpec struct {
    // current implementation automatically generate the new!
    // name of container with secrets by next rule concat(deployment().name + 'secrets'.
    // It could be changed in future for some static value secretsContainerName?: string;
    LocationRef string `json:"locationRef" yaml:"locationRef"`

    // UseExisting should use an existing secret store
    UseExisting *bool `json:"useExisting,omitempty" yaml:"useExisting,omitempty"`

    // If omitted, a new Storage Account, otherwise existing will be used
    //+optional
    StorageAccountName *string `json:"storageAccountName,omitempty" yaml:"storageAccountName,omitempty"`

    // If omitted, a new  Storage Container under Storage Account will be created, otherwise existing will be used
    //+optional
    StorageContainerName *string `json:"storageContainerName,omitempty" yaml:"storageContainerName,omitempty"`
}

type AzureDataDiskSpec

AzureDataDiskSpec is a Data disk specification

type AzureDataDiskSpec struct {
    // Lun specifies the logical unit number (LUN) for the data drive in the virtual machine.
    // Each data disk must have a unique LUN.
    Lun *int `json:"lun,omitempty" yaml:"lun,omitempty"`
    // DiskSizeGB specifies the data disk size, in gigabytes.
    DiskSizeGB *int `json:"diskSizeGb,omitempty" yaml:"diskSizeGb,omitempty"`
}

type AzureGroupType

AzureGroupType Azure instance group type (‘AvailabilitySet’, ‘VirtualMachineScaleSet’, or ‘AvailabilitySetLegacy’)

Since version 1.20

type AzureGroupType string

type AzureInstanceGroupLocationARMTemplateExtrasSpec

AzureInstanceGroupLocationARMTemplateExtrasSpec optional overrides, customizations, and additional properties for Kublr-generated ARM template resources for this instance group

Since version 1.20

type AzureInstanceGroupLocationARMTemplateExtrasSpec struct {
    // OSDisk overrides and extended properties for node OS disks of types 'vhd' and 'managedDisk'
    // (ignored for OS disks of type 'image')
    OSDisk interface{} `json:"osDisk,omitempty" yaml:"osDisk,omitempty"`

    // MasterDataDisk overrides and extended properties for master etcd data disks (ignored for non-master groups)
    MasterDataDisk interface{} `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty"`

    // AvailabilitySet overrides and extended properties for the group availability set (ignored for VMSS groups)
    AvailabilitySet interface{} `json:"availabilitySet,omitempty" yaml:"availabilitySet,omitempty"`

    // NetworkInterface overrides and extended properties for the network interface resources created for each non-VMSS VM
    // or for the network interface profiles used in scale sets created for VMSS groups
    NetworkInterface interface{} `json:"networkInterface,omitempty" yaml:"networkInterface,omitempty"`

    // IPConfiguration overrides and extended properties for IP configurations in the network interface resources created
    // for each non-VMSS VM or for the network interface profiles used in scale sets created for VMSS groups
    IPConfiguration interface{} `json:"ipConfiguration,omitempty" yaml:"ipConfiguration,omitempty"`

    // VirtualMachine overrides and extended properties for the virtual machine resources created for each non-VMSS VM;
    // the property is ignored for VMSS groups
    VirtualMachine interface{} `json:"virtualMachine,omitempty" yaml:"virtualMachine,omitempty"`

    // ScaleSet overrides and extended properties for the virtual machine scale set resources created for each VMSS group;
    // the property is ignored for non-VMSS groups
    ScaleSet interface{} `json:"scaleSet,omitempty" yaml:"scaleSet,omitempty"`
}

type AzureInstanceGroupLocationSpec

AzureInstanceGroupLocationSpec is a spec for instance group location in Azure.

type AzureInstanceGroupLocationSpec struct {
    // GroupType is a spec
    // - 'VirtualMachine'
    // - 'AvailabilitySet'
    // - 'VirtualMachineScaleSet'
    // - 'AvailabilitySetLegacy' (deprecated, not recommended, may be removed in the future)
    // Default value is 'VirtualVachineScaleSet' for regular node groups and 'AvailabilitySet' for masters.
    // 'AvailabilitySetLegacy' is set automaticall for clusters created by Kublr 1.19 and before, when
    // migrating to Kublr 1.20 and after.
    // Since version 1.20
    GroupType *AzureGroupType `json:"groupType,omitempty" yaml:"groupType,omitempty" bson:"groupType"`

    // Zones zones for the group
    // zones array may include non-unique and empty entries, which may make sense for master/stateful node
    // groups, and node groups where some VMS should be zoned and some not
    // Since version 1.20
    Zones []*string `json:"zones,omitempty" yaml:"zones,omitempty" bson:"zones"`

    // PinToZone is 'pin' if instances must be pinned to a single zone from the list, or
    // 'span' if no pinning is necessary.
    // 'default' specifies default behavior depending on the groupType and whether it is
    // master or worker, stateful or stateless group, and whether zones are defined or not.
    //
    // pinToZone cannot be set to 'span' for the master group.
    //
    // VirtualMachineScaleSet stateless - many instances, one VMSS
    //   - zones specified - the VMSS has all of them
    //     - pinToZone = 'pin' - error, not supported
    //   - zones not specified - no zones in VMSS (warning for pinToZone = 'span' | 'pin')
    // VirtualMachineScaleSet stateful - many VMSS, one for for each instance
    //   - zones specified
    //     - pinToZone = 'span' - each VMSS has all of them
    //     - pinToZone = 'pin' | 'default' - each VMSS has one zone
    //   - zones not specified - no zones in VMSS (warning for pinToZone = 'span' | 'pin')
    // AvailabilitySet stateful (never stateless) - one AS, many VMs
    //   - zones specified - error, not supported
    // VirtualMachine stateful (never stateless) - no AS, many VMs
    //   - zones specified - each VM has one zone
    //     - pinToZone = 'span' - error, not supported
    //   - zones not specified - no zones in VMSS
    //     - pinToZone = 'span' | 'pin' - warning
    // AvailabilitySetLegacy stateful (never stateless)
    //   - pinToZone SHOULD be 'default', zones SHOULD NOT be specified, warning otherwise
    // Since version 1.20
    PinToZone *InstanceGroupLocationSpecPinToZoneTypeEnum `json:"pinToZone,omitempty" yaml:"pinToZone,omitempty"`

    // SSHKeySecretRef reference to the secret object containing public SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`

    // SSHUsername SSH username to set up on the instances
    SSHUsername *string `json:"sshUsername,omitempty" yaml:"sshUsername,omitempty"`

    // SSHKey public SSH key to set of the instance
    //+deprecated since version 1.20, use SSHKeySecretRef instead
    SSHKey *string `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`

    // IsAvailabilitySet indicates usage of Azure availability set
    //+deprecated since version 1.20, ignored, use groupType instead
    IsAvailabilitySet *bool `json:"isAvailabilitySet,omitempty" yaml:"isAvailabilitySet,omitempty"`

    InstanceType *string `json:"instanceType,omitempty" yaml:"instanceType,omitempty"`
    // OsDisk describes OS disk
    OsDisk *AzureOSDiskSpec `json:"osDisk,omitempty" yaml:"osDisk,omitempty"`
    // MasterDataDisk describes master Data disk
    MasterDataDisk *AzureDataDiskSpec `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty"`

    // MasterLBAllocationPolicy Master LB allocation policy.
    // Must be one of:
    //  - AzureMasterLBAllocationPolicyPrivate: Use both 'public' and 'private' LB
    //  - AzureMasterLBAllocationPolicy: Use only 'private' LB
    // If omitted - AzureMasterLBAllocationPolicyPrivate will be used.
    //
    // The property is ignored for non-master node groups.
    MasterLBAllocationPolicy *AzureMasterLBAllocationPolicy `json:"masterLBAllocationPolicy,omitempty" yaml:"masterLBAllocationPolicy,omitempty"`

    // MasterLBSeparate if set to true then separate load balancers are created for master nodes for Kubernetes API.
    //
    // By default (starting with Kublr 1.20) Kublr uses the same load balancers for master as Kubernets
    // Azure cloud provider uses for services of type LoadBalancer.
    //
    // With this property set to true Kublr will create separate private and public load balancers
    // for master nodes.
    //
    // The property is ignored for non-master node groups.
    //
    // Note 1: a node cannot be included in differnt node pools that belong to different load balancers,
    // so this property should not be set to true for master-only clusters in which you want to use
    // services of type LoadBalancer.
    //
    // Note 2: Kublr 1.19 and earlier always created separate load balancers for master nodes, so for a
    // cluster migrated from Kublr 1.19 to Kublr 1.20 this property will be set to true automatically.
    //
    // Since version 1.20
    MasterLBSeparate *bool `json:"masterLBSeparate,omitempty" yaml:"masterLBSeparate,omitempty"`

    // ArmTemplateExtras optional overrides, customizations, and additional properties for Kublr-generated ARM template and
    // ARM template resources for this instance group
    // Since version 1.20
    //+optional
    ArmTemplateExtras *AzureInstanceGroupLocationARMTemplateExtrasSpec `json:"armTemplateExtras,omitempty" yaml:"armTemplateExtras,omitempty"`
}

type AzureLocationARMTemplateExtrasSpec

AzureLocationARMTemplateExtrasSpec optional overrides, customizations, and additional properties for Kublr-generated ARM template and ARM template resources.

Since version 1.20

type AzureLocationARMTemplateExtrasSpec struct {
    // APIVersions optional map of overrides for Azure API versions used by Kublr generator for ARM resources
    //
    // Example:
    //   apiVersions:
    //     'Microsoft.Network/routeTables': '2021-08-01'
    //
    // Since version 1.24
    APIVersions map[string]interface{} `json:"apiVersions,omitempty" yaml:"apiVersions,omitempty"`

    // APIProfile optional override for ARM template apiProfile
    APIProfile *string `json:"apiProfile,omitempty" yaml:"apiProfile,omitempty"`

    // Variables optional map of additional ARM template variables
    Variables map[string]interface{} `json:"variables,omitempty" yaml:"variables,omitempty"`

    // Functions optional map of ARM template functions
    Functions []interface{} `json:"functions,omitempty" yaml:"functions,omitempty"`

    // Resources optional list of additional ARM template resources
    Resources []interface{} `json:"resources,omitempty" yaml:"resources,omitempty"`

    // Outputs optional map of additional ARM template outputs
    Outputs map[string]interface{} `json:"outputs,omitempty" yaml:"outputs,omitempty"`

    // StorageAccount optional overrides and additional properties for Kublr-generated ARM template StorageAccount resource
    StorageAccount interface{} `json:"storageAccount,omitempty" yaml:"storageAccount,omitempty"`

    // BlobService optional overrides and additional properties for Kublr-generated ARM template BlobService resource
    BlobService interface{} `json:"blobService,omitempty" yaml:"blobService,omitempty"`

    // Container optional overrides and additional properties for Kublr-generated ARM template Container resource
    Container interface{} `json:"container,omitempty" yaml:"container,omitempty"`

    // SecurityGroup optional overrides and additional properties for Kublr-generated ARM template SecurityGroup resource
    SecurityGroup interface{} `json:"securityGroup,omitempty" yaml:"securityGroup,omitempty"`

    // RouteTable optional overrides and additional properties for Kublr-generated ARM template RouteTable resource
    RouteTable interface{} `json:"routeTable,omitempty" yaml:"routeTable,omitempty"`

    // VirtualNetwork optional overrides and additional properties for Kublr-generated ARM template VirtualNetwork resource
    VirtualNetwork interface{} `json:"virtualNetwork,omitempty" yaml:"virtualNetwork,omitempty"`

    // Subnet optional overrides and additional properties for Kublr-generated ARM template Subnet resource
    Subnet interface{} `json:"subnet,omitempty" yaml:"subnet,omitempty"`

    // LoadBalancerPublic optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPublic resource
    LoadBalancerPublic interface{} `json:"loadBalancerPublic,omitempty" yaml:"loadBalancerPublic,omitempty"`

    // LoadBalancerPublicIP optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPublicIP resource
    LoadBalancerPublicIP interface{} `json:"loadBalancerPublicIP,omitempty" yaml:"loadBalancerPublicIP,omitempty"`

    // LoadBalancerPublicFrontendIPConfig optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPublicFrontendIPConfig resource
    LoadBalancerPublicFrontendIPConfig interface{} `json:"loadBalancerPublicFrontendIPConfig,omitempty" yaml:"loadBalancerPublicFrontendIPConfig,omitempty"`

    // LoadBalancerPublicBackendAddressPool optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPublicBackendAddressPool resource
    LoadBalancerPublicBackendAddressPool interface{} `json:"loadBalancerPublicBackendAddressPool,omitempty" yaml:"loadBalancerPublicBackendAddressPool,omitempty"`

    // LoadBalancerPublicRule optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPublicRule resource
    LoadBalancerPublicRule interface{} `json:"loadBalancerPublicRule,omitempty" yaml:"loadBalancerPublicRule,omitempty"`

    // LoadBalancerPublicProbe optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPublicProbe resource
    LoadBalancerPublicProbe interface{} `json:"loadBalancerPublicProbe,omitempty" yaml:"loadBalancerPublicProbe,omitempty"`

    // LoadBalancerPrivate optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPrivate resource
    LoadBalancerPrivate interface{} `json:"loadBalancerPrivate,omitempty" yaml:"loadBalancerPrivate,omitempty"`

    // LoadBalancerPrivateFrontendIPConfig optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPrivateFrontendIPConfig resource
    LoadBalancerPrivateFrontendIPConfig interface{} `json:"loadBalancerPrivateFrontendIPConfig,omitempty" yaml:"loadBalancerPrivateFrontendIPConfig,omitempty"`

    // LoadBalancerPrivateBackendAddressPool optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPrivateBackendAddressPool resource
    LoadBalancerPrivateBackendAddressPool interface{} `json:"loadBalancerPrivateBackendAddressPool,omitempty" yaml:"loadBalancerPrivateBackendAddressPool,omitempty"`

    // LoadBalancerPrivateRule optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPrivateRule resource
    LoadBalancerPrivateRule interface{} `json:"loadBalancerPrivateRule,omitempty" yaml:"loadBalancerPrivateRule,omitempty"`

    // LoadBalancerPrivateProbe optional overrides and additional properties for Kublr-generated ARM template LoadBalancerPrivateProbe resource
    LoadBalancerPrivateProbe interface{} `json:"loadBalancerPrivateProbe,omitempty" yaml:"loadBalancerPrivateProbe,omitempty"`

    // NatGateway optional overrides and additional properties for Kublr-generated NAT Gateway
    NatGateway         interface{} `json:"natGateway,omitempty" yaml:"natGateway,omitempty"`
    NatGatewayPublicIP interface{} `json:"natGatewayPublicIP,omitempty" yaml:"natGatewayPublicIP,omitempty"`

    // AvailabilitySetMasterLegacy optional overrides and additional properties for Kublr-generated ARM template AvailabilitySetMasterLegacy resource
    AvailabilitySetMasterLegacy interface{} `json:"availabilitySetMasterLegacy,omitempty" yaml:"availabilitySetMasterLegacy,omitempty"`

    // AvailabilitySetAgentLegacy optional overrides and additional properties for Kublr-generated ARM template AvailabilitySetAgentLegacy resource
    AvailabilitySetAgentLegacy interface{} `json:"availabilitySetAgentLegacy,omitempty" yaml:"availabilitySetAgentLegacy,omitempty"`

    // SecurityRuleMastersAllowSSH optional overrides and additional properties for Kublr-generated ARM template SSH Security Rule
    SecurityRuleMastersAllowSSH interface{} `json:"securityRuleMastersAllowSSH,omitempty" yaml:"securityRuleMastersAllowSSH,omitempty"`

    // SecurityRuleMastersAllowAPI optional overrides and additional properties for Kublr-generated ARM template API Security Rule
    SecurityRuleMastersAllowAPI interface{} `json:"securityRuleMastersAllowAPI,omitempty" yaml:"securityRuleMastersAllowAPI,omitempty"`
}

type AzureLocationSpec

AzureLocationSpec is a spec for Azure Location.

type AzureLocationSpec struct {
    // AzureAPIAccessSecretRef is a reference to the secret object containing Azure secrets to access location
    AzureAPIAccessSecretRef *string `json:"azureApiAccessSecretRef,omitempty" yaml:"azureApiAccessSecretRef,omitempty"`

    // AzureSSHKeySecretRef is a reference to the secret object containing public SSH key
    AzureSSHKeySecretRef *string `json:"azureSshKeySecretRef,omitempty" yaml:"azureSshKeySecretRef,omitempty"`

    // Azure aadClientId
    //+deprecated since version 1.20, unused, ignored
    AadClientID *string `json:"aadClientId,omitempty" yaml:"aadClientId,omitempty"`

    // Region is Azure region
    Region *string `json:"region,omitempty" yaml:"region,omitempty"`

    // Azure Resource Group
    // If omitted, a new Resource Group will be created, otherwise existing will be used
    //+optional
    ResourceGroup *string `json:"resourceGroup,omitempty" yaml:"resourceGroup,omitempty"`

    // Azure Network Security Group
    // If omitted, a new Network Security Group will be created, otherwise existing will be used
    //+optional
    NetworkSecurityGroup *string `json:"networkSecurityGroup,omitempty" yaml:"networkSecurityGroup,omitempty"`

    // Azure Route Table
    // If omitted, a new Route Table will be created, otherwise existing will be used
    //+optional
    RouteTable *string `json:"routeTable,omitempty" yaml:"routeTable,omitempty"`

    // Azure Storage Account type (i.e. Standard_LRS, Premium_LRS and etc)
    // If omitted - default will be used.
    StorageAccountType *string `json:"storageAccountType,omitempty" yaml:"storageAccountType,omitempty"`

    // Azure Virtual Network
    // If omitted, a new Virtual Network will be created, otherwise existing will be used
    //+optional
    VirtualNetwork *string `json:"virtualNetwork,omitempty" yaml:"virtualNetwork,omitempty"`

    // Azure Virtual Network Subnet
    // If omitted, a new Virtual Network Subnet will be created, otherwise existing will be used
    //+optional
    VirtualNetworkSubnet *string `json:"virtualNetworkSubnet,omitempty" yaml:"virtualNetworkSubnet,omitempty"`

    // Ip address range for instances in this Virtual Network Subnet
    // If omitted - default will be assigned
    //+optional
    VirtualNetworkSubnetCidrBlock *string `json:"virtualNetworkSubnetCidrBlock,omitempty" yaml:"virtualNetworkSubnetCidrBlock,omitempty"`

    // SKU for the cluster load balancers.
    // Values of "Basic" and "Standard" are supported.
    // The default value is "Standard" for new cluster created in Kublr 1.20 and later.
    // For clusters created in Kublr 1.19 and before the values is set to "Basic" during migration to 1.20.
    // Basic load balancers are very limited and are only possible to use in certain limited Kublr clusters
    // configurations, so Standard load balancers are recommended in most situations.
    // Since version 1.20
    LoadBalancerSKU *LoadBalancerSKU `json:"loadBalancerSKU,omitempty" yaml:"loadBalancerSKU,omitempty"`

    // RouteTableRaw is a definition of Azure Route Tables to pass to ARM Deployment.
    //+optional
    RouteTableRaw map[string]interface{} `json:"routeTableRaw,omitempty" yaml:"routeTableRaw,omitempty"`

    // ArmTemplateResourcesExtra is additional ARM resources. Will be added to main Azure template without any modification.
    // Using to extend Azure ARM template in case if we need to deploy Azure resources to the same deployment as Kublr's resources.
    //+deprecated since version 1.20, use armTemplateExtras.resources instead
    //+optional
    ArmTemplateResourcesExtra []interface{} `json:"armTemplateResourcesExtra,omitempty" yaml:"armTemplateResourcesExtra,omitempty"`

    // SkipDefaultSecurityRules skip standard Kublr-generated security rules in the ARM templates
    // Since version 1.20
    SkipDefaultSecurityRules *bool `json:"skipDefaultSecurityRules,omitempty" yaml:"skipDefaultSecurityRules,omitempty"`

    // EnableMasterSSH enable SSH NAT and security rules on public LB into masters
    // Since version 1.20
    EnableMasterSSH *bool `json:"enableMasterSSH,omitempty" yaml:"enableMasterSSH,omitempty"`

    // NatMode enable NAT gateway.
    // Values: 'single' - create a NAT GW for Standard SKU master LB, 'disable' - no NAT GW for Basic SKU LB
    // Since version 1.20.3
    NatMode *string `json:"natMode,omitempty" yaml:"natMode,omitempty"`

    // ArmTemplateExtras optional overrides, customizations, and additional properties for Kublr-generated ARM template and
    // ARM template resources
    // Since version 1.20
    //+optional
    ArmTemplateExtras *AzureLocationARMTemplateExtrasSpec `json:"armTemplateExtras,omitempty" yaml:"armTemplateExtras,omitempty"`
}

type AzureLocationState

AzureLocationState represents state of Azure Location.

type AzureLocationState struct {
    ResourceGroupName           string                        `json:"resourceGroupName" yaml:"resourceGroupName"`
    DeploymentName              string                        `json:"deploymentName" yaml:"deploymentName"`
    DeploymentProvisioningState string                        `json:"deploymentProvisioningState" yaml:"deploymentProvisioningState"`
    LastCreateUpdateError       string                        `json:"lastCreateUpdateError" yaml:"lastCreateUpdateError" bson:"lastCreateUpdateError"`
    FirstStackError             string                        `json:"firstStackError" yaml:"firstStackError"`
    Resources                   map[ResourceID]*ResourceState `json:"resources" yaml:"resources"`
    SavedResources              []ResourceID                  `json:"savedResources" yaml:"savedResources"`
}

type AzureLocationUpdateState

AzureLocationUpdateState represents state of Azure Location update state.

type AzureLocationUpdateState struct {
    UpdateStage UpdateStage `json:"updateStage" yaml:"updateStage"`
    Victims     Victims     `json:"victims" yaml:"victims"`
}

type AzureMasterLBAllocationPolicy

AzureMasterLBAllocationPolicy is a Master LB allocation policy (i.e ‘privateAndPublic’, ‘private’ and etc)

type AzureMasterLBAllocationPolicy string

type AzureOSDiskSpec

AzureOSDiskSpec is a spec for method creation VM in Azure.

type AzureOSDiskSpec struct {
    // The the OS disk initialization type.
    //
    // Supported values: 'image', 'vhd', or 'managedDisk'
    //  - 'image' - the OS disk is created from an image specified by 'image*' properties
    //  - 'vhd' - the OS disk is created from an VHD image at 'sourceUri'
    //  - 'managedDisk' - the OS disk is created as a copy of an existing managed disk or a snapshot
    Type *string `json:"type,omitempty" yaml:"type,omitempty"`

    // The full resource group and the name of resource of type 'Microsoft.Compute/images' to
    // use as an OS image for VMs in this group.
    //
    // An image resource ID based on these parameters is put into 'storageProfile.imageReference.id'
    // property of the VM or VMSS
    ImageResourceID *string `json:"imageResourceId,omitempty" yaml:"imageResourceId,omitempty"`

    // The resource group and the name of resource of type 'Microsoft.Compute/images' to
    // use as an OS image for VMs in this group.
    //
    // An image resource ID based on these parameters is put into 'storageProfile.imageReference.id'
    // property of the VM or VMSS
    ImageResourceGroup *string `json:"imageResourceGroup,omitempty" yaml:"imageResourceGroup,omitempty"`
    ImageID            *string `json:"imageId,omitempty" yaml:"imageId,omitempty"`

    // The publisher, offer, and sku of the image to use as an OS image for VMs in this group.
    //
    // The values specified here are put into properties 'publisher', 'offer', and 'sku' of
    // the VM/VMSS 'storageProfile.imageReference' properties object.
    ImagePublisher *string `json:"imagePublisher,omitempty" yaml:"imagePublisher,omitempty"`
    ImageOffer     *string `json:"imageOffer,omitempty" yaml:"imageOffer,omitempty"`
    ImageSku       *string `json:"imageSku,omitempty" yaml:"imageSku,omitempty"`
    ImageVersion   *string `json:"imageVersion,omitempty" yaml:"imageVersion,omitempty"`

    // SourceURI is used with OS disk types 'vhd', and provides the URI for the VHD to import.
    SourceURI *string `json:"sourceUri,omitempty" yaml:"sourceUri,omitempty"`

    // DiskSizeGB specifies the disk size, in gigabytes.
    DiskSizeGB *int `json:"diskSizeGb,omitempty" yaml:"diskSizeGb,omitempty"`
}

type Backup

Backup – backup model +deprecated

type Backup struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    // ClusterID cluster reference
    //+deprecated use OwnerReference
    ClusterID   string       `json:"clusterId" yaml:"clusterId" bson:"clusterId"`
    Spec        BackupSpec   `json:"spec" yaml:"spec" bson:"spec"`
    ClusterSpec ClusterSpec  `json:"clusterSpec" yaml:"clusterSpec" bson:"clusterSpec"`
    TotalSize   int64        `json:"totalSize" yaml:"totalSize" bson:"totalSize"`
    FinishedAt  time.Time    `json:"finishedAt,omitempty" yaml:"finishedAt,omitempty" bson:"finishedAt"`
    Status      BackupStatus `json:"status" yaml:"status" bson:"status"`
}

type BackupConfiguration

BackupConfiguration - backup configuration model

type BackupConfiguration struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    ScheduleConfig []ScheduleInterval `json:"scheduleConfig" yaml:"scheduleConfig" bson:"scheduleConfig"`
    Enabled        bool               `json:"enabled" yaml:"enabled" bson:"enabled"`
    DryRun         bool               `json:"dryRun" yaml:"dryRun" bson:"dryRun"`
}

type BackupConfigurationListResult

BackupConfigurationListResult - creates list for backup configuration

type BackupConfigurationListResult struct {
    Total int                   `json:"total" yaml:"total" bson:"total"`
    Items []BackupConfiguration `json:"items" yaml:"items" bson:"items"`
}

type BackupListResult

BackupListResult holds Backups.

type BackupListResult struct {
    Total int      `json:"total" yaml:"total" bson:"total"`
    Items []Backup `json:"items" yaml:"items" bson:"items"`
}

type BackupSpec

BackupSpec – backup specification

type BackupSpec struct {
    MasterDisksSnapshots            []VolumeSnapshot `json:"masterDisksSnapshots" yaml:"masterDisksSnapshots" bson:"masterDisksSnapshots"`
    PersistentVolumesSnapshots      []VolumeSnapshot `json:"persistentVolumesSnapshots" yaml:"persistentVolumesSnapshots" bson:"persistentVolumesSnapshots"`
    PersistentVolumeClaimsSnapshots []VolumeSnapshot `json:"persistentVolumeClaimsSnapshots" yaml:"persistentVolumeClaimsSnapshots" bson:"persistentVolumeClaimsSnapshots"`
}

type BackupStats

BackupStats is the backup status of the cluster

type BackupStats struct {
    ClusterID         string    `json:"clusterId" yaml:"clusterId" bson:"clusterId"`
    ClusterName       string    `json:"clusterName" yaml:"clusterName" bson:"clusterName"`
    LastSuccessBackup time.Time `json:"lastSuccessBackup,omitempty" yaml:"lastSuccessBackup,omitempty" bson:"lastSuccessBackup"`
    NumberOfBackups   int       `json:"numberOfBackups" yaml:"numberOfBackups" bson:"numberOfBackups"`
}

type BackupStatus

BackupStatus status

type BackupStatus string

type BaremetalInstanceGroupLocationSpec

BaremetalInstanceGroupLocationSpec is a spec for instance group location.

type BaremetalInstanceGroupLocationSpec struct {
    // Hosts is a list of hosts in the current instance group location.
    //+optional
    Hosts []*HostSpec `json:"hosts,omitempty" yaml:"hosts,omitempty"`
    //load balancing address for apiserver of kubernetes
    //+optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty"`
    // Reference to the secret object containing private SSH key for instance group
    // Can be overridden for host in HostSpec
    // Secret Reference type: SSHPrivateKeySpec
    //+optional
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`
    // Username to connect to ssh for instance group
    // Username is used to connect via SSH with certificate
    // Can be overridden for host in HostSpec
    //+optional
    Username *string `json:"username,omitempty" yaml:"username,omitempty"`
    // SSHUserPassSecretRef is a secret reference that contains username and password credentials for all nodes in this instance group
    // This secret is used to connect via SSH and to execute sudo commands with password
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SSHUserPassSecretRef *string `json:"sshUserPassSecretRef,omitempty" yaml:"sshUserPassSecretRef,omitempty" bson:"sshUserPassSecretRef,omitempty"`
    // SuUserPassSecretRef is a secret reference containing credentials for a username and password for installation without sudo via su
    // This secret is used to execute commands via su
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SuUserPassSecretRef *string `json:"suUserPassSecretRef,omitempty" yaml:"suUserPassSecretRef,omitempty" bson:"suUserPassSecretRef,omitempty"`
}

type BaremetalInstanceGroupLocationState

BaremetalInstanceGroupLocationState - location state for group

type BaremetalInstanceGroupLocationState struct {
    InstanceGroupRef string      `json:"instanceGroupRef" yaml:"instanceGroupRef"`
    HostStates       []HostState `json:"hostStates,omitempty" yaml:"hostStates,omitempty"`
    // RegisteredHosts number of hosts registered with KCP
    //+deprecated kublr agent provides node state information
    RegisteredHosts    int `json:"registeredHosts" yaml:"registeredHosts"`
    MinRegisteredHosts int `json:"minRegisteredHosts" yaml:"minRegisteredHosts"`
    // DeregisteredHosts number of hosts de-registered with KCP
    //+deprecated kublr agent provides node state information
    DeregisteredHosts int             `json:"deregisteredHosts" yaml:"deregisteredHosts"`
    InitCommand       []InitCommand   `json:"initCommand,omitempty" yaml:"initCommand,omitempty"`
    RemoveCommand     []RemoveCommand `json:"removeCommand,omitempty" yaml:"removeCommand,omitempty"`
    // Reference to the secret object containing private SSH key for instance group
    // This SSH key is used to remove a node from the cluster via ssh.
    // Can be overridden for host in HostState
    // Secret Reference type: SSHPrivateKeySpec
    //+optional
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty" bson:"sshKeySecretRef,omitempty"`
    // SSHUserPassSecretRef is a secret reference that contains username and password credentials for all nodes in this instance group
    // This secret is used to connect via SSH and to execute sudo commands with password
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SSHUserPassSecretRef *string `json:"sshUserPassSecretRef,omitempty" yaml:"sshUserPassSecretRef,omitempty" bson:"sshUserPassSecretRef,omitempty"`
    // SuUserPassSecretRef is a secret reference containing credentials for a username and password for removing without sudo via su
    // This secret is used to execute commands via su
    // Secret Reference type: UsernamePasswordSpec
    //+optional
    SuUserPassSecretRef *string `json:"suUserPassSecretRef,omitempty" yaml:"suUserPassSecretRef,omitempty" bson:"suUserPassSecretRef,omitempty"`
    // Username to connect to ssh for instance group
    // This Username is used to remove a node from the cluster via SSH with certificate.
    // Can be overridden for host in HostState
    // Secret Reference type: SSHPrivateKeySpec
    //+optional
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
}

type BaremetalLocationSpec

BaremetalLocationSpec holds location specification for bare metal installations.

type BaremetalLocationSpec struct {
}

type BaremetalLocationState

BaremetalLocationState represents state of Baremetal location.

type BaremetalLocationState struct {
    InstanceGroupStates []BaremetalInstanceGroupLocationState `json:"instanceGroupStates,omitempty" yaml:"instanceGroupStates,omitempty"`
}

type BaremetalSecretStoreSpec

BaremetalSecretStoreSpec - Spec for bare-metal secret storage. this spec is empty. +deprecated use KublrAgentSecretStoreSpec instead

type BaremetalSecretStoreSpec struct {
}

type BinaryRegistryAuth

BinaryRegistryAuth is a binary registry authentication information

type BinaryRegistryAuth struct {
    Registry  *string `json:"registry,omitempty" yaml:"registry,omitempty"`
    SecretRef *string `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
}

type BinaryRegistryOverride

BinaryRegistryOverride is a docker registry overrides

type BinaryRegistryOverride struct {
    Default           string `mapstructure:"default" json:"default,omitempty" yaml:"default,omitempty"`
    StorageGoogleAPIs string `mapstructure:"storage_googleapis_com" json:"storage_googleapis_com,omitempty" yaml:"storage_googleapis_com,omitempty"`
    Github            string `mapstructure:"github_com" json:"github_com,omitempty" yaml:"github_com,omitempty"`
}

type BinaryRegistrySecretSpec

BinaryRegistrySecretSpec is a Binary Registry Secret

type BinaryRegistrySecretSpec struct {
    // URL prefix for Binary repo  (i.e. 'myregistry.com:5000')
    // Required
    URLPrefix string `json:"urlPrefix" yaml:"urlPrefix" bson:"urlPrefix"`
    // Insecure can be set to true to disable TLS certificate verification for this registry.
    //+optional
    Insecure bool `json:"insecure" yaml:"insecure" bson:"insecure"`
    // Username for Binary Registry access.
    //+optional
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
    // Password for Binary Registry access.
    //+optional
    Password string `json:"password,omitempty" yaml:"password,omitempty" bson:"password,omitempty"`
    // TrustedCertificate is Binary Registry trusted CA certificate.
    //+optional
    TrustedCertificate string `json:"trustedCertificate,omitempty" yaml:"trustedCertificate,omitempty" bson:"trustedCertificate,omitempty"`
}

type BinaryRegistrySpec

BinaryRegistrySpec is a spec for docker registry

type BinaryRegistrySpec struct {
    Auth     []*BinaryRegistryAuth   `json:"auth,omitempty" yaml:"auth,omitempty"`
    Override *BinaryRegistryOverride `json:"override,omitempty" yaml:"override,omitempty"`
}

type CentralLoggingSinkSpec

CentralLoggingSinkSpec is a spec for self-hosted cluster wide logging.

type CentralLoggingSinkSpec struct {
    // Enabled indicates if this sink is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if EL storage is persistent.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size definesGenerate certificate for jwks size of the storage for elasticsearch in platform, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
    // MasterNodes is the number of master nodes that control the cluster.
    // number of master nodes is must not be 2, need to use 1 or 3 and more
    MasterNodes *int `json:"masterNodes,omitempty" yaml:"masterNodes,omitempty" bson:"masterNodes"`
    // DataNodes is the number of data nodes that hold data and perform data related operations such as CRUD, search, and aggregations.
    DataNodes *int `json:"dataNodes,omitempty" yaml:"dataNodes,omitempty" bson:"dataNodes"`
    // ClientNodes is the number of client nodes which serve client requests.
    ClientNodes *int `json:"clientNodes,omitempty" yaml:"clientNodes,omitempty" bson:"clientNodes"`
    // LogstashReplicas is the number of logstash which transfer logs from logsmover/rabbitmq to elasticsearch.
    // Since version 1.20
    LogstashReplicas *int `json:"logstashReplicas,omitempty" yaml:"logstashReplicas,omitempty" bson:"logstashReplicas,omitempty"`
    // RetentionPeriodDays represents how old (in days) should be an Elasticsearch index to be deleted by Curator
    RetentionPeriodDays *int `json:"retentionPeriodDays,omitempty" yaml:"retentionPeriodDays,omitempty" bson:"retentionPeriodDays,omitempty"`
}

type Chart

Chart is a helm package

type Chart struct {
    // The name of the chart
    Name *string `json:"name,omitempty" yaml:"name,omitempty"`
    // RepoURL is address of helm repository
    RepoURL *string `json:"repoUrl,omitempty" yaml:"repoUrl,omitempty"`
    // Version of the chart
    Version *string `json:"version,omitempty" yaml:"version,omitempty"`
    // URL is absolute URL to a helm chart. For example: https://example.com/charts/nginx-1.2.3.tgz
    // Since version 1.20
    URL *string `json:"url,omitempty" yaml:"url,omitempty"`
    // ChartPullSecret is a reference to kublr secret for accessing the chart repo
    ChartPullSecret *string `json:"chartPullSecret,omitempty" yaml:"chartPullSecret,omitempty" bson:"chartPullSecret,omitempty"`
}

type ChartValues

ChartValues represents helm chart values

type ChartValues map[string]interface{}

type Cluster

Cluster is a definition of cluster.

type Cluster struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // Spec is cluster specification.
    Spec ClusterSpec `valid:"required" json:"spec" yaml:"spec"`
    // Status hold cluster state.
    Status ClusterState `valid:"" json:"status,omitempty" yaml:"status,omitempty"`

    // Owner is an owner for cluster.
    Owner *Owner `json:"owner,omitempty" yaml:"owner,omitempty"`

    // Deleted indicates whether cluster was removed
    Deleted bool `json:"deleted" yaml:"deleted" default:"false"`
}

type ClusterBackupDetails

ClusterBackupDetails - details for backup

type ClusterBackupDetails struct {
    Cluster           Cluster   `json:"cluster" yaml:"cluster" bson:"cluster"`
    LastSuccessBackup time.Time `json:"lastSuccessBackup,omitempty" yaml:"lastSuccessBackup,omitempty" bson:"lastSuccessBackup"`
    NumberOfBackups   int       `json:"numberOfBackups" yaml:"numberOfBackups" bson:"numberOfBackups"`
    BackupEnabled     bool      `json:"backupEnabled" yaml:"backupEnabled" bson:"backupEnabled"`
}

type ClusterBackupDetailsListResult

ClusterBackupDetailsListResult - result for backup details list

type ClusterBackupDetailsListResult struct {
    Total int                    `json:"total" yaml:"total" bson:"total"`
    Items []ClusterBackupDetails `json:"items" yaml:"items" bson:"items"`
}

type ClusterFeaturesSpec

ClusterFeaturesSpec is a spec for cluster-wide features.

type ClusterFeaturesSpec struct {
    KublrOperator *KublrOperatorSpec       `json:"kublrOperator,omitempty" yaml:"kublrOperator,omitempty" bson:"kublrOperator,omitempty"`
    System        *SystemFeatureSpec       `json:"system,omitempty" yaml:"system,omitempty"`
    Logging       *ClusterLoggingSpec      `json:"logging,omitempty" yaml:"logging,omitempty"`
    Monitoring    *ClusterMonitoringSpec   `json:"monitoring,omitempty" yaml:"monitoring,omitempty"`
    Ingress       *ClusterIngressSpec      `json:"ingress,omitempty" yaml:"ingress,omitempty"`
    ControlPlane  *ControlPlaneFeatureSpec `json:"controlPlane,omitempty" yaml:"controlPlane,omitempty"`
    AppFeature    *AppFeatureSpec          `json:"appFeature,omitempty" yaml:"appFeature,omitempty"`
    Kubedb        *KubeDbFeatureSpec       `json:"kubedb,omitempty" yaml:"kubedb,omitempty" bson:"kubedb,omitempty"`
}

type ClusterIngressControllerSpec

ClusterIngressControllerSpec is a spec for cluster-wide ingress controller.

type ClusterIngressControllerSpec struct {
    Nginx *NginxClusterIngressControllerSpec `json:"nginx,omitempty" yaml:"nginx,omitempty" bson:"nginx,omitempty"`
}

type ClusterIngressSpec

ClusterIngressSpec is a spec for Ingress in cluster.

type ClusterIngressSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    IngressControllers []*ClusterIngressControllerSpec `json:"ingressControllers,omitempty" yaml:"ingressControllers,omitempty"`
}

type ClusterListResult

ClusterListResult holds clusters.

type ClusterListResult struct {
    Total int       `json:"total" yaml:"total"`
    Items []Cluster `json:"items" yaml:"items"`
}

type ClusterLogCollectionSpec

ClusterLogCollectionSpec is a spec for cluster log collection.

type ClusterLogCollectionSpec struct {
    // Enabled is a flag indicating if log collection is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
}

type ClusterLogSinksSpec

ClusterLogSinksSpec is a spec for Cluster wide log sinks.

type ClusterLogSinksSpec struct {
    SelfHosted     *SelfHostedClusterLogSinkSpec `json:"selfHosted,omitempty" yaml:"selfHosted,omitempty"`
    AwsCloudWatch  *AWSCloudWatchLogSinkSpec     `json:"awsCloudWatch,omitempty" yaml:"awsCloudWatch,omitempty"`
    CentralLogging *CentralLoggingSinkSpec       `json:"centralLogging,omitempty" yaml:"centralLogging,omitempty"`
}

type ClusterLoggingSpec

ClusterLoggingSpec is a spec for cluster wide logging.

type ClusterLoggingSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    LogCollection *ClusterLogCollectionSpec `json:"logCollection,omitempty" yaml:"logCollection,omitempty"`
    Sinks         []*ClusterLogSinksSpec    `json:"sinks,omitempty" yaml:"sinks,omitempty"`
    // StorageHostPath is host path for persistent logging data
    // This directory will be used for clusters that doesn't have dynamic volume provision.
    // Default value: /var/lib/kublr/logging
    //+deprecated configure node path for local host provisioner
    StorageHostPath *string `json:"storageHostPath,omitempty" yaml:"storageHostPath,omitempty" bson:"storageHostPath,omitempty"`
}

type ClusterMonitoringSpec

ClusterMonitoringSpec is a spec for cluster wide monitoring.

type ClusterMonitoringSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`

    Enabled        *bool                         `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    Platform       *MonitoringPlatformSpec       `json:"platform,omitempty" yaml:"platform,omitempty"`
    PlatformClient *MonitoringPlatformClientSpec `json:"platformClient,omitempty" yaml:"platformClient,omitempty"`
    SelfHosted     *MonitoringSelfHostedSpec     `json:"selfHosted,omitempty" yaml:"selfHosted,omitempty"`
    // StorageHostPath is host path for persistent monitoring data
    // This directory will be used for clusters that doesn't have dynamic volume provision.
    // Default value: /var/lib/kublr/monitoring
    //+deprecated configure node path for local host provisioner
    StorageHostPath *string `json:"storageHostPath,omitempty" yaml:"storageHostPath,omitempty" bson:"storageHostPath,omitempty"`

    // StatsCollection is a stats collection spec
    //+deprecated kept here just for backward compatibility
    StatsCollection *ClusterStatsCollectionSpec `json:"statsCollection,omitempty" yaml:"statsCollection,omitempty"`
}

type ClusterPackageSpec

ClusterPackageSpec is a specification of helm package that should be installed to cluster

type ClusterPackageSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`
    // ReleaseName is the release name of package
    ReleaseName string `json:"releaseName" yaml:"releaseName" bson:"releaseName"`
    // Namespace kubernetes namespace to which application controller will be installed.
    Namespace string `json:"namespace" yaml:"namespace" bson:"namespace"`
    // HelmVersion is helm version. available values: v2, v3
    HelmVersion string `json:"helmVersion,omitempty" yaml:"helmVersion,omitempty" bson:"helmVersion,omitempty"`
}

type ClusterPackageState

ClusterPackageState is a state of cluster package

type ClusterPackageState struct {
    // ReleaseName is the release name of package
    ReleaseName string `json:"releaseName" yaml:"releaseName" bson:"releaseName"`
    // Namespace kubernetes namespace to which application controller will be installed.
    Namespace string `json:"namespace" yaml:"namespace" bson:"namespace"`
    // ReleaseStatus is the status as given by Helm for the release
    ReleaseStatus string `json:"releaseStatus" yaml:"releaseStatus" bson:"releaseStatus"`
    // Version is the version of the installed feature
    Version string `json:"version" yaml:"version"`
    // SpecSha256Sum is the SHA256 checksum for the installed resource
    Sha256Sum string `json:"sha256sum" yaml:"sha256sum" bson:"sha256sum"`
    // ActualSha256Sum is the SHA256 checksum from the real resource in the target cluster
    ActualSha256Sum string `json:"actualSha256sum" yaml:"actualSha256sum" bson:"actualSha256sum"`
    // Conditions contains observations of the resource's state, e.g.,
    // has the chart which it refers to been fetched.
    Conditions []FeatureCondition `json:"conditions,omitempty" yaml:"conditions,omitempty" bson:"conditions,omitempty"`
}

type ClusterPackagesSpec

ClusterPackagesSpec is a specification of all cluster packages map structure uses for simple patch-merge operations key is a unique value: “${namespace}/${releaseName}”

type ClusterPackagesSpec map[string]*ClusterPackageSpec

type ClusterRollingUpdateSpec

ClusterRollingUpdateSpec controls the desired behavior of rolling update.

type ClusterRollingUpdateSpec struct {
    // The maximum number of instance groups that can be updated at one moment.
    // Defaults to 1.
    //+optional
    MaxUpdatedGroups *int `json:"maxUpdatedGroups,omitempty" yaml:"maxUpdatedGroups,omitempty" bson:"maxUpdatedGroups,omitempty"`
}

type ClusterSpec

ClusterSpec is a specification of the cluster.

type ClusterSpec struct {
    // ControlPlaneAPI Kubernetes control plane spec; Mainly used for external clusters
    ControlPlaneAPI *ControlPlaneAPISpec `json:"controlPlaneApi,omitempty" yaml:"controlPlaneApi,omitempty"`

    // KublrVersion allows to specify which version of kublr to use.
    //+deprecated since version 1.20
    KublrVersion *string `json:"kublrVersion,omitempty" yaml:"kublrVersion,omitempty"`
    // KublrBranch allows to specify which branch to use for cluster.
    //+deprecated since version 1.20, ignored
    KublrBranch *string `json:"kublrBranch,omitempty" yaml:"kublrBranch,omitempty"`

    // KublrAgentRepositoryUsername specifies username to download kublr agent.
    //+deprecated use KublrAgentRepositorySecretRef instead
    //+optional
    KublrAgentRepositoryUsername *string `json:"kublrAgentRepositoryUsername,omitempty" yaml:"kublrAgentRepositoryUsername,omitempty"`
    // KublrAgentRepositoryPassword specifies password to download kublr agent.
    //+deprecated use KublrAgentRepositorySecretRef instead
    //+optional
    KublrAgentRepositoryPassword *string `json:"kublrAgentRepositoryPassword,omitempty" yaml:"kublrAgentRepositoryPassword,omitempty"`

    // DockerRegistry allows to override docker registries used to pull system docker images
    DockerRegistry *DockerRegistrySpec `json:"dockerRegistry,omitempty" yaml:"dockerRegistry,omitempty"`
    // BinaryRegistry allows to override registries used to pull binary data
    BinaryRegistry *BinaryRegistrySpec `json:"binaryRegistry,omitempty" yaml:"binaryRegistry,omitempty"`
    // ProxyServer spec for http/https proxy server
    ProxyServer *ProxyServerSpec `json:"proxyServer,omitempty" yaml:"proxyServer,omitempty"`
    // Locations specifies locations where cluster should be installed.
    Locations []*LocationSpec `json:"locations,omitempty" yaml:"locations,omitempty"`
    // Network is a specification of network.
    Network *NetworkSpec `json:"network,omitempty" yaml:"network,omitempty"`
    // Master is a spec for instance group used for kubernetes master nodes.
    Master *InstanceGroupSpec `json:"master,omitempty" yaml:"master,omitempty"`
    // Nodes is a slice with specs for instance groups used for worker nodes.
    Nodes []*InstanceGroupSpec `json:"nodes,omitempty" yaml:"nodes,omitempty"`
    // Features is a specification of cluster features.
    Features *ClusterFeaturesSpec `json:"features,omitempty" yaml:"features,omitempty"`
    // Packages is a specification of helm chart
    Packages *ClusterPackagesSpec `json:"packages,omitempty" yaml:"packages,omitempty" bson:"packages,omitempty"`
    // SecretStore is a spec for secret store.
    SecretStore *SecretStoreSpec `json:"secretStore,omitempty" yaml:"secretStore,omitempty"`
    // UpdateStrategy is used to update existing instance groups
    //+optional
    UpdateStrategy *ClusterUpdateStrategySpec `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty" bson:"updateStrategy,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters overridable in LocationSpec, InstanceGroupSpec, and InstanceGroupLocationSpec
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`
}

type ClusterState

ClusterState represents status of the cluster. TODO: Should be renamed to ClusterStatus

type ClusterState struct {
    CreateRequested  time.Time `json:"createRequested,omitempty" yaml:"createRequested,omitempty"`
    Created          time.Time `json:"created,omitempty" yaml:"created,omitempty"`
    UpdateRequested  time.Time `json:"updateRequested,omitempty" yaml:"updateRequested,omitempty"`
    Updated          time.Time `json:"updated,omitempty" yaml:"updated,omitempty"`
    DeleteRequested  time.Time `json:"deleteRequested,omitempty" yaml:"deleteRequested,omitempty"`
    Deleted          time.Time `json:"deleted,omitempty" yaml:"deleted,omitempty"`
    MonitorRequested time.Time `json:"monitorRequested,omitempty" yaml:"monitorRequested,omitempty"`
    Monitored        time.Time `json:"monitored,omitempty" yaml:"monitored,omitempty"`
    Generated        time.Time `json:"generated,omitempty" yaml:"generated,omitempty"` // time that system set after running generator for spec

    // KubernetesConfigBucket name of the bucket where kubernetes config file is stored.
    KubernetesConfigBucket string `json:"kubernetesConfigBucket,omitempty" yaml:"kubernetesConfigBucket,omitempty"`
    // KubernetesConfigOk represents condition of kubernetes config.
    KubernetesConfigOk *Condition `json:"kubernetesConfigOk,omitempty" yaml:"kubernetesConfigOk,omitempty"`

    // Cluster's certificates
    // This field is only populated for baremetal clusters with baremetal secret store (deprecated)
    //+deprecated use kublrAgent secret store instead of baremetal secret store
    ClusterCerts *gencert.ClusterCertificates `json:"clusterCerts,omitempty" yaml:"clusterCerts,omitempty"`

    // Cluster Authentication Files (basic_auth.csv, known_tokens.csv, abac-authz-policy.jsonl, config)
    // This field is only populated for baremetal clusters with baremetal secret store (deprecated)
    //+deprecated use kublrAgent secret store instead of baremetal secret store
    AuthFiles *gencert.AuthFiles `json:"authFiles,omitempty" yaml:"authFiles,omitempty"`

    // APIEndpoint is API endpoint to access cluster.
    APIEndpoint string `json:"apiEndpoint,omitempty" yaml:"apiEndpoint,omitempty"`
    // APIOk represents condition of API.
    APIOk *Condition `json:"apiOk,omitempty" yaml:"apiOk,omitempty"`

    MastersOk            *Condition `json:"mastersOk,omitempty" yaml:"mastersOk,omitempty"`
    NodesOk              *Condition `json:"nodesOk,omitempty" yaml:"nodesOk,omitempty"`
    DNSOk                *Condition `json:"dnsOk,omitempty" yaml:"dnsOk,omitempty"`
    TillerOk             *Condition `json:"tillerOk,omitempty" yaml:"tillerOk,omitempty"`
    OverallClusterStatus *Condition `json:"overallClusterStatus,omitempty" yaml:"overallClusterStatus,omitempty" bson:"overallClusterStatus"`

    // DashboardEndpoint is endpoint to Access Kubernetes Dashboard.
    DashboardEndpoint string     `json:"dashboardEndpoint,omitempty" yaml:"dashboardEndpoint,omitempty"`
    DashboardOk       *Condition `json:"dashboardOk,omitempty" yaml:"dashboardOk,omitempty"`

    Conditions     []*Condition     `json:"conditions,omitempty" yaml:"conditions,omitempty"`
    WarnConditions []*Condition     `json:"warnConditions,omitempty" yaml:"warnConditions,omitempty"`
    LocationStates []*LocationState `json:"locationStates,omitempty" yaml:"locationStates,omitempty"`

    InstanceGroupStates []*InstanceGroupState `json:"instanceGroupStates,omitempty" yaml:"instanceGroupStates,omitempty"`

    // FeatureStates represents the common state of the deployed features.
    FeatureStates []*FeatureState `json:"featureStates,omitempty" yaml:"featureStates,omitempty"`

    // DetailedFeatureStates represents the detailed state of the deployed features.
    DetailedFeatureStates DetailedFeatureStates `json:"detailedFeatureStates,omitempty" yaml:"detailedFeatureStates,omitempty"`

    // Packages represents the state of the deployed packages.
    PackageStates PackageStates `json:"packageStates,omitempty" yaml:"packageStates,omitempty"`

    // State is a current state of the cluster (i.e. Creating, Running, Error, Deleting, Deleted).
    State CurrentState `json:"state,omitempty" yaml:"state,omitempty"`
    // IngressLoadBalancer represents state of the ingress load balancer.
    IngressLoadBalancer IngressLoadBalancer `json:"ingressLoadBalancer,omitempty" yaml:"ingressLoadBalancer,omitempty" bson:"ingressLoadBalancer"`
    // LastSuccessfulSpecJSON is the last successful cluster spec in base64 format
    LastSuccessfulSpecJSON string `json:"lastSuccessfulSpecJson,omitempty" yaml:"lastSuccessfulSpecJson,omitempty" bson:"lastSuccessfulSpecJson,omitempty"`
}

type ClusterStatsCollectionSpec

ClusterStatsCollectionSpec is a specification for cluster-wide statistic collection. +deprecated kept here just for backward compatibility

type ClusterStatsCollectionSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
}

type ClusterUpdateStrategySpec

ClusterUpdateStrategySpec describes how to update existing instance groups

type ClusterUpdateStrategySpec struct {
    // Type of ClusterUpdateStrategyType.
    // Default is RollingUpdate.
    //+optional
    Type ClusterUpdateStrategyType `json:"type,omitempty" yaml:"type,omitempty" bson:"type,omitempty"`

    // Rolling update config params.
    // Present only if Type = RollingUpdate.
    //+optional
    RollingUpdate *ClusterRollingUpdateSpec `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty" bson:"rollingUpdate,omitempty"`
}

type ClusterUpdateStrategyType

ClusterUpdateStrategyType is type of update strategy for a cluster.

type ClusterUpdateStrategyType string

type Condition

Condition represents custom condition.

type Condition struct {
    Type               ConditionType   `json:"type" yaml:"type"`
    LastCheckTime      time.Time       `json:"lastCheckTime,omitempty" yaml:"lastCheckTime,omitempty"`
    LastTransitionTime time.Time       `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
    Status             ConditionStatus `json:"status" yaml:"status"`
    Reason             string          `json:"reason" yaml:"reason"`
    Message            string          `json:"message" yaml:"message"`
}

type ConditionStatus

ConditionStatus represent status of the condition.

type ConditionStatus string

type ConditionType

ConditionType represents type of the condition.

type ConditionType string

type ControlPlaneAPISpec

ControlPlaneAPISpec Kubernetes control plane access specification

type ControlPlaneAPISpec struct {
    APIUrl              []*string `json:"apiUrl,omitempty" yaml:"apiUrl,omitempty"`
    KubeconfigSecretRef *string   `json:"kubeconfigSecretRef,omitempty" yaml:"kubeconfigSecretRef,omitempty"`
}

type ControlPlaneFeatureSpec

ControlPlaneFeatureSpec is a spec for control plane (kublr) feature in cluster.

type ControlPlaneFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`
    // Enabled is bool value for enable feature
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Namespace kubernetes namespace to which control plane will be installed.
    Namespace *string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
    // Domain is a DNS name which will be used for API/UI/Auth.
    Domain *string `json:"domain,omitempty" yaml:"domain,omitempty"`
    // InitialAdminPassword password of admin user used for accessing kublr.
    InitialAdminPassword *string `json:"initialAdminPassword,omitempty" yaml:"initialAdminPassword,omitempty"`
    // Create ControlPlane in high availability mode (create replicas for databases)
    HighAvailability *bool `json:"highAvailability,omitempty" yaml:"highAvailability,omitempty" bson:"highAvailability,omitempty"`

    // StorageHostPath is host path for persistent data of control plane
    // This directory will be used for clusters that doesn't have dynamic volume provision.
    // Default value: /var/lib/kublr/kcp
    //+deprecated configure node path for local host provisioner
    StorageHostPath *string `json:"storageHostPath,omitempty" yaml:"storageHostPath,omitempty" bson:"storageHostPath,omitempty"`

    IntercomID *string `json:"intercomId,omitempty" yaml:"intercomId,omitempty" bson:"intercomId,omitempty"`

    KublrLicense *string `json:"kublrLicense,omitempty" yaml:"kublrLicense,omitempty" bson:"kublrLicense,omitempty"`

    IntercomUserID     *string `json:"intercomUserId,omitempty" yaml:"intercomUserId,omitempty" bson:"intercomUserId,omitempty"`
    GoogleTagManagerID *string `json:"googleTagManagerId,omitempty" yaml:"googleTagManagerId,omitempty" bson:"googleTagManagerId,omitempty"`
    GoogleAnalyticsID  *string `json:"googleAnalyticsId,omitempty" yaml:"googleAnalyticsId,omitempty" bson:"googleAnalyticsId,omitempty"`
    LogRocketID        *string `json:"logRocketId,omitempty" yaml:"logRocketId,omitempty" bson:"logRocketId,omitempty"`
    TrackingEnabled    *bool   `json:"trackingEnabled,omitempty" yaml:"trackingEnabled,omitempty" bson:"trackingEnabled,omitempty"`

    UserRegBaseURL *string `json:"userRegBaseUrl,omitempty" yaml:"userRegBaseUrl,omitempty" bson:"userRegBaseUrl,omitempty"`
    DocsBaseURL    *string `json:"docsBaseUrl,omitempty" yaml:"docsBaseUrl,omitempty" bson:"docsBaseUrl,omitempty"`
}

type ControlPlaneFeatureState

ControlPlaneFeatureState represents state of the Control Plane feature.

type ControlPlaneFeatureState struct {
    APIEndpoint       string    `json:"apiEndpoint" yaml:"apiEndpoint" bson:"apiEndpoint"`
    AuthEndpoint      string    `json:"authEndpoint" yaml:"authEndpoint" bson:"authEndpoint"`
    AuthTokenEndpoint string    `json:"authTokenEndpoint" yaml:"authTokenEndpoint" bson:"authTokenEndpoint"`
    UIEndpoint        string    `json:"uiEndpoint" yaml:"uiEndpoint" bson:"uiEndpoint"`
    ReadyState        Condition `json:"readyState" yaml:"readyState" bson:"readyState"` // ToDo : rename to condition
    // KCPSha256Sum is SHA256 checksum of the current cluster specification saved during cluster registration
    KCPSha256Sum string `json:"kcpSha256sum" yaml:"kcpSha256sum" bson:"kcpSha256sum"`
    // ActualKCPSha256Sum is the SHA256 checksum of system cluster spec in the remote kcp
    ActualKCPSha256Sum string `json:"actualKcpSha256sum" yaml:"actualKcpSha256sum" bson:"actualKcpSha256sum"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type CurrentState

CurrentState represents current state of the cluster.

type CurrentState string

type DetailedFeatureStates

DetailedFeatureStates represents the detailed state of the deployed features.

type DetailedFeatureStates struct {
    KublrOperator       *ClusterPackageState      `json:"kublrOperator,omitempty" yaml:"kublrOperator,omitempty" bson:"kublrOperator,omitempty"`
    KublrSystemState    *ClusterPackageState      `json:"kublrSystemState,omitempty" yaml:"kublrSystemState,omitempty" bson:"kublrSystemState,omitempty"`
    ControlPlaneState   *ControlPlaneFeatureState `json:"controlPlaneState,omitempty" yaml:"controlPlaneState,omitempty" bson:"controlPlaneState,omitempty"`
    LoggingState        *LoggingFeatureState      `json:"loggingState,omitempty" yaml:"loggingState,omitempty" bson:"loggingState,omitempty"`
    MonitoringState     *MonitoringFeatureState   `json:"monitoringState,omitempty" yaml:"monitoringState,omitempty" bson:"monitoringState,omitempty"`
    KubeDbState         *ClusterPackageState      `json:"kubedbState,omitempty" yaml:"kubedbState,omitempty" bson:"kubedbState,omitempty"`
    IngressState        *IngressFeatureState      `json:"ingressState,omitempty" yaml:"ingressState,omitempty" bson:"ingressState,omitempty"`
    FeatureControllerOk *Condition                `json:"featureControllerOk,omitempty" yaml:"featureControllerOk,omitempty" bson:"featureControllerOk,omitempty"`
}

type DockerRegistryAuth

DockerRegistryAuth is a docker registry authentication information

type DockerRegistryAuth struct {
    Registry  *string `json:"registry,omitempty" yaml:"registry,omitempty"`
    SecretRef *string `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`
}

type DockerRegistryOverride

DockerRegistryOverride is a docker registry overrides

type DockerRegistryOverride struct {
    Default   string `mapstructure:"default" json:"default,omitempty" yaml:"default,omitempty"`
    DockerIO  string `mapstructure:"docker_io" json:"docker_io,omitempty" yaml:"docker_io,omitempty"`
    GcrIO     string `mapstructure:"gcr_io" json:"gcr_io,omitempty" yaml:"gcr_io,omitempty"`
    K8sGcrIO  string `mapstructure:"k8s_gcr_io" json:"k8s_gcr_io,omitempty" yaml:"k8s_gcr_io,omitempty"`
    QuayIO    string `mapstructure:"quay_io" json:"quay_io,omitempty" yaml:"quay_io,omitempty"`
    ElasticCO string `mapstructure:"elastic_co" json:"elastic_co,omitempty" yaml:"elastic_co,omitempty"`
}

type DockerRegistrySecretSpec

DockerRegistrySecretSpec is a Docker Registry Secret

type DockerRegistrySecretSpec struct {
    // Registry is name of Docker Registry (i.e. 'myregistry.com:5000')
    // Required
    Registry string `json:"registry" yaml:"registry" bson:"registry"`
    // Insecure can be set to true to disable TLS certificate verification for this registry.
    //+optional
    Insecure bool `json:"insecure" yaml:"insecure" bson:"insecure"`
    // Username for Docker Registry access.
    //+optional
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
    // Password for Docker Registry access.
    //+optional
    Password string `json:"password,omitempty" yaml:"password,omitempty" bson:"password,omitempty"`
    // Certificate is Docker Registry client certificate, that should be trusted by Docker daemon.
    //+optional
    Certificate string `json:"certificate,omitempty" yaml:"certificate,omitempty" bson:"certificate,omitempty"`
    // Subtype specifies repository type of docker registry, for example AWS ECR, that have special logic
    //+optional
    // Since version 1.20
    RepositoryType RepositoryType `json:"repositoryType,omitempty" yaml:"repositoryType,omitempty" bson:"repositoryType,omitempty"`
    // AwsEcrSecretRef a reference to AWSAPIAccessKey secret used to access the ECR repository
    // Since version 1.20
    AwsEcrSecretRef string `json:"awsEcrSecretRef,omitempty" yaml:"awsEcrSecretRef,omitempty" bson:"awsEcrSecretRef,omitempty"`
}

type DockerRegistrySpec

DockerRegistrySpec is a spec for docker registry

type DockerRegistrySpec struct {
    Auth     []*DockerRegistryAuth   `json:"auth,omitempty" yaml:"auth,omitempty"`
    Override *DockerRegistryOverride `json:"override,omitempty" yaml:"override,omitempty"`
}

type DrainStrategySpec

DrainStrategySpec controls the desired node drain behavior during update

type DrainStrategySpec struct {
    // Skip to drain node during update
    // Default: false
    Skip bool `json:"skip,omitempty" yaml:"skip,omitempty" bson:"skip,omitempty"`
    // Force is the flag of drain command
    // Continue even if there are pods not managed by a ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet
    // Default: true
    Force *bool `json:"force,omitempty" yaml:"force,omitempty" bson:"force,omitempty"`
    // IgnoreAllDaemonSets is the flag of drain command
    // Ignore DaemonSet-managed pods
    // Default: true
    IgnoreAllDaemonSets *bool `json:"ignoreAllDaemonSets,omitempty" yaml:"ignoreAllDaemonSets,omitempty" bson:"ignoreAllDaemonSets,omitempty"`
    // DeleteLocalData is the flag of drain command
    // Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained)
    // Default: true
    DeleteLocalData *bool `json:"deleteLocalData,omitempty" yaml:"deleteLocalData,omitempty" bson:"deleteLocalData,omitempty"`
    // GracePeriodSeconds is the flag of drain command
    // Period of time in seconds given to each pod to terminate gracefully. If negative, the default value specified in the pod will be used
    // Default: 30
    GracePeriodSeconds *int `json:"gracePeriodSeconds,omitempty" yaml:"gracePeriodSeconds,omitempty" bson:"gracePeriodSeconds,omitempty"`
    // Timeout is the flag of drain command
    // The length of time to wait before giving up, zero means infinite
    // Default: 30s
    Timeout *string `json:"timeout,omitempty" yaml:"timeout,omitempty" bson:"timeout,omitempty"`
}

type ElastigroupSpec

ElastigroupSpec object describes elastigroup parameters for a specific node group

type ElastigroupSpec struct {
    SpotinstAccessTokenSecretRef *string `json:"spotinstAccessTokenSecretRef,omitempty" bson:"spotinstAccessTokenSecretRef" yaml:"spotinstAccessTokenSecretRef,omitempty"`

    // Spec - Content of this object should correspond with 'Properties' object structure
    // of CloudFormation custom resoure of type 'Custom::elasticgroup' as described in
    // spotinst documentation, e.g.
    // https://api.spotinst.com/provisioning-ci-cd-sdk/provisioning-tools/cloudformation/examples/elastigroup/create-generic/
    //
    // In particular it may include 'group', 'updatePolicy', 'deletePolicy' properties etc.
    //
    // Kublr generator will override or extend certain elsatigroup spec properties
    // according to generic parameters in the instance group specification, e.g.
    // min/max nodes, instance type, etc
    Spec ElastigroupSpecMap `json:"spec,omitempty" yaml:"spec,omitempty" bson:"spec"`
}

type ElastigroupSpecMap

ElastigroupSpecMap is a spec for elastigroup.

type ElastigroupSpecMap map[string]interface{}

type Entity

Entity - MongoDB entity

type Entity struct {
    // ID is object id assigned by MongoDB during save.
    ID string `json:"id" yaml:"id" bson:"_id,omitempty"`
    // Metadata is object metadata.
    Metadata ObjectMeta `valid:"" json:"metadata" yaml:"metadata" bson:"metadata"`
    // TypeMeta is type metadata.
    TypeMeta `valid:"-" json:",inline" yaml:",inline"`
}

type Event

Event is a definition of events, which happens with cluster.

type Event struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    // InvolvedObject is the object that this event is about.
    // Intended usage is to put reference to kubernetes object to which this event about.
    InvolvedObject *ObjectReference `json:"involvedObject,omitempty" yaml:"involvedObject,omitempty"`
    Reason         string           `json:"reason,omitempty" yaml:"reason,omitempty"`
    Message        string           `json:"message,omitempty" yaml:"message,omitempty"`
    Source         *EventSource     `json:"eventSource,omitempty" yaml:"eventSource,omitempty"`
    FirstTimestamp time.Time        `json:"firstTimestamp,omitempty" yaml:"firstTimestamp,omitempty"`
    LastTimestamp  time.Time        `json:"lastTimestamp,omitempty" yaml:"lastTimestamp,omitempty"`
    Count          int              `json:"count" yaml:"count"`
    // Severity is an Event Severity.
    Severity EventSeverity `json:"severity" yaml:"severity"`
    // ClusterID is an ID of the cluster to which this event belongs.
    ClusterID string `json:"clusterId" yaml:"clusterId" bson:"clusterId"`
}

type EventListResult

EventListResult holds Events.

type EventListResult struct {
    Total int     `json:"total" yaml:"total"`
    Items []Event `json:"items" yaml:"items"`
}

type EventSeverity

EventSeverity is a severity of the event.

type EventSeverity int

type EventSource

EventSource defines source of the event.

type EventSource struct {
    // Component - which component created the event.
    Component string `json:"component" yaml:"component"`
    // Host is a host on which event was initiated.
    Host string `json:"host" yaml:"host"`
}

type FeatureCondition

FeatureCondition represents feature condition

type FeatureCondition struct {
    // Type is the type of the condition.
    Type FeatureConditionType `json:"type" yaml:"type"`
    // Last time we probed the condition.
    //+optional
    LastCheckTime time.Time `json:"lastCheckTime,omitempty" yaml:"lastCheckTime,omitempty"`
    // Last time the condition transitioned from one status to another.
    //+optional
    LastTransitionTime time.Time `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
    // Status is the status of the condition.
    // Can be True, False, Unknown.
    Status ConditionStatus `json:"status" yaml:"status"`
    // Unique, one-word, CamelCase reason for the condition's last transition.
    //+optional
    Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
    // Human-readable message indicating details about last transition.
    //+optional
    Message string `json:"message,omitempty" yaml:"message,omitempty"`
}

type FeatureConditionType

FeatureConditionType represents the type of the feature condition

type FeatureConditionType string

type FeatureName

FeatureName is the type for the feature name

type FeatureName string

type FeatureState

FeatureState represents state of the deployed feature.

type FeatureState struct {
    FeatureName FeatureName `json:"featureName" yaml:"featureName"`
    ReleaseName string      `json:"releaseName" yaml:"releaseName"`
    Created     time.Time   `json:"created,omitempty" yaml:"created,omitempty"`
    Modified    time.Time   `json:"modified,omitempty" yaml:"modified,omitempty"`
    Deleted     time.Time   `json:"deleted,omitempty" yaml:"deleted,omitempty"`
    FeatureOk   *Condition  `json:"featureOk,omitempty" yaml:"featureOk,omitempty"`
    // Namespace is kubernetes namespace to which the feature is installed.
    Namespace string `json:"namespace" yaml:"namespace"`
    // Version is the version of the installed feature
    Version string `json:"version" yaml:"version"`
    // Sha256sum is the SHA256 checksum for the installed function
    Sha256sum string `json:"sha256sum" yaml:"sha256sum"`
}

type GCPAPIAccessKeySpec

GCPAPIAccessKeySpec defines Google cloud email, key, projectID

type GCPAPIAccessKeySpec struct {
    ClientEmail string `json:"clientEmail,omitempty" yaml:"clientEmail,omitempty"`
    PrivateKey  string `json:"privateKey,omitempty" yaml:"privateKey,omitempty"`
    ProjectID   string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
}

type GCPDiskSpec

GCPDiskSpec is google cloud disk spec

type GCPDiskSpec struct {
    SizeGb      *int             `json:"sizeGb,omitempty" yaml:"sizeGb,omitempty"`
    Type        *GCPDiskTypeEnum `json:"type,omitempty" yaml:"type,omitempty"`
    SourceImage *string          `json:"sourceImage,omitempty" yaml:"sourceImage,omitempty"`
}

type GCPDiskTypeEnum

GCPDiskTypeEnum is type for disk in google cloud

type GCPDiskTypeEnum string

type GCPInstanceGroupLocationSpec

GCPInstanceGroupLocationSpec is google cloud group location spec

type GCPInstanceGroupLocationSpec struct {
    InstanceType *string `json:"instanceType,omitempty" yaml:"instanceType,omitempty"`

    // SSHKeySecretRef reference to the secret object containing public SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`
    SSHKey          *string `json:"sshKey,omitempty" yaml:"sshKey,omitempty"`

    // NodeIPAllocationPolicy is Instance IP allocation policy - 'default' (same as 'privateAndPublic'), 'private', or 'privateAndPublic'.
    NodeIPAllocationPolicy *NodeIPAllocationPolicyEnum `json:"nodeIpAllocationPolicy,omitempty" yaml:"nodeIpAllocationPolicy,omitempty"`

    BootDisk *GCPDiskSpec `json:"bootDisk,omitempty" yaml:"bootDisk,omitempty"`

    MasterDataDisk *GCPDiskSpec `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty"`

    // Zones to limit this group to.
    // If omitted, generator will automatically assign it to all available zones.
    Zones []*string `json:"zones,omitempty" yaml:"zones,omitempty"`

    // PinToZone is 'pin' if instances must be pinned to a single zone from the list, or 'span' if no pinning is necessary.
    // 'default' is the same as 'pin' for stateful groups and 'span' for stateless.
    PinToZone *InstanceGroupLocationSpecPinToZoneTypeEnum `json:"pinToZone,omitempty" yaml:"pinToZone,omitempty"`
}

type GCPLocationSpec

GCPLocationSpec is google cloud location spec

type GCPLocationSpec struct {
    // Reference to the secret object containing Google Cloud secrets to access
    GCPApiAccessSecretRef *string `json:"gcpApiAccessSecretRef,omitempty" yaml:"gcpApiAccessSecretRef,omitempty"`
    // Reference to the secret object containing public SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty"`
    // Google Cloud Project ID
    // If omitted, it will be populated automatically based on the secret.
    ProjectID *string `json:"projectId,omitempty" yaml:"projectId,omitempty"`
    // Google Cloud region
    // refer to https://cloud.google.com/compute/docs/regions-zones/
    Region *string `json:"region,omitempty" yaml:"region,omitempty"`
    // Google Cloud region zones to be used for Kubernetes cluster in this location.
    // If omitted, it will be populated automatically to all zones available for this project in this region.
    Zones []*string `json:"zones,omitempty" yaml:"zones,omitempty"`

    // VpcProjectID is a Google Cloud Project ID which owns the Existing VCP Network.
    // If omitted - we assume network exists in the same project where cluster is created.
    VpcProjectID *string `json:"vpcProjectId,omitempty" yaml:"vpcProjectId,omitempty"`
    // VpcName is an existing VPC Network name.
    // If omitted, a new VPC will be created, otherwise existing VPC will be used.
    VpcName *string `json:"vpcName,omitempty" yaml:"vpcName,omitempty"`
    // VpcCidrBlock is an IP address range for instances in VPC Network.
    // If omitted, one of 16 standard private /16 IP ranges (172.16.0.0/16, ... , 172.31.0.0/16) will be assigned.
    VpcCidrBlock *string `json:"vpcCidrBlock,omitempty" yaml:"vpcCidrBlock,omitempty"`
    // VpcSubnetName is an existing VPC Network Subnet name.
    // If omitted, a new subnet will be created, otherwise existing will be used.
    VpcSubnetName *string `json:"vpcSubnetName,omitempty" yaml:"vpcSubnetName,omitempty"`
}

type GCPLocationState

GCPLocationState represents state of GCP Location.

type GCPLocationState struct {
    DeploymentName            string     `json:"deploymentName" yaml:"deploymentName"`
    DeploymentState           string     `json:"deploymentState" yaml:"deploymentState"`
    PrepareToCreateDeployment bool       `json:"prepareToCreateDeployment" yaml:"prepareToCreateDeployment"`
    InstanceGroups            []string   `json:"instanceGroups" yaml:"instanceGroups"`
    DeletionAttempts          int        `json:"deletionAttempts" yaml:"deletionAttempts"`
    LastInstGroupErrorTime    *time.Time `json:"lastInstGroupErrorTime,omitempty" yaml:"lastInstGroupErrorTime,omitempty" bson:"lastInstGroupErrorTime,omitempty"`
}

type GlobalRole

GlobalRole is in global scope, not in any space

type GlobalRole struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // Rules holds all the PolicyRules for this Role
    Rules []PolicyRule `json:"rules" yaml:"rules"`
}

type GlobalRoleBinding

GlobalRoleBinding is in the global scope

type GlobalRoleBinding struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // RoleRef can only reference a GlobalRole in the global space.
    // If the RoleRef cannot be resolved, the Authorizer must return an error.
    RoleRef RoleRef `json:"roleRef" yaml:"roleRef"`
    // Subjects holds references to the objects the role applies to.
    Subjects []Subject `json:"subjects" yaml:"subjects"`
}

type GlobalRoleBindingListResult

GlobalRoleBindingListResult is a collection of GlobalRoleBindings

type GlobalRoleBindingListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roleBindings
    Items []GlobalRoleBinding `json:"items" yaml:"items"`
}

type GlobalRoleListResult

GlobalRoleListResult is a collection of GlobalRoles

type GlobalRoleListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roles
    Items []GlobalRole `json:"items" yaml:"items"`
}

type GoogleGCSSecretStoreSpec

GoogleGCSSecretStoreSpec - google cloud secret store spec

type GoogleGCSSecretStoreSpec struct {
    LocationRef string `json:"locationRef,omitempty" yaml:"locationRef,omitempty"`
    BucketName  string `json:"bucketName,omitempty" yaml:"bucketName,omitempty"`
}

type GrafanaSpec

GrafanaSpec is a spec for Grafana installation

type GrafanaSpec struct {
    // Enabled indicates if Grafana is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if storage is enabled.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
}

type HostSpec

HostSpec is a spec for a host in bare-metal installations.

type HostSpec struct {
    // Address is a reachable address for the host. Can be hostname or an IP-address.
    Address *string `json:"address,omitempty" yaml:"address,omitempty" bson:"address,omitempty"`
    // Reference to the secret object containing private SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty" bson:"sshKeySecretRef,omitempty"`
    // Username to connect to ssh
    Username *string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
}

type HostState

HostState represents state of the host.

type HostState struct {
    Address string `json:"address" yaml:"address"`
    // Reference to the secret object containing private SSH key
    SSHKeySecretRef *string `json:"sshKeySecretRef,omitempty" yaml:"sshKeySecretRef,omitempty" bson:"sshKeySecretRef,omitempty"`
    // Username to connect to ssh
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
    // RegisterOk successfully registered
    //+deprecated kublr agent provides node state information
    RegisterOk Condition `json:"registerOk" yaml:"registerOk"`
    // DeregisterOk successfully de-registered
    //+deprecated kublr agent provides node state information
    DeregisterOk Condition `json:"deregisterOk" yaml:"deregisterOk"`
}

type IPRangeSpec

IPRangeSpec - holds IP range spec

type IPRangeSpec struct {
    // StartAddress is a start address of the IP range.
    // Required
    StartAddress *string `json:"startAddress,omitempty" yaml:"startAddress,omitempty"`
    // EndAddress is an end address of the IP range.
    // Required
    EndAddress *string `json:"endAddress,omitempty" yaml:"endAddress,omitempty"`
}

type IdentifiableEntity

IdentifiableEntity base interface for entity with ID and general metadata properties

type IdentifiableEntity interface {
    GetID() string
    SetID(string)
    GetMetadata() ObjectMeta
    GetTypeMeta() TypeMeta
    SetResourceVersion(version int)
    SetSpace(space string)
    SetLabels(labels map[string]string)
    GetResourceVersion() int
    GetCreatedTimestamp() time.Time
    GetUpdatedTimestamp() time.Time
    SetCreatedTimestamp(t time.Time)
    SetUpdatedTimestamp(t time.Time)
}

type IngressFeatureState

IngressFeatureState represents state of the ingress feature.

type IngressFeatureState struct {
    // Address represents DNS name or IP address of load balancer.
    // for Amazon - DNS name
    // for Azure - IP address
    Address string `json:"address" yaml:"address" bson:"address"`

    // HTTPPort represents the port for the http connection.
    HTTPPort int32 `json:"httpPort" yaml:"httpPort" bson:"httpPort"`
    // HTTPSPort represents the port for the https connection.
    HTTPSPort int32 `json:"httpsPort" yaml:"httpsPort" bson:"httpsPort"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type IngressLoadBalancer

IngressLoadBalancer represents state of the ingress load balancer.

type IngressLoadBalancer struct {
    // Address represents DNS name or IP address of load balancer.
    // for Amazon - DNS name
    // for Azure - IP address
    Address string `json:"address,omitempty" yaml:"address,omitempty" bson:"address"`
    // LoadBalancerOk represents condition of load balancer.
    LoadBalancerOk *Condition `json:"loadBalancerOk,omitempty" yaml:"loadBalancerOk,omitempty" bson:"loadBalancerOk"`
    // HTTPPort represents the port for the http connection.
    HTTPPort int32 `json:"httpPort,omitempty" yaml:"httpPort,omitempty"`
    // HTTPSPort represents the port for the https connection.
    HTTPSPort int32 `json:"httpsPort,omitempty" yaml:"httpsPort,omitempty"`
}

type InitCommand

InitCommand specifies command to be used for initialization of new node in the location state.

type InitCommand struct {
    // NodeGroup name of the group to which command applies.
    NodeGroup string `json:"nodeGroup" yaml:"nodeGroup"`
    // NodeOrdinal is an ordinal within group.
    NodeOrdinal int64 `json:"nodeOrdinal" yaml:"nodeOrdinal"`
    // Command is a command to be executed to init a node.
    Command string `json:"command" yaml:"command"`
}

type InstanceGroupLocationSpec

InstanceGroupLocationSpec is a spec for an instance group location.

type InstanceGroupLocationSpec struct {
    LocationRef *string `json:"locationRef,omitempty" yaml:"locationRef,omitempty"`
    // Aws is a spec for AWS installations.
    //+optional
    Aws *AWSInstanceGroupLocationSpec `json:"aws,omitempty" yaml:"aws,omitempty"`
    // Azure is a spec for Azure installations.
    //+optional
    Azure *AzureInstanceGroupLocationSpec `json:"azure,omitempty" yaml:"azure,omitempty"`
    // Baremetal is a spec for bare-metal installation.
    //+optional
    Baremetal *BaremetalInstanceGroupLocationSpec `json:"baremetal,omitempty" yaml:"baremetal,omitempty"`
    // Gcp is a spec to Google Cloud installations.
    //+optional
    Gcp *GCPInstanceGroupLocationSpec `json:"gcp,omitempty" yaml:"gcp,omitempty"`
    // Vcd is a spec to VMware Cloud Director.
    //+optional
    Vcd *VCDInstanceGroupLocationSpec `json:"vcd,omitempty" yaml:"vcd,omitempty"`
    // VSphere is a spec to VMWare vSphere.
    //+optional
    VSphere *VSphereInstanceGroupLocationSpec `json:"vSphere,omitempty" yaml:"vSphere,omitempty"  bson:"vSphere,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`
}

type InstanceGroupLocationSpecPinToZoneTypeEnum

InstanceGroupLocationSpecPinToZoneTypeEnum defines whether stateful group instances are pinned to zone for some cloud providers (currently AWS and GCP are supported).

type InstanceGroupLocationSpecPinToZoneTypeEnum string

type InstanceGroupProcessesDescr

InstanceGroupProcessesDescr specification of processes (seeder and agent) configuration for an instance group (POSSIBLY FUTURE: with potential variations by node ordinal and/or identifier)

type InstanceGroupProcessesDescr struct {
    Group     *ProcessesDescr   `json:"group,omitempty" yaml:"group,omitempty"`
    ByOrdinal []*ProcessesDescr `json:"byOrdinal,omitempty" yaml:"byOrdinal,omitempty"`
}

type InstanceGroupRollingUpdateStrategySpec

InstanceGroupRollingUpdateStrategySpec controls the desired behavior of rolling update.

type InstanceGroupRollingUpdateStrategySpec struct {
    // The maximum number of nodes that can be unavailable during the update.
    // Value can be an absolute number (ex: 5) or a percentage of desired nodes (ex: 10%).
    // Absolute number is calculated from percentage by rounding down.
    // Defaults to 1.
    //+optional
    MaxUnavailable *Int32OrString `json:"maxUnavailable,omitempty" yaml:"maxUnavailable,omitempty" bson:"maxUnavailable,omitempty"`
}

type InstanceGroupSpec

InstanceGroupSpec is a spec for instance group.

type InstanceGroupSpec struct {
    Name *string `valid:"alphanum,required" json:"name,omitempty" yaml:"name,omitempty"`
    // KublrVariant is a variant to use for this group.
    // If omitted, generator will try to assign it automatically.
    //+optional
    KublrVariant *string `json:"kublrVariant,omitempty" yaml:"kublrVariant,omitempty"`
    MinNodes     *int    `json:"minNodes,omitempty" yaml:"minNodes,omitempty"`
    InitialNodes *int    `json:"initialNodes,omitempty" yaml:"initialNodes,omitempty"`
    MaxNodes     *int    `json:"maxNodes,omitempty" yaml:"maxNodes,omitempty"`
    // Stateful indicates that this group is stateful. It means that Autoscaling MUST be disabled for this group.
    // Also, all nodes will have stable identifiers in the group. (I.e. it will be a pet group, not cattle).
    Stateful *bool `json:"stateful,omitempty" yaml:"stateful,omitempty"`
    // Autoscaling is a flag indicating if autoscaling is enabled for this group or not.
    Autoscaling *bool `json:"autoscaling,omitempty" yaml:"autoscaling,omitempty"`
    // Locations is a spec for locations for this group.
    // Only one location per group is currently supported.
    // If omitted, generator will try to assign it automatically to the first available location.
    //+optional
    Locations []*InstanceGroupLocationSpec `json:"locations,omitempty" yaml:"locations,omitempty"`

    // UpdateStrategy is used to update existing nodes
    //+optional
    UpdateStrategy *InstanceGroupUpdateStrategySpec `json:"updateStrategy,omitempty" yaml:"updateStrategy,omitempty" bson:"updateStrategy,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters overridable in InstanceGroupLocationSpec
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`

    // The maximum time in seconds for a instanceGroup to make progress before it is considered to be failed.
    // Defaults to 1200s.
    ProgressDeadlineSeconds *int `json:"progressDeadlineSeconds,omitempty" yaml:"progressDeadlineSeconds,omitempty" bson:"progressDeadlineSeconds,omitempty"`
}

type InstanceGroupState

InstanceGroupState is a state object for instance group

type InstanceGroupState struct {
    // The name of instance group
    Name string `valid:"alphanum,required" json:"name" yaml:"name" bson:"name"`

    // UpdateStartTime is update start time
    UpdateStartTime time.Time `json:"updateStartTime,omitempty" yaml:"updateStartTime,omitempty" bson:"updateStartTime"`

    // BYOIGeneratedConfigs is specification of processes (seeder and agent) configuration
    // This field is only populated for baremetal (BYOI) groups as it is only intended to be used for installation script generation.
    // If seeder is used for this group, then only seeder part of the generated group config is saved here;
    // otherwise agent config is saved.
    //
    // NB! json/yaml/bson serialization field name is different for backward compatibility.
    BYOIGeneratedConfigs *InstanceGroupProcessesDescr `json:"generatedConfigs,omitempty" yaml:"generatedConfigs,omitempty" bson:"generatedConfigs,omitempty"`

    // Total number of nodes found in this instance group
    //+optional
    Replicas int `json:"replicas" yaml:"replicas" bson:"replicas"`

    // Total number of ready nodes in this instance group that have the desired configuration.
    //+optional
    UpdatedReplicas int `json:"updatedReplicas" yaml:"updatedReplicas" bson:"updatedReplicas"`

    // Total number of ready nodes in this instance group.
    //+optional
    ReadyReplicas int `json:"readyReplicas" yaml:"readyReplicas" bson:"readyReplicas"`

    // Total number of unavailable nodes in this instance group
    // This is the total number of nodes that are running but not yet in ready state or nodes
    // that still have not been created.
    //+optional
    UnavailableReplicas int `json:"unavailableReplicas" yaml:"unavailableReplicas" bson:"unavailableReplicas"`

    // KublrAgentSha256 is checksum of binary Kublr agent that is set in manifest.yaml to Seeder
    //+optional
    KublrAgentSha256 string `json:"kublrAgentSha256,omitempty" yaml:"kublrAgentSha256,omitempty" bson:"kublrAgentSha256,omitempty"`

    // KublrAgentExtSha256 is checksum of extensions of Kublr agent that is set in manifest.yaml to Seeder
    //+optional
    KublrAgentExtSha256 map[string]string `json:"kublrAgentExtSha256,omitempty" yaml:"kublrAgentExtSha256,omitempty" bson:"kublrAgentExtSha256,omitempty"`

    // KublrAgentCfgSha256 is checksum of configuration of Kublr agent that is set in manifest.yaml to Seeder
    // This field can be used only for stateless groups
    //+optional
    KublrAgentCfgSha256 string `json:"kublrAgentCfgSha256,omitempty" yaml:"kublrAgentCfgSha256,omitempty" bson:"kublrAgentCfgSha256,omitempty"`

    // KublrAgentSha256Desired is checksum of binary Kublr agent that should be set after update cluster
    //+optional
    KublrAgentSha256Desired string `json:"kublrAgentSha256Desired,omitempty" yaml:"kublrAgentSha256Desired,omitempty" bson:"kublrAgentSha256Desired,omitempty"`

    // KublrAgentExtSha256Desired is checksum of extensions of Kublr agent that should be set after update cluster
    //+optional
    KublrAgentExtSha256Desired map[string]string `json:"kublrAgentExtSha256Desired,omitempty" yaml:"kublrAgentExtSha256Desired,omitempty" bson:"kublrAgentExtSha256Desired,omitempty"`

    // KublrAgentCfgSha256Desired is checksum of configuration of Kublr agent that should be set after update cluster
    // This field can be used only for stateless groups
    //+optional
    KublrAgentCfgSha256Desired string `json:"kublrAgentCfgSha256Desired,omitempty" yaml:"kublrAgentCfgSha256Desired,omitempty" bson:"kublrAgentCfgSha256Desired,omitempty"`

    //Nodes is nodes status in this group
    Nodes []NodeState `json:"nodes,omitempty" yaml:"nodes,omitempty" bson:"nodes,omitempty"`

    // KublrAgentSource specifies URL and credentials for Kublr agent binary
    // This field is only used during cluster update.
    KublrAgentSource *SourceDescr `json:"kublrAgentSource,omitempty" yaml:"kublrAgentSource,omitempty" bson:"kublrAgentSource,omitempty"`

    // KublrAgentExtSource specifies a map of sources (URL + credentials) for Kublr agent extensions to use
    // This field is only used during cluster update.
    KublrAgentExtSource map[string]*SourceDescr `json:"kublrAgentExtSource,omitempty" yaml:"kublrAgentExtSource,omitempty" bson:"kublrAgentExtSource,omitempty"`
}

type InstanceGroupUpdateStrategySpec

InstanceGroupUpdateStrategySpec describes how to update existing nodes

type InstanceGroupUpdateStrategySpec struct {
    // Type of InstanceGroupUpdateStrategySpec. Currently the only supported strategy is "RollingUpdate".
    // Default is RollingUpdate.
    //+optional
    Type InstanceGroupUpdateStrategyType `json:"type,omitempty" yaml:"type,omitempty" bson:"type,omitempty"`

    // Rolling update config params.
    // Present only if Type = RollingUpdate.
    //+optional
    RollingUpdate *InstanceGroupRollingUpdateStrategySpec `json:"rollingUpdate,omitempty" yaml:"rollingUpdate,omitempty" bson:"rollingUpdate,omitempty"`

    // DrainStrategy holds the parameters to drain node
    //+optional
    DrainStrategy *DrainStrategySpec `json:"drainStrategy,omitempty" yaml:"drainStrategy,omitempty" bson:"drainStrategy,omitempty"`
}

type InstanceGroupUpdateStrategyType

InstanceGroupUpdateStrategyType is type of update strategy for nodes in instance groups.

type InstanceGroupUpdateStrategyType string

type Int32OrString

Int32OrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.

type Int32OrString struct {
    Type   Type
    IntVal int32
    StrVal string
}

type KcpConfig

KcpConfig is in the global scope

type KcpConfig struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`

    Data interface{} `json:"data,omitempty" yaml:"data,omitempty"`
}

type KcpConfigListResult

KcpConfigListResult is a collection of KcpConfig

type KcpConfigListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roleBindings
    Items []KcpConfig `json:"items" yaml:"items"`
}

type KubeDbFeatureSpec

KubeDbFeatureSpec is a spec for kubeDb.

type KubeDbFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty" bson:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty" bson:"values,omitempty"`
    // Enabled is bool value for enable feature
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
}

type KubeDbFeatureState

KubeDbFeatureState represents state of the Kubedb feature.

type KubeDbFeatureState struct {
    // Condition represents status of the kubedb feature.
    Condition Condition `json:"condition" yaml:"condition" bson:"condition"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type KubeconfigSpec

KubeconfigSpec is a Kubeconfig Secret

type KubeconfigSpec struct {
    // KubeconfigYamlFile kubeconfig file content in yaml format
    //+optional
    KubeconfigYamlFile string `json:"kubeconfigYamlFile,omitempty" yaml:"kubeconfigYamlFile,omitempty" bson:"kubeconfigYamlFile,omitempty"`
}

type KublrAgentSecretStoreAccessKeySpec

KublrAgentSecretStoreAccessKeySpec specification of an access key for an agent secret store

type KublrAgentSecretStoreAccessKeySpec struct {
    // AccessKeyID id of the access key
    AccessKeyID *string `json:"accessKeyId,omitempty" yaml:"accessKeyId,omitempty" bson:"accessKeyId,omitempty"`

    // SecretAccessKey secret of the access key
    SecretAccessKey *string `json:"secretAccessKey,omitempty" yaml:"secretAccessKey,omitempty" bson:"secretAccessKey,omitempty"`

    // Role associated with this access key; currently one of 'master', 'node', or 'client'
    Role *string `json:"role,omitempty" yaml:"role,omitempty" bson:"role,omitempty"`
}

type KublrAgentSecretStoreEndpointSpec

KublrAgentSecretStoreEndpointSpec specification for a kublr agent secret store endpoint

type KublrAgentSecretStoreEndpointSpec struct {
    // Ordinal - master ordinal of the peer with this address.
    // If not specified, default value of -1 is used
    //+optional
    Ordinal *int `json:"ordinal,omitempty" yaml:"ordinal,omitempty" bson:"ordinal,omitempty"`

    // StaticAddress the static address for this endpoint
    StaticAddress *string `json:"staticAddress,omitempty" yaml:"staticAddress,omitempty" bson:"staticAddress,omitempty"`

    // Port to use for this endpoind;
    // This value overrides the port specified in KublrAgentSecretStoreSpec structure
    //+optional
    Port *int `json:"port,omitempty" yaml:"port,omitempty" bson:"port,omitempty"`

    // Priority group for the address.
    // - If "priority" field is omitted, "default" value will be used.
    // - Clients will test groups of endpoints in the lexicografical order of priority values:
    //   endpoints with priority starting with "a" will be tested before endpoints with priority starting with "z";
    // - Usage order for endpoints with the same priority will be randomized for every call;
    // - Peers will use the same approach with groups of endpoints with the same ordinal.
    //+optional
    Priority *string `json:"priority,omitempty" yaml:"priority,omitempty" bson:"priority,omitempty"`
}

type KublrAgentSecretStoreSpec

KublrAgentSecretStoreSpec is a spec for secret store based on kublr agent self-storage This is mostly used for bare-metal and BYOI deployments

type KublrAgentSecretStoreSpec struct {
    Endpoints map[string]*KublrAgentSecretStoreEndpointSpec `json:"endpoints,omitempty" yaml:"endpoints,omitempty" bson:"endpoints,omitempty"`

    // Port to use for the store API endpoint
    // If not specified, default value of 11251 is used
    //+optional
    Port *int `json:"port,omitempty" yaml:"port,omitempty" bson:"port,omitempty"`

    // TLSCerts TLS/HTTPS certificates for the store API
    TLSCerts *string `json:"tlsCerts,omitempty" yaml:"tlsCerts,omitempty" bson:"tlsCerts,omitempty"`
    // TLSKey TLS/HTTPS key for the store API
    TLSKey *string `json:"tlsKey,omitempty" yaml:"tlsKey,omitempty" bson:"tlsKey,omitempty"`

    // AccessKeys contains access and secret keys that should be configured for the store.
    // At least one key with 'master' role and one key with 'node' role must be defined.
    // If user does not provide one of them, generator will add missing ones
    // automatically.
    AccessKeys []*KublrAgentSecretStoreAccessKeySpec `json:"accessKeys,omitempty" yaml:"accessKeys,omitempty" bson:"accessKeys,omitempty"`
}

type KublrOperatorSpec

KublrOperatorSpec is a spec for kublr-operator.

type KublrOperatorSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty" bson:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty" bson:"values,omitempty"`
    // Enabled is bool value for enable feature
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
}

type License

License is in global scope, not in any space

type License struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // Spec holds parsed information about this License
    Spec LicenseSpec `json:"spec" yaml:"spec" bson:"spec"`
    // RawLicense holds signed raw license to verify this License
    RawLicense string `json:"rawLicense" yaml:"rawLicense" bson:"rawLicense"`
    // Status holds information that describes a license status
    Status LicenseStatus `json:"status" yaml:"status" bson:"status"`
}

type LicenseListResult

LicenseListResult is a collection of Licenses

type LicenseListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of licenses
    Items []License `json:"items" yaml:"items"`
}

type LicenseRule

LicenseRule holds information that describes a license rule and information about what the rule applies to or which space the rule applies to.

type LicenseRule struct {
    // Resource is a resource this rule applies to. '*' represents all resources.
    Resource string `json:"resource,omitempty" yaml:"resource,omitempty" bson:"resource,omitempty"`

    // Space defines the name of the space
    // Not all resources are required to be scoped to a space - the value of this field for
    // those resources will be empty or "*".
    Space string `json:"space,omitempty" yaml:"space,omitempty" bson:"space,omitempty"`

    // Values represents license rule custom values
    Values LicenseRuleValues `json:"values,omitempty" yaml:"values,omitempty" bson:"values,omitempty"`

    // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
    //+optional
    ResourceNames []string `json:"resourceNames,omitempty" yaml:"resourceNames,omitempty" bson:"resourceNames,omitempty"`

    // ViolationAction holds action that activated on forbidden action, for example "warn", "forbid"
    ViolationAction string `json:"violationAction" yaml:"violationAction"`
}

type LicenseRuleValues

LicenseRuleValues represents license rule values

type LicenseRuleValues map[string]interface{}

type LicenseSpec

LicenseSpec holds information that describes a license

type LicenseSpec struct {
    // LicenseID holds unique id of license for Kublr Sales, for example KUBLR.1232-1232-434F-EREG.01
    LicenseID string `json:"licenseId" yaml:"licenseId" bson:"licenseId"`

    // Description holds extra information about the license, f.e. kind of license, for example "Trial", "Perpetual", "Subscription:Annual"
    Description string `json:"description,omitempty" yaml:"description,omitempty" bson:"description,omitempty"`

    // CreatedAt holds creation date when license was generated
    CreatedAt time.Time `json:"createdAt,omitempty" yaml:"createdAt,omitempty" bson:"createdAt,omitempty"`

    // LicenseSchemeVersion holds version of scheme of license
    LicenseSchemeVersion string `json:"licenseSchemeVersion,omitempty" yaml:"licenseSchemeVersion,omitempty" bson:"licenseSchemeVersion,omitempty"`

    // KublrInstallationID holds unique id of Kublr Installation
    KublrInstallationID string `json:"kublrInstallationId,omitempty" yaml:"kublrInstallationId,omitempty" bson:"kublrInstallationId,omitempty"`

    // SupportedKublrVersions holds comma-separated Kublr Version where license is active, for example "1.22.*,1.23.0", "1.23.*", "1.28.0"
    SupportedKublrVersions string `json:"supportedKublrVersions,omitempty" yaml:"supportedKublrVersions,omitempty" bson:"supportedKublrVersions,omitempty"`

    // ExpirationDate holds date when license will be expired
    ExpirationDate time.Time `json:"expirationDate,omitempty" yaml:"expirationDate,omitempty" bson:"expirationDate,omitempty"`

    // ShutdownGracePeriod holds period after expiration when Kublr blocks working with the license
    ShutdownGracePeriod *int `json:"shutdownGracePeriod,omitempty" yaml:"shutdownGracePeriod,omitempty" bson:"shutdownGracePeriod,omitempty"`

    // ExpirationPeriodInDays holds period when license will be expired after install of Kublr
    ExpirationPeriodInDays *int `json:"expirationPeriodInDays,omitempty" yaml:"expirationPeriodInDays,omitempty" bson:"expirationPeriodInDays,omitempty"`

    // Rules holds all the LicenseRules for this License. What actions are possible with the license?
    Rules []LicenseRule `json:"rules" yaml:"rules" bson:"rules"`
}

type LicenseStatus

LicenseStatus holds information that describes a license status

type LicenseStatus struct {
    // Valid is action valid?
    Valid bool `json:"valid,omitempty" yaml:"valid,omitempty" bson:"valid,omitempty"`
    // Reasons holds reasons why action is invalid
    Reasons []string `json:"reasons,omitempty" yaml:"reasons,omitempty" bson:"reasons,omitempty"`
    // Active holds flag that the License is active. Int is used for using atomic xor update in mongo. 0 - inactive, 1 - active.
    Active int `json:"active" yaml:"active" bson:"active"`
    // CalculatedExpirationDate holds calculated date when license will be expired
    CalculatedExpirationDate time.Time `json:"calculatedExpirationDate,omitempty" yaml:"calculatedExpirationDate,omitempty" bson:"calculatedExpirationDate,omitempty"`
    // CalculatedShutdownDate holds calculated date when Kublr blocks working with the license
    CalculatedShutdownDate time.Time `json:"calculatedShutdownDate,omitempty" yaml:"calculatedShutdownDate,omitempty" bson:"calculatedShutdownDate,omitempty"`
}

type LicenseViolationListResult

LicenseViolationListResult is a collection of Violations of Licenses

type LicenseViolationListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of licenses
    Items []error `json:"items" yaml:"items"`
}

type ListResult

ListResult holds result of requests returning slice of objects. This is a generic result which can be used only if result should not be processed in any other way.

type ListResult struct {
    Total int           `json:"total" yaml:"total"`
    Items []interface{} `json:"items" yaml:"items"`
}

type LoadBalancerSKU

LoadBalancerSKU Azure load balancer SKU (‘Basic’ or ‘Standard’)

Since version 1.20

type LoadBalancerSKU string

type LocalPathProvisioner

LocalPathProvisioner is configuration for local host path provisioner

type LocalPathProvisioner struct {
    // Enabled this feature
    // This feature is enabled by default for baremetal and vCloud Director clusters
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
    // DefaultPath is the default path to store the data on each node.
    // Root directory (/) is prohibited
    // Default: /var/lib/kublr/pvc
    DefaultPath string `json:"defaultPath,omitempty" yaml:"defaultPath,omitempty" bson:"defaultPath,omitempty"`
}

type LocationSpec

LocationSpec is a spec for a location. Only one spec should be not-nil inside.

type LocationSpec struct {
    // Name is a name of the location.
    Name *string `json:"name,omitempty" yaml:"name,omitempty"`
    // Aws specifies AWS specific details.
    //+optional
    Aws *AWSLocationSpec `json:"aws,omitempty" yaml:"aws,omitempty"`
    // Azure specifies Azure specific details.
    //+optional
    Azure *AzureLocationSpec `json:"azure,omitempty" yaml:"azure,omitempty"`
    // Baremetal specifies bare-metal specific details.
    //+optional
    Baremetal *BaremetalLocationSpec `json:"baremetal,omitempty" yaml:"baremetal,omitempty"`
    // Gcp specifies Google Cloud specific details
    //+optional
    Gcp *GCPLocationSpec `json:"gcp,omitempty" yaml:"gcp,omitempty"`
    // Vcd specifiies VMware cloud director specific details,
    //+optional
    Vcd *VCDLocationSpec `json:"vcd,omitempty" yaml:"vcd,omitempty"`
    // VSphere specifiies VMWare vSphere specific details,
    //+optional
    VSphere *VSphereLocationSpec `json:"vSphere,omitempty" yaml:"vSphere,omitempty" bson:"vSphere,omitempty"`

    // ProcessesSpec specifies seeder and agent parameters overridable in InstanceGroupSpec, and InstanceGroupLocationSpec
    ProcessesSpec `json:",inline" yaml:",inline" bson:",inline"`
}

type LocationState

LocationState represents state of the location.

type LocationState struct {
    LocationRef *string `json:"locationRef,omitempty" yaml:"locationRef,omitempty"`
    // Aws stores location state for AWS installations.
    //+optional
    Aws *AWSLocationState `json:"aws,omitempty" yaml:"aws,omitempty"`
    // Baremetal stores location state for baremetal installations.
    //+optional
    // Azure stores location state for Azure installations.
    //+optional
    Azure *AzureLocationState `json:"azure,omitempty" yaml:"azure,omitempty"`
    // Baremetal stores location state for on-prem installations.
    //+optional
    Baremetal *BaremetalLocationState `json:"baremetal,omitempty" yaml:"baremetal,omitempty"`
    // Gcp stores location state for GCP installations.
    //+optional
    Gcp *GCPLocationState `json:"gcp,omitempty" yaml:"gcp,omitempty"`
    // Vcd stores location state for VMware vCD installations.
    //+optional
    Vcd *VCDLocationState `json:"vcd,omitempty" yaml:"vcd,omitempty"`
    // VSphere stores location state for VMWare vSphere installations.
    //+optional
    VSphere *VSphereLocationState `json:"vSphere,omitempty" yaml:"vSphere,omitempty" bson:"vSphere"`

    LocationOk            *Condition   `json:"locationOk,omitempty" yaml:"locationOk,omitempty"`
    Conditions            []*Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
    CreateRequested       time.Time    `json:"createRequested,omitempty" yaml:"createRequested,omitempty"`
    Created               time.Time    `json:"created,omitempty" yaml:"created,omitempty"`
    UpdateRequested       time.Time    `json:"updateRequested,omitempty" yaml:"updateRequested,omitempty"`
    Updated               time.Time    `json:"updated,omitempty" yaml:"updated,omitempty"`
    DeleteRequested       time.Time    `json:"deleteRequested,omitempty" yaml:"deleteRequested,omitempty"`
    Deleted               time.Time    `json:"deleted,omitempty" yaml:"deleted,omitempty"`
    InterruptionRequested time.Time    `json:"interruptionRequested,omitempty" yaml:"interruptionRequested,omitempty"`
    Interrupted           time.Time    `json:"interrupted,omitempty" yaml:"interrupted,omitempty"`

    // KubernetesAPIEndpoints API endpoints provisioned in this location
    KubernetesAPIEndpoints []string `json:"kubernetesApiEndpoints,omitempty" yaml:"kubernetesApiEndpoints,omitempty"`
    // KubernetesAPIEndpointURLs API endpoint URLs provisioned in this location
    KubernetesAPIEndpointURLs []string `json:"kubernetesApiEndpointUrls,omitempty" yaml:"kubernetesApiEndpointUrls,omitempty"`
}

type LoggingFeatureState

LoggingFeatureState represents state of the logging feature.

type LoggingFeatureState struct {
    // KibanaEndpoint represents the endpoint address for kibana service.
    KibanaEndpoint string `json:"kibanaEndpoint" yaml:"kibanaEndpoint" bson:"kibanaEndpoint"`
    // RabbitmqEndpoint represents the endpoint address for rabbitmq service.
    RabbitmqEndpoint string `json:"rabbitmqEndpoint" yaml:"rabbitmqEndpoint" bson:"rabbitmqEndpoint"`
    // Condition represents status of the logging feature.
    //+deprecated
    Condition Condition `json:"condition" yaml:"condition" bson:"condition"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type MasterLBAllocationPolicyEnum

MasterLBAllocationPolicyEnum -

type MasterLBAllocationPolicyEnum string

type MonitoringFeatureState

MonitoringFeatureState represents state of the app-monitoring feature.

type MonitoringFeatureState struct {
    // Condition represents status of the app-monitoring feature.
    Condition Condition `json:"condition" yaml:"condition" bson:"condition"`

    // AlertManagerEndpoint represents the endpoint address for AlertManager service.
    AlertManagerEndpoint string `json:"alertManagerEndpoint" yaml:"alertManagerEndpoint" bson:"alertManagerEndpoint"`
    // AlertManagerServiceName represents AlertManager service name.
    AlertManagerServiceName string `json:"alertManagerServiceName" yaml:"alertManagerServiceName" bson:"alertManagerServiceName"`

    // GrafanaEndpoint represents the endpoint address for grafana service.
    GrafanaEndpoint string `json:"grafanaEndpoint" yaml:"grafanaEndpoint" bson:"grafanaEndpoint"`
    // GrafanaServiceName represents Grafana service name.
    GrafanaServiceName string `json:"grafanaServiceName" yaml:"grafanaServiceName" bson:"grafanaServiceName"`
    // GrafanaSecretName represents Grafana secret name.
    GrafanaSecretName string `json:"grafanaSecretName" yaml:"grafanaSecretName" bson:"grafanaSecretName"`

    // PrometheusEndpoint represents the endpoint address for Prometheus service.
    PrometheusEndpoint string `json:"prometheusEndpoint" yaml:"prometheusEndpoint" bson:"prometheusEndpoint"`
    // PrometheusServiceName represents Prometheus service name.
    PrometheusServiceName string `json:"prometheusServiceName" yaml:"prometheusServiceName" bson:"prometheusServiceName"`
    // ClusterPackageState represents package status
    ClusterPackageState `json:",inline" yaml:",inline" bson:",inline"`
}

type MonitoringPlatformClientSpec

MonitoringPlatformClientSpec is a specification for Centralized Monitoring Client installation (installs on KCP managed clusters)

type MonitoringPlatformClientSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

    Prometheus *PrometheusSpec `json:"prometheus,omitempty" yaml:"prometheus,omitempty"`
}

type MonitoringPlatformSpec

MonitoringPlatformSpec is a specification for Centralized Monitoring Host installation (installs on KCP cluster)

type MonitoringPlatformSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

    // AlertManager is a spec for AlertManager installation
    AlertManager *AlertManagerSpec `json:"alertmanager,omitempty" yaml:"alertmanager,omitempty"`
    // Prometheus is a spec for Prometheus installation
    Prometheus *PrometheusSpec `json:"prometheus,omitempty" yaml:"prometheus,omitempty"`
    // Grafana is a spec for Grafana installation
    Grafana *GrafanaSpec `json:"grafana,omitempty" yaml:"grafana,omitempty"`
}

type MonitoringSelfHostedSpec

MonitoringSelfHostedSpec is a specification for Self-Hosted Monitoring installation

type MonitoringSelfHostedSpec struct {
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

    // AlertManager is a spec for AlertManager installation
    AlertManager *AlertManagerSpec `json:"alertmanager,omitempty" yaml:"alertmanager,omitempty"`
    // Prometheus is a spec for Prometheus installation
    Prometheus *PrometheusSpec `json:"prometheus,omitempty" yaml:"prometheus,omitempty"`
    // Grafana is a spec for Grafana installation
    Grafana *GrafanaSpec `json:"grafana,omitempty" yaml:"grafana,omitempty"`
}

type NetworkSpec

NetworkSpec is a spec of network.

type NetworkSpec struct {
    Provider            *string   `json:"provider,omitempty" yaml:"provider,omitempty"`
    ClusterCIDR         *string   `json:"clusterCIDR,omitempty" yaml:"clusterCIDR,omitempty"`
    ServiceCIDR         *string   `json:"serviceCIDR,omitempty" yaml:"serviceCIDR,omitempty"`
    PodCIDR             *string   `json:"podCIDR,omitempty" yaml:"podCIDR,omitempty"`
    MasterIP            *string   `json:"masterIP,omitempty" yaml:"masterIP,omitempty"`
    DNSIp               *string   `json:"dnsIP,omitempty" yaml:"dnsIP,omitempty"`
    DNSDomain           *string   `json:"dnsDomain,omitempty" yaml:"dnsDomain,omitempty"`
    APIServerSecurePort *int      `json:"apiServerSecurePort,omitempty" yaml:"apiServerSecurePort,omitempty"`
    UpstreamNameservers []*string `json:"upstreamNameservers,omitempty" yaml:"upstreamNameservers,omitempty"`
    // LocalDnsIP is IP address for dns caching agent on cluster nodes to improve DNS performance
    //+optional
    LocalDNSIP *string `json:"localDnsIP,omitempty" yaml:"localDnsIP,omitempty" bson:"localDnsIP,omitempty"`
    // DnsProvider can be coredns or kubedns
    //+optional
    DNSProvider *string `json:"dnsProvider,omitempty" yaml:"dnsProvider,omitempty" bson:"dnsProvider,omitempty"`
    // EnableLocalDNS is a flag that indicates the use of a DNS caching agent on a cluster node.
    EnableLocalDNS *bool `json:"enableLocalDns,omitempty" yaml:"enableLocalDns,omitempty" bson:"enableLocalDns,omitempty"`
    // StubDomains define dns servers to delegate dns zone
    //+optional
    StubDomains []*StubDomainSpec `json:"stubDomains,omitempty" yaml:"stubDomains,omitempty" bson:"stubDomains,omitempty"`
}

type NginxClusterIngressControllerSpec

NginxClusterIngressControllerSpec is a spec for NGINX Ingress Controller.

type NginxClusterIngressControllerSpec struct {
    Acme    *AcmeSpec `json:"acme,omitempty" yaml:"acme,omitempty" bson:"acme,omitempty"`
    Enabled *bool     `json:"enabled,omitempty" yaml:"enabled,omitempty" bson:"enabled,omitempty"`
    // UseHostPort enables using DaemonSet and hostPort for Pod
    // That allows to use a different host port for ingress controller
    UseHostPort bool `json:"useHostPort,omitempty" yaml:"useHostPort,omitempty" bson:"useHostPort,omitempty"`
    // HostPortHTTP defines http host port for ingress controller
    // This field is used only when UseHostPort is enabled.
    // Default: 80
    HostPortHTTP *int32 `json:"hostPortHttp,omitempty" yaml:"hostPortHttp,omitempty" bson:"hostPortHttp,omitempty"`
    // HostPortHTTPS defines https host port for ingress controller
    // This field is used only when UseHostPort is enabled.
    // Default: 443
    HostPortHTTPS *int32 `json:"hostPortHttps,omitempty" yaml:"hostPortHttps,omitempty" bson:"hostPortHttps,omitempty"`
    // LoadBalancerAddress is the load balancing address for ingress controller
    //+optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty" bson:"loadBalancerAddress,omitempty"`
    // LoadBalancerPortHTTP defines load balancing http port for ingress controller
    // Default: 80
    LoadBalancerPortHTTP *int32 `json:"loadBalancerPortHttp,omitempty" yaml:"loadBalancerPortHttp,omitempty" bson:"loadBalancerPortHttp,omitempty"`
    // HostPortHTTPS defines load balancing https port for ingress controller
    // Default: 443
    LoadBalancerPortHTTPS *int32 `json:"loadBalancerPortHttps,omitempty" yaml:"loadBalancerPortHttps,omitempty" bson:"loadBalancerPortHttps,omitempty"`
}

type NodeCondition

NodeCondition represents node condition

type NodeCondition struct {
    // Type is the type of the condition.
    Type NodeConditionType `json:"type,omitempty" yaml:"type,omitempty" bson:"type,omitempty"`

    // Status is the status of the condition.
    // Can be True, False, Unknown.
    Status ConditionStatus `json:"status,omitempty" yaml:"status,omitempty" bson:"status,omitempty"`

    // Last time we probed the condition.
    //+optional
    LastHeartbeatTime time.Time `json:"lastHeartbeatTime,omitempty" yaml:"lastHeartbeatTime,omitempty" bson:"lastHeartbeatTime,omitempty"`

    // Last time the condition transitioned from one status to another.
    //+optional
    LastTransitionTime time.Time `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty" bson:"lastTransitionTime,omitempty"`

    // Unique, one-word, CamelCase reason for the condition's last transition.
    //+optional
    Reason string `json:"reason,omitempty" yaml:"reason,omitempty" bson:"reason,omitempty"`

    // Human-readable message indicating details about last transition.
    //+optional
    Message string `json:"message,omitempty" yaml:"message,omitempty" bson:"message,omitempty"`
}

type NodeConditionType

NodeConditionType represents the type of the node condition

type NodeConditionType string

type NodeDeletingState

NodeDeletingState represents available node’s states during deleting

type NodeDeletingState string

type NodeIPAllocationPolicyEnum

NodeIPAllocationPolicyEnum - enum for policy

type NodeIPAllocationPolicyEnum string

type NodePhase

NodePhase is a label for the condition of a node at the current time.

type NodePhase string

type NodeState

NodeState is a state object for the node of cluster

type NodeState struct {
    // Identifier of node
    // +required
    Identifier string `json:"identifier" yaml:"identifier" bson:"identifier"`

    // Ordinal of node uses only for stateful groups
    //+optional
    Ordinal *int `json:"ordinal,omitempty" yaml:"ordinal,omitempty" bson:"ordinal,omitempty"`

    // The name of kubernetes node
    //+optional
    Name string `json:"name,omitempty" yaml:"name,omitempty" bson:"name,omitempty"`

    // Phase represents the current phase of machine actuation.
    // The phase of a Node is a simple, high-level summary of where the Node is in its lifecycle.
    // The conditions array, the reason and message fields, and the individual container status
    // arrays contain more detail about the node status.
    // There are five possible phase values: Pending, Running, Updating, Terminating, Failed, Unknown.
    //+optional
    Phase NodePhase `json:"phase,omitempty" yaml:"phase,omitempty" bson:"phase,omitempty"`

    // Current service state of node.
    Conditions []NodeCondition `json:"conditions,omitempty" yaml:"conditions,omitempty" bson:"conditions,omitempty"`

    // KublrAgentSha256Received is checksum of binary Kublr agent received from Seeder
    KublrAgentSha256Received string `json:"kublrAgentSha256Received,omitempty" yaml:"kublrAgentSha256Received,omitempty" bson:"kublrAgentSha256Received,omitempty"`

    // KublrAgentExtSha256Received is checksum of extensions of Kublr agent received from Seeder
    KublrAgentExtSha256Received map[string]string `json:"kublrAgentExtSha256Received,omitempty" yaml:"kublrAgentExtSha256Received,omitempty" bson:"kublrAgentExtSha256Received,omitempty"`

    // KublrAgentCfgSha256Received is checksum of configuration of Kublr agent received from Seeder
    KublrAgentCfgSha256Received string `json:"kublrAgentCfgSha256Received,omitempty" yaml:"kublrAgentCfgSha256Received,omitempty" bson:"kublrAgentCfgSha256Received,omitempty"`

    // KublrAgentSha256 is checksum of binary Kublr agent that is set in manifest.yaml to Seeder
    //+optional
    KublrAgentSha256 string `json:"kublrAgentSha256,omitempty" yaml:"kublrAgentSha256,omitempty" bson:"kublrAgentSha256,omitempty"`

    // KublrAgentExtSha256 is checksum of extensions of Kublr agent that is set in manifest.yaml to Seeder
    KublrAgentExtSha256 map[string]string `json:"kublrAgentExtSha256,omitempty" yaml:"kublrAgentExtSha256,omitempty" bson:"kublrAgentExtSha256,omitempty"`

    // KublrAgentCfgSha256 is checksum of configuration of Kublr agent that is set in manifest.yaml to Seeder
    //+optional
    KublrAgentCfgSha256 string `json:"kublrAgentCfgSha256,omitempty" yaml:"kublrAgentCfgSha256,omitempty" bson:"kublrAgentCfgSha256,omitempty"`

    // KublrAgentCfgSha256Desired is checksum of configuration of Kublr agent that should be set after update cluster
    // This field is used only in stateful and onprem instace groups
    KublrAgentCfgSha256Desired string `json:"kublrAgentCfgSha256Desired,omitempty" yaml:"kublrAgentCfgSha256Desired,omitempty" bson:"kublrAgentCfgSha256Desired,omitempty"`

    // KublrAgentSource specifies URL and credentials for Kublr agent binary
    // This field is only used during cluster update.
    KublrAgentSource *SourceDescr `json:"kublrAgentSource,omitempty" yaml:"kublrAgentSource,omitempty" bson:"kublrAgentSource,omitempty"`

    // KublrAgentExtSource specifies a map of sources (URL + credentials) for Kublr agent extensions to use
    KublrAgentExtSource map[string]*SourceDescr `json:"kublrAgentExtSource,omitempty" yaml:"kublrAgentExtSource,omitempty" bson:"kublrAgentExtSource,omitempty"`
}

type NodeToDelete

NodeToDelete contains resources IDs needed to delete node during the execution of the Update command

type NodeToDelete struct {
    VMID               string            `json:"vmId" yaml:"vmId"`
    OsDiskID           string            `json:"osDiskId" yaml:"osDiskId"`
    NetworkInterfaceID string            `json:"networkInterfaceId" yaml:"networkInterfaceId"`
    State              NodeDeletingState `json:"state" yaml:"state"`
}

type ObjectMeta

ObjectMeta is kublr object metadata

type ObjectMeta struct {
    Name             string    `valid:"alphanum,required" json:"name" yaml:"name"`
    CreatedTimestamp time.Time `json:"createdAt,omitempty" yaml:"createdAt,omitempty"`
    UpdatedTimestamp time.Time `json:"updatedAt,omitempty" yaml:"updatedAt,omitempty"`

    // Map of string keys and values that can be used to organize and categorize (scope and select) objects.
    //+optional
    Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`

    // Space defines the name of the space
    // Not all objects are required to be scoped to a space - the value of this field for
    // those objects will be empty.
    Space string `json:"space,omitempty" yaml:"space,omitempty" bson:"space,omitempty"`

    // An opaque value that represents the internal version of this object that can
    // be used by clients to determine when objects have changed. May be used for optimistic
    // concurrency, change detection, and the watch operation on a resource or set of resources.
    // Clients must treat these values as opaque and passed unmodified back to the server.
    ResourceVersion int `json:"resourceVersion,omitempty" yaml:"resourceVersion,omitempty" bson:"resourceVersion,omitempty"`

    // List of objects depended by this object.
    //+optional
    OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty" bson:"ownerReferences,omitempty"`
}

type ObjectReference

ObjectReference is a reference to the associated object.

type ObjectReference struct {
    TypeMeta  `json:",inline" yaml:",inline"`
    Namespace string `json:"namespace" yaml:"namespace"`
    Name      string `json:"name" yaml:"name"`
    UID       string `json:"uid" yaml:"uid"`
}

type Owner

Owner represents owner of the entity.

type Owner struct {
    // UserID holds ID of the owner.
    UserID string `json:"userId" bson:"userId,omitempty" yaml:"userId"`
}

type OwnerReference

OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same space, so there is no space field.

type OwnerReference struct {
    // API version of the referent.
    APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty" bson:"apiVersion,omitempty"`
    // Kind of the referent.
    Kind string `json:"kind" yaml:"kind" bson:"kind"`
    // Name of the referent.
    Name string `json:"name" yaml:"name" bson:"name"`
    // ID of the referent.
    ID string `json:"id" yaml:"id" bson:"id"`
}

type OwnerReferenceFilter

OwnerReferenceFilter describes filter for OwnerReference

type OwnerReferenceFilter func(OwnerReference) bool

type OwnerableEntity

OwnerableEntity described general owner model

type OwnerableEntity interface {
    IdentifiableEntity
    GetOwner() *Owner
    SetOwner(owner *Owner)
}

type PackageStates

PackageStates represents the state of the cluster packages.

type PackageStates struct {
    // Packages is the state of all clustered packages
    Packages map[string]*ClusterPackageState `json:"packages,omitempty" yaml:"packages,omitempty" bson:"packages,omitempty"`
}

type PolicyRule

PolicyRule holds information that describes a policy rule, but does not contain information about who the rule applies to or which space the rule applies to.

type PolicyRule struct {
    // Resources is a list of resources this rule applies to. '*' represents all resources.
    Resources []string `json:"resources" yaml:"resources"`

    // Action constraints
    // 1. allowed actions - e.g. "get", "list", "put", "post", "delete"
    // 2. "*" means all actions allowed
    Verbs []string `json:"verbs" yaml:"verbs"`

    // ResourceNames is an optional white list of names that the rule applies to.  An empty set means that everything is allowed.
    //+optional
    ResourceNames []string `json:"resourceNames,omitempty" yaml:"resourceNames,omitempty" bson:"resourceNames,omitempty"`

    // NonResourceURLs is a set of partial urls that a user should have access to.  *s are allowed, but only as the full, final step in the path
    // Since non-resource URLs are not namespaced, this field is only applicable for ClusterRoles referenced from a ClusterRoleBinding.
    // Rules can either apply to API resources (such as "clusters" or "secrets") or non-resource URL paths (such as "/metrics"),  but not both.
    //+optional
    NonResourceURLs []string `json:"nonResourceURLs,omitempty" yaml:"nonResourceURLs,omitempty" bson:"nonResourceURLs,omitempty"`
}

type ProcessDescr

ProcessDescr specification of a process (e.g. seeder or agent) configuration

type ProcessDescr struct {
    Source     *SourceDescr           `json:"source,omitempty" yaml:"source,omitempty"`
    Config     AgentConfigMap         `json:"config,omitempty" yaml:"config,omitempty"`
    Extensions map[string]SourceDescr `json:"extensions,omitempty" yaml:"extensions,omitempty"`
}

type ProcessesDescr

ProcessesDescr specification of processes (seeder and agent) configuration

type ProcessesDescr struct {
    Seeder *ProcessDescr `json:"seeder,omitempty" yaml:"seeder,omitempty"`
    Agent  *ProcessDescr `json:"agent,omitempty" yaml:"agent,omitempty"`
}

type ProcessesSpec

ProcessesSpec is a block of seeder and agent parameters re-used and overridable in ClusterSpec, LocationSpec, InstanceGroupSpec, and InstanceGroupLocationSpec

type ProcessesSpec struct {
    // KublrSeederTgzURL specifies URL of Kublr seeder to use
    //+optional
    KublrSeederTgzURL *string `json:"kublrSeederTgzUrl,omitempty" yaml:"kublrSeederTgzUrl,omitempty"`
    // KublrSeederRepositorySecretRef specifies reference to the secret object containing username/password to access Kublr seeder repository
    //+optional
    KublrSeederRepositorySecretRef *string `json:"kublrSeederRepositorySecretRef,omitempty" yaml:"kublrSeederRepositorySecretRef,omitempty"`
    // KublrAgentTgzURL specifies URL of Kublr agent to use
    //+optional
    KublrAgentTgzURL *string `json:"kublrAgentTgzUrl,omitempty" yaml:"kublrAgentTgzUrl,omitempty"`
    // KublrAgentRepositorySecretRef specifies reference to the secret object containing username/password to access Kublr agent repository
    //+optional
    KublrAgentRepositorySecretRef *string `json:"kublrAgentRepositorySecretRef,omitempty" yaml:"kublrAgentRepositorySecretRef,omitempty"`

    // KublrSeederConfig allows to override Kublr seeder configuration
    //+optional
    KublrSeederConfig AgentConfigMap `json:"kublrSeederConfig,omitempty" yaml:"kublrSeederConfig,omitempty"`
    // KublrAgentConfig allows to override Kublr agent configuration
    //+optional
    KublrAgentConfig AgentConfigMap `json:"kublrAgentConfig,omitempty" yaml:"kublrAgentConfig,omitempty"`

    // KublrAgentExtensions allows to specify Kublr agent extensions
    KublrAgentExtensions AgentExtensionsMap `json:"kublrAgentExtensions,omitempty" yaml:"kublrAgentExtensions,omitempty"`
}

type PrometheusSpec

PrometheusSpec is a spec for Prometheus installation

type PrometheusSpec struct {
    // Persistent indicates if storage is enabled.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
}

type ProxyConfigurationServerSpec

ProxyConfigurationServerSpec is spec for proxy server configuration.

type ProxyConfigurationServerSpec struct {
    // URL for proxy server
    URL string `json:"url,omitempty" yaml:"url,omitempty" bson:"url,omitempty"`
    // Username username for proxy server
    Username string `json:"username,omitempty" yaml:"username,omitempty" bson:"username,omitempty"`
    // Password password for proxy settings
    Password string `json:"password,omitempty" yaml:"password,omitempty" bson:"password,omitempty"`
    // UsernamePasswordSecretRef is reference to username and password secret ref
    UsernamePasswordSecretRef string `json:"usernamePasswordSecretRef,omitempty" yaml:"usernamePasswordSecretRef,omitempty" bson:"usernamePasswordSecretRef,omitempty"`
}

type ProxyConfigurationSpec

ProxyConfigurationSpec is spec for proxy configuration

type ProxyConfigurationSpec struct {
    // Proxy is map of proxy servers configuration
    // Required
    Proxy map[string]*ProxyConfigurationServerSpec `json:"proxy,omitempty" yaml:"proxy,omitempty" bson:"proxy,omitempty"`
    // NoProxy is list of IP, hosts, cidr blocks
    //+optional
    NoProxy []string `json:"noProxy,omitempty" yaml:"noProxy,omitempty" bson:"noProxy,omitempty"`
}

type ProxyServerSpec

ProxyServerSpec defines spec for proxy server

type ProxyServerSpec struct {
    ProxyConfigSecretRef *string  `json:"proxyConfigSecretRef,omitempty" yaml:"proxyConfigSecretRef,omitempty"`
    NoProxy              []string `json:"noProxy,omitempty" yaml:"noProxy,omitempty"`
}

type RegisterNode

RegisterNode entity to register or unregister from the cluster. Can be used for node or master hosts.

type RegisterNode struct {
    //name from the location specification
    LocationRef string `json:"locationRef" yaml:"locationRef"`
    //name from the instance group specification
    InstanceGroupRef string `json:"instanceGroupRef" yaml:"instanceGroupRef"`
    // host IP address
    Address string `json:"address" yaml:"address"`
}

type RemoveCommand

RemoveCommand specifies the command to remove an existing node from the location state.

type RemoveCommand struct {
    // NodeOrdinal is an ordinal within group.
    NodeOrdinal int64 `json:"nodeOrdinal" yaml:"nodeOrdinal"`
    // Command is a command to be executed to init a node.
    Command string `json:"command" yaml:"command"`
}

type RepositoryType

RepositoryType defines repository type

type RepositoryType string

type ResourceID

ResourceID is a Resource ID

type ResourceID string

type ResourceState

ResourceState contains deployment resource state

type ResourceState struct {
    ID                ResourceID `json:"id" yaml:"id"`
    Name              string     `json:"name" yaml:"name"`
    ProvisioningState string     `json:"provisioningState" yaml:"provisioningState"`
    StatusCode        string     `json:"statusCode" yaml:"statusCode"`
}

type RoleRef

RoleRef contains information that points to the role being used

type RoleRef struct {
    // Kind of the referred role
    // 1. currently "GlobalRole" and "SpaceRole" are supported
    // 2. "GlobalRole" kind ref may be in a GlobalRoleBinding or in a SpaceRoleBinding
    // 3. "SpaceRole" kind ref may only be in a SpaceRoleBinding
    Kind string `json:"kind" yaml:"kind"`
    // Name of the referred role
    Name string `json:"name" yaml:"name"`
}

type SSHPrivateKeySpec

SSHPrivateKeySpec is a spec for SSH Private Key.

type SSHPrivateKeySpec struct {
    Fingerprint   string `json:"fingerprint" yaml:"fingerprint"`
    SSHPrivateKey string `json:"sshPrivateKey" yaml:"sshPrivateKey"`
}

type SSHPublicKeySpec

SSHPublicKeySpec is a spec for SSH Key.

type SSHPublicKeySpec struct {
    Fingerprint  string `json:"fingerprint" yaml:"fingerprint"`
    SSHPublicKey string `json:"sshPublicKey" yaml:"sshPublicKey"`
}

type ScheduleInterval

ScheduleInterval - interval for scheduler

type ScheduleInterval struct {
    Interval int `json:"interval" yaml:"interval" bson:"interval"`
    Number   int `json:"number" yaml:"number" bson:"number"`
}

type Secret

Secret is a definition of Secret.

type Secret struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    Spec   SecretSpec   `json:"spec" yaml:"spec"`
    Status SecretStatus `json:"status" yaml:"status"`
    Owner  *Owner       `json:"-" yaml:"-"`
}

type SecretListResult

SecretListResult holds secrets.

type SecretListResult struct {
    Total int      `json:"total" yaml:"total"`
    Items []Secret `json:"items" yaml:"items"`
}

type SecretSpec

SecretSpec is a definition of secret.

type SecretSpec struct {
    // AwsAPIAccessKey is a definition of AWS Access Key and Secret.
    AwsAPIAccessKey *AWSAPIAccessKeySpec `json:"awsApiAccessKey,omitempty" yaml:"awsApiAccessKey,omitempty" bson:"awsApiAccessKey,omitempty"`
    // AzureAPIAccessKey is a definition of Azure credentials
    AzureAPIAccessKey *AzureAPIAccessKey `json:"azureApiAccessKey,omitempty" yaml:"azureApiAccessKey,omitempty" bson:"azureApiAccessKey,omitempty"`
    // GCPAPIAccessKey is a definition of GCP credentials
    GCPAPIAccessKey *GCPAPIAccessKeySpec `json:"gcpApiAccessKey,omitempty" yaml:"gcpApiAccessKey,omitempty" bson:"gcpApiAccessKey,omitempty"`
    // VCDAPIAccessKey is a definition of VMware vCD credentials
    VCDAPIAccessKey *VCDAPIAccessKeySpec `json:"vcdApi,omitempty" yaml:"vcdApi,omitempty" bson:"vcdApi,omitempty"`
    // VSphereAccessKey is a definition of vSphere credentials
    VSphereAccessKey *VSphereAPISpec `json:"vSphereApi,omitempty" yaml:"vSphereApi,omitempty" bson:"vSphereApi,omitempty"`

    SSHPrivateKeySpec *SSHPrivateKeySpec `json:"sshPrivateKeySpec,omitempty" yaml:"sshPrivateKeySpec,omitempty" bson:"sshPrivateKeySpec,omitempty"`
    SSHPublicKeySpec  *SSHPublicKeySpec  `json:"sshKey,omitempty" yaml:"sshKey,omitempty" bson:"sshKey,omitempty"`

    UsernamePasswordSpec *UsernamePasswordSpec `json:"usernamePassword,omitempty" yaml:"usernamePassword,omitempty" bson:"usernamePassword,omitempty"`

    // SpotinstAccessToken is a spec of Spotinst access token.
    //+optional
    SpotinstAccessToken *SpotinstAccessTokenSpec `json:"spotinstAccessToken,omitempty" yaml:"spotinstAccessToken,omitempty" bson:"spotinstAccessToken,omitempty"`

    // DockerRegistry is a definition of Docker Registry credentials
    DockerRegistry *DockerRegistrySecretSpec `json:"dockerRegistry,omitempty" yaml:"dockerRegistry,omitempty" bson:"dockerRegistry,omitempty"`

    // BinaryRegistry is a definition of Docker Registry credentials
    BinaryRegistry *BinaryRegistrySecretSpec `json:"binaryRegistry,omitempty" yaml:"binaryRegistry,omitempty" bson:"binaryRegistry,omitempty"`

    //ProxyConfiguration is configuration for proxy server
    ProxyConfiguration *ProxyConfigurationSpec `json:"proxyConfiguration,omitempty" yaml:"proxyConfiguration,omitempty" bson:"proxyConfiguration,omitempty"`

    // Kubeconfig is a definition of secret used to access Kubernetes API
    Kubeconfig *KubeconfigSpec `json:"kubeconfig,omitempty" yaml:"kubeconfig,omitempty" bson:"kubeconfig,omitempty"`
}

type SecretStatus

SecretStatus holds status of the secret.

type SecretStatus struct {
    Status string `json:"status,omitempty" yaml:"status,omitempty"`
}

type SecretStoreSpec

SecretStoreSpec is a spec of secret storage.

type SecretStoreSpec struct {
    Baremetal *BaremetalSecretStoreSpec `json:"baremetal,omitempty" yaml:"baremetal,omitempty"`
    AwsS3     *AWSS3SecretStoreSpec     `json:"awsS3,omitempty" yaml:"awsS3,omitempty"`
    AzureAS   *AzureASSecretStoreSpec   `json:"azureAS,omitempty" yaml:"azureAS,omitempty"`
    GoogleGCS *GoogleGCSSecretStoreSpec `json:"googleGCS,omitempty" yaml:"googleGCS,omitempty"`
    // VcdCatalog configuration of a VCD as a Kublr secret store
    //+deprecated use KublrAgent
    VcdCatalog *VCDCatalogSecretStoreSpec `json:"vcdCatalog,omitempty" yaml:"vcdCatalog,omitempty"`
    // VSphereDatastore configuration of a vSphere datastore as a Kublr secret store
    //+deprecated use KublrAgent
    VSphereDatastore *VSphereDatastoreSecretStoreSpec `json:"vSphereDatastore,omitempty" yaml:"vSphereDatastore,omitempty"`
    KublrAgent       *KublrAgentSecretStoreSpec       `json:"kublrAgent,omitempty" yaml:"kublrAgent,omitempty"`
}

type SelfHostedClusterLogSinkSpec

SelfHostedClusterLogSinkSpec is a spec for self-hosted cluster wide logging.

type SelfHostedClusterLogSinkSpec struct {
    // Enabled indicates if this sink is enabled.
    Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
    // Persistent indicates if this sink is persistent.
    Persistent *bool `json:"persistent,omitempty" yaml:"persistent,omitempty"`
    // Size defines size of the storage, string, must follow k8s resource.Quantity rules.
    Size *string `json:"size,omitempty" yaml:"size,omitempty"`
    // MasterNodes is the number of master nodes that control the cluster.
    // number of master nodes is must not be 2, need to use 1 or 3 and more
    MasterNodes *int `json:"masterNodes,omitempty" yaml:"masterNodes,omitempty" bson:"masterNodes"`
    // DataNodes is the number of data nodes that hold data and perform data related operations such as CRUD, search, and aggregations.
    DataNodes *int `json:"dataNodes,omitempty" yaml:"dataNodes,omitempty" bson:"dataNodes"`
    // ClientNodes is the number of client nodes which serve client requests.
    ClientNodes *int `json:"clientNodes,omitempty" yaml:"clientNodes,omitempty" bson:"clientNodes"`
    // RetentionPeriodDays represents how old (in days) should be an Elasticsearch index to be deleted by Curator
    RetentionPeriodDays *int `json:"retentionPeriodDays,omitempty" yaml:"retentionPeriodDays,omitempty" bson:"retentionPeriodDays,omitempty"`
}

type SnapshotStatus

SnapshotStatus represent status of the snapshot.

type SnapshotStatus string

type SnapshotTag

SnapshotTag - type for tag

type SnapshotTag struct {
    Name  string `json:"name" yaml:"name" bson:"name"`
    Value string `json:"value" yaml:"value" bson:"value"`
}

type SourceDescr

SourceDescr specification of a binary file source

type SourceDescr struct {
    TgzURL    *string `json:"tgzUrl,omitempty" yaml:"tgzUrl,omitempty"`
    SecretRef *string `json:"secretRef,omitempty" yaml:"secretRef,omitempty"`

    // Username and Password fields are used only if deprecated KublrAgentRepositoryUsername and
    // KublrAgentRepositoryPassword fields are used in the cluster spec
    Username *string `json:"username,omitempty" yaml:"username,omitempty"`
    Password *string `json:"password,omitempty" yaml:"password,omitempty"`
}

type Space

Space is environment that delimits the scope of cluster.

type Space struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
}

type SpaceListResult

SpaceListResult is a collection of Space

type SpaceListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roles
    Items []Space `json:"items" yaml:"items"`
}

type SpaceRole

SpaceRole is in space scope, must be in a specific space

type SpaceRole struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // Rules holds all the PolicyRules for this Role
    Rules []PolicyRule `json:"rules" yaml:"rules"`
}

type SpaceRoleBinding

SpaceRoleBinding is in space role, must be in a specific space

type SpaceRoleBinding struct {
    Entity `json:",inline" yaml:",inline" bson:",inline"`
    // RoleRef can reference a SpaceRole in the current space or a GlobalRole in the global space.
    RoleRef RoleRef `json:"roleRef" yaml:"roleRef"`
    // Subjects holds references to the objects the role applies to.
    Subjects []Subject `json:"subjects" yaml:"subjects"`
}

type SpaceRoleBindingListResult

SpaceRoleBindingListResult is a collection of SpaceRoleBindings

type SpaceRoleBindingListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roleBindings
    Items []SpaceRoleBinding `json:"items" yaml:"items"`
}

type SpaceRoleListResult

SpaceRoleListResult is a collection of SpaceRoles

type SpaceRoleListResult struct {
    Total int `json:"total" yaml:"total"`
    // Items is a list of roles
    Items []SpaceRole `json:"items" yaml:"items"`
}

type SpotinstAccessTokenSpec

SpotinstAccessTokenSpec is a spec for Spotinst Access Token.

type SpotinstAccessTokenSpec struct {
    AccountID   string `json:"accountId" yaml:"accountId" bson:"accountId"`
    AccessToken string `json:"accessToken" yaml:"accessToken" bson:"accessToken"`
}

type StringMap

StringMap is a generic map with string keys

type StringMap map[string]interface{}

type StubDomainSpec

StubDomainSpec is a spec of stub domain to delegate dns zone

type StubDomainSpec struct {
    DNS     *string   `json:"dns,omitempty" yaml:"dns,omitempty" bson:"dns"`
    Servers []*string `json:"servers,omitempty" yaml:"servers,omitempty" bson:"servers"`
}

type Subject

Subject contains a reference to the object or user identities a role binding applies to. This can either hold a direct API object reference, or a value for non-objects such as user and group names.

type Subject struct {
    // Kind of object being referenced. Values defined are "User", "Group".
    // If the Authorizer does not recognized the kind value, the Authorizer should report an error.
    Kind string `json:"kind" yaml:"kind"`
    // Name of the object being referenced.
    Name string `json:"name" yaml:"name"`
}

type SystemFeatureSpec

SystemFeatureSpec is a spec for kublr-system feature.

type SystemFeatureSpec struct {
    // Chart is a helm package
    Chart *Chart `json:"chart,omitempty" yaml:"chart,omitempty"`
    // Values is a helm chart values
    Values *ChartValues `json:"values,omitempty" yaml:"values,omitempty"`
    // LocalPathProvisioner is configuration for local host path provisioner
    LocalPathProvisioner *LocalPathProvisioner `json:"localPathProvisioner,omitempty" yaml:"localPathProvisioner,omitempty" bson:"localPathProvisioner,omitempty"`
}

type TerraformOperation

TerraformOperation represents Terraform Operation

type TerraformOperation struct {
    ID     string                 `json:"id" yaml:"id"`
    Type   TerraformOperationType `json:"type" yaml:"type"`
    Status string                 `json:"status" yaml:"status"`
}

type TerraformOperationType

TerraformOperationType is a Terraform Operation Type

type TerraformOperationType string

type TerraformState

TerraformState represents state of Terraform

type TerraformState struct {
    ActiveTerraformOperation *TerraformOperation `json:"activeTerraformOperation,omitempty" yaml:"activeTerraformOperation,omitempty" bson:"activeTerraformOperation,omitempty"`
    State                    string              `json:"state,omitempty" yaml:"state,omitempty"  bson:"state,omitempty"`
}

type Type

Type represents the stored type of Int32OrString.

type Type int

type TypeMeta

TypeMeta describes an individual object in an API response or request with strings representing the type of the object and its API schema version. Structures that are versioned or persisted should inline TypeMeta.

type TypeMeta struct {
    // Kind is a string value representing the REST resource this object represents.
    // Servers may infer this from the endpoint the client submits requests to.
    Kind string `valid:"alphanum,required" json:"kind,omitempty" yaml:"kind,omitempty"`

    // 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.
    APIVersion string `json:"apiVersion,omitempty" yaml:"apiVersion,omitempty"`
}

type UpdateStage

UpdateStage is an update stages enum

type UpdateStage string

type User

User holds the information about the user. Information about the user is obtained from the request authentication token

type User struct {
    ID string `json:"id,omitempty" yaml:"id,omitempty"`

    // Username must be unique
    Username string `json:"username,omitempty" yaml:"username,omitempty"`

    // FirstName, may be empty
    FirstName string `json:"firstName,omitempty" yaml:"firstName,omitempty"`

    // LastName, may be empty
    LastName string `json:"lastName,omitempty" yaml:"lastName,omitempty"`

    // Email, may be empty
    Email string `json:"email,omitempty" yaml:"email,omitempty"`

    // Roles list of roles
    Roles []string `json:"roles,omitempty" yaml:"roles,omitempty"`

    // Groups list of groups
    Groups []string `json:"groups,omitempty" yaml:"groups,omitempty"`
}

type UsernamePasswordSpec

UsernamePasswordSpec is a spec for Username/Password secret type.

type UsernamePasswordSpec struct {
    Username string `json:"username" yaml:"username" bson:"username"`
    Password string `json:"password" yaml:"password" bson:"password"`
}

type VCDAPIAccessKeySpec

VCDAPIAccessKeySpec VMware vCloud Director (vCD) Secret

type VCDAPIAccessKeySpec struct {
    // URL is the URL for the vCloud Director API endpoint. e.g. https://server.domain.com/api.
    // Required
    URL string `json:"url" yaml:"url" bson:"url"`
    // Org is the vCloud Director Org on which to run API operations.
    // Required
    Org string `json:"org" yaml:"org" bson:"org"`
    // Username is the username for vCloud Director API operations.
    // Required
    Username string `json:"username" yaml:"username" bson:"username"`
    // Password is the password for vCloud Director API operations.
    // Required
    Password string `json:"password" yaml:"password" bson:"password"`
    // Insecure can be set to true to disable SSL certificate verification. Default value is false
    Insecure bool `json:"insecure" yaml:"insecure" bson:"insecure"`
}

type VCDBootDiskSpec

VCDBootDiskSpec - disk spec

type VCDBootDiskSpec struct {
    // SizeGb is a disk size (in Gb)
    // Required
    SizeGb *int `json:"sizeGb,omitempty" yaml:"sizeGb,omitempty"`
    // Iops (Optional) IOPS request
    Iops *int `json:"iops,omitempty" yaml:"iops,omitempty"`
    // BusType (Optional) is a disk bus type. Must be one of:
    //  - 'ide'
    //  - 'parallel'
    //  - 'sas'
    //  - 'paravirtual'
    //  - 'sata'
    // If omitted - 'paravirtual' will be used
    BusType *string `json:"busType,omitempty" yaml:"busType,omitempty"`
    // StorageProfile (Optional) is the storage profile name to be used for Disk storage.
    // If omitted - default VDC storage profile will be used
    StorageProfile *string `json:"storageProfile,omitempty" yaml:"storageProfile,omitempty"`
    // BusNumber (Optional) is the number of the SCSI or IDE controller itself
    // If omitted - 0 will be used
    BusNumber *int `json:"busNumber,omitempty" yaml:"busNumber,omitempty"`
    // UnitNumber (Optional) is the device number on the SCSI or IDE controller of the disk
    // If omitted - 0 will be used
    UnitNumber *int `json:"unitNumber,omitempty" yaml:"unitNumber,omitempty"`
}

type VCDCatalogSecretStoreSpec

VCDCatalogSecretStoreSpec is a spec for secret store in Azure Account Storage.

type VCDCatalogSecretStoreSpec struct {
    // LocationRef is a reference to Location
    LocationRef string `json:"locationRef" yaml:"locationRef"`
    // CatalogName is a name of Catalog
    CatalogName *string `json:"catalogName,omitempty" yaml:"catalogName,omitempty"`
    // CatalogPath is a Catalog path
    CatalogPath *string `json:"catalogPath,omitempty" yaml:"catalogPath,omitempty"`
}

type VCDClusterAvailabilityEnum

VCDClusterAvailabilityEnum is enum for cluster availability

type VCDClusterAvailabilityEnum string

type VCDDataDiskSpec

VCDDataDiskSpec - disk spec

type VCDDataDiskSpec struct {
    // SizeGb is a disk size (in Gb)
    // Required
    SizeGb *int `json:"sizeGb,omitempty" yaml:"sizeGb,omitempty"`
    // Iops (Optional) IOPS request
    Iops *int `json:"iops,omitempty" yaml:"iops,omitempty"`
    // BusType is a disk bus type. Must be one of:
    //  - 'IDE'
    //  - 'SCSI'
    //  - 'SATA'
    // If omitted - SCSI bus will be used
    //+optional
    BusType *string `json:"busType,omitempty" yaml:"busType,omitempty"`
    // BusSubType is a disk bus subtype. Must be one of:
    //  - '' IDE, requires IDE busType
    //  - 'buslogic' BusLogic Parallel SCSI controller, requires SCSI busType
    //  - 'lsilogic' LSI Logic Parallel SCSI controller, requires SCSI busType
    //  - 'lsilogicsas' LSI Logic SAS SCSI controller, requires SCSI busType
    //  - 'VirtualSCSI' Paravirtual SCSI controller, requires SCSI busType
    //  - 'vmware.sata.ahci'  SATA controller, requires SATA busType
    // If omitted - Paravirtual SCSI controller will be used
    //+optional
    BusSubType *string `json:"busSubType,omitempty" yaml:"busSubType,omitempty"`
    // StorageProfile is the storage profile name to be used for Disk storage.
    // If omitted - default VDC storage profile will be used
    //+optional
    StorageProfile *string `json:"storageProfile,omitempty" yaml:"storageProfile,omitempty"`
}

type VCDInstanceGroupLocationSpec

VCDInstanceGroupLocationSpec - instances group location

type VCDInstanceGroupLocationSpec struct {
    // LoadBalancerAddress is a Load balancing address for K8S API Server.
    // Only mandatory for multi-master configurations.
    //+optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty"`
    // IPAddressAllocationMode is an IP Address allocation mode (i.e. MANUAL, POOL, DHCP).
    // If ommitted - POOL will be used.
    //+optional
    IPAddressAllocationMode *VCDSIPAddressAllocationMode `json:"ipAddressAllocationMode,omitempty" yaml:"ipAddressAllocationMode,omitempty"`
    // IPAddresses  is a list of IP addresses for VM's in current group location.
    // Only mandatory for MANUAL ipAddressAllocationMode.
    //+optional
    IPAddresses []*string `json:"ipAddresses,omitempty" yaml:"ipAddresses,omitempty"`
    // VM is a VM template
    // Required
    VM *VCDVirtualMachineTemplate `json:"vm,omitempty" yaml:"vm,omitempty"`
}

type VCDLoadBalancerRuleSpec

VCDLoadBalancerRuleSpec is spec that describes rules for load balancer

type VCDLoadBalancerRuleSpec struct {
    // ExternalIPs is a list of external IPs from edge gateway, that will be used
    //+optional
    ExternalIPs []string `json:"externalIPs,omitempty" yaml:"externalIPs,omitempty"`
    // Groups is location groups that will be used for load balancing
    // Required
    Groups []string `json:"groups,omitempty" yaml:"groups,omitempty"`
    // Ports is ports on load balancer IP and external IPs that will be used
    // Required
    Ports []int `json:"ports,omitempty" yaml:"ports,omitempty"`
    // TargetPorts is ports on host machines that will be used
    // Required
    TargetPorts []int `json:"targetPorts,omitempty" yaml:"targetPorts,omitempty"`
    // InternalNAT is flag for creating DNAT rule for internal network
    //+optional
    InternalNAT *bool `json:"internalNAT,omitempty" yaml:"internalNAT,omitempty"`
}

type VCDLocationOrgNetworkSpec

VCDLocationOrgNetworkSpec - holds network location

type VCDLocationOrgNetworkSpec struct {
    // NetworkType is type of organization network
    // routed, isolated, provided
    // Required
    Type *VCDOrgNetworkTypeEnum `json:"type,omitempty" yaml:"type,omitempty"`
    // NetworkName is name for org network
    // Required
    Name *string `json:"name,omitempty" yaml:"name,omitempty"`
    // CidrBlock is an IP address range for this vApp Network.
    // If omitted - default will be assigned.
    //+optional
    CidrBlock *string `json:"cidrBlock,omitempty" yaml:"cidrBlock,omitempty"`
    // Gateway is a gateway address of the vApp Network.
    // If omitted - default will be assigned.
    //+optional
    Gateway *string `json:"gateway,omitempty" yaml:"gateway,omitempty"`
    // StaticIPRanges is an IP range for static pool allocation in the network.
    // If omitted - default will be assigned.
    //+optional
    StaticIPRanges []*IPRangeSpec `json:"staticIpRanges,omitempty" yaml:"staticIpRanges,omitempty"`
    // DhcpIPRanges is an IP range for DHCP server
    // If omitted - no DHCP server will be configured.
    //+optional
    DhcpIPRanges []*IPRangeSpec `json:"dhcpIpRanges,omitempty" yaml:"dhcpIpRanges,omitempty"`
    // DNSServers is a list of DNS servers for vApp Network. At least two DNS servers must be specified.
    // If omitted - 8.8.8.8, 8.8.4.4 will be used
    //+optional
    DNSServers []*string `json:"dnsServers,omitempty" yaml:"dnsServers,omitempty"`
    // InternalDNSSuffix is org network dns suffix
    //+optional
    InternalDNSSuffix *string `json:"internalDnsSuffix,omitempty" yaml:"internalDnsSuffix,omitempty"`
    // DisableDefaultSNAT is just for new created org network, if set - does not create SNAT rule
    //+optional
    DisableDefaultSNAT *bool `json:"disableDefaultSNAT,omitempty" yaml:"disableDefaultSNAT,omitempty"`
    // DisableDefaultIngress is just for new created org network
    //+optional
    DisableDefaultIngress *bool `json:"disableDefaultIngress,omitempty" yaml:"disableDefaultIngress,omitempty"`
}

type VCDLocationSpec

VCDLocationSpec holds location specification for VMware vCloud Director installations.

type VCDLocationSpec struct {
    // VCDApiSecretRef is a reference to the VCDAPIAccessSpec secret object.
    // Required
    VCDApiSecretRef *string `json:"vcdApiSecretRef,omitempty" yaml:"vcdApiSecretRef,omitempty"`
    // Org is  a vCloud Director Organization
    // If omitted, it will be populated automatically based from the corresponding secret.
    // If populated, it must be the same as the org value in the corresponding secret.
    Org *string `json:"org,omitempty" yaml:"org,omitempty"`
    // Vdc Virtual Datacenter Name.
    // Required
    Vdc *string `json:"vdc,omitempty" yaml:"vdc,omitempty"`
    // OrgNetwork is a org Network Name.
    // If provided - cluster vApp will be directly connected to this Org Network
    // If omitted - new vAppNetwork will be created.
    //+optional
    //+deprecated
    OrgNetwork *string `json:"orgNetwork,omitempty" yaml:"orgNetwork,omitempty"`
    // VOrgNetwork is a Org Network, provided or
    // If omitted, and no orgNetwork is provided - default vAppNetwork will be created
    //+optional
    VOrgNetwork *VCDLocationOrgNetworkSpec `json:"vOrgNetwork,omitempty" yaml:"vOrgNetwork,omitempty"`
    // VAppNetwork is a vApp Network.
    // If omitted, and no orgNetwork is provided - default vAppNetwork will be created
    //+optional
    VAppNetwork *VCDLocationVAPPNetworkSpec `json:"vAppNetwork,omitempty" yaml:"vAppNetwork,omitempty"`
    // EdgeGateway is IP from Edge Gateway that will be used by cluster
    // TODO we can delete in future, when we can load it from vCloud in Generator
    // Required to connect org network to this gateway
    EdgeGateway *string `json:"edgeGateway,omitempty" yaml:"edgeGateway,omitempty"`

    // EdgeGatewayNetwork is Network name from Edge Gateway that will be used by cluster
    // TODO we can delete in future, when we can load it from vCloud in Generator
    // Required for SNAT rules
    EdgeGatewayNetwork *string `json:"edgeGatewayNetwork,omitempty" yaml:"edgeGatewayNetwork,omitempty"`

    // EdgeGatewayNetworkIP is IP from Edge Gateway Network that will be used by cluster
    // Required for SNAT rules
    EdgeGatewayNetworkIP *string `json:"edgeGatewayNetworkIP,omitempty" yaml:"edgeGatewayNetworkIP,omitempty"`

    // MastersExternalSSHStartPort is a start port for ssh to masters
    //+optional
    MastersExternalSSHStartPort *int `json:"mastersExternalSSHStartPort,omitempty" yaml:"mastersExternalSSHStartPort,omitempty"`
    // MastersLoadBalancerExternalIPs is set of IPs from edge gateway that will be used for for k8s-api and ssh
    //+optional
    MastersLoadBalancerExternalIPs []string `json:"mastersLoadBalancerExternalIPs,omitempty" yaml:"mastersLoadBalancerExternalIPs,omitempty"`

    // LoadBalancerIP is an IP from vOrg network that will be used as load balancer.
    // It should be from static pool.
    // If not defined, kublr will set it automatically.
    //+optional
    LoadBalancerIP *string `json:"loadBalancerIP,omitempty" yaml:"loadBalancerIP,omitempty"`

    // LoadBalancerRules is rules for load balancers
    //+optional
    LoadBalancerRules map[string]*VCDLoadBalancerRuleSpec `json:"loadBalancerRules,omitempty" yaml:"loadBalancerRules,omitempty"`
}

type VCDLocationState

VCDLocationState represents state of VMware vCD Location.

type VCDLocationState struct {
    PrepareToCreateDeployment bool            `json:"prepareToCreateDeployment" yaml:"prepareToCreateDeployment" bson:"prepareToCreateDeployment"`
    TerraformState            *TerraformState `json:"terraformState,omitempty" yaml:"terraformState,omitempty" bson:"terraformState,omitempty"`
}

type VCDLocationVAPPNetworkSpec

VCDLocationVAPPNetworkSpec - holds network location location

type VCDLocationVAPPNetworkSpec struct {
    // ParentNetwork is an Org Network to connect the vApp network to.
    // Required
    ParentNetwork *string `json:"parentNetwork,omitempty" yaml:"parentNetwork,omitempty"`
    // CidrBlock is an IP address range for this vApp Network.
    // If omitted - default will be assigned.
    //+optional
    CidrBlock *string `json:"cidrBlock,omitempty" yaml:"cidrBlock,omitempty"`
    // Gateway is a gateway address of the vApp Network.
    // If omitted - default will be assigned.
    //+optional
    Gateway *string `json:"gateway,omitempty" yaml:"gateway,omitempty"`
    // Netmask is a netmask address of the vApp network.
    // If omitted - default will be assigned.
    // TODO delete
    //+optional
    Netmask *string `json:"network,omitempty" yaml:"network,omitempty"`
    // StaticIPRange is an IP range for static pool allocation in the network.
    // If omitted - default will be assigned.
    //+optional
    StaticIPRange *IPRangeSpec `json:"staticIpRange,omitempty" yaml:"staticIpRange,omitempty"`
    // DhcpIPRange is an IP range for DHCP server
    // If omitted - no DHCP server will be configured.
    //+optional
    DhcpIPRange *IPRangeSpec `json:"dhcpIpRange,omitempty" yaml:"dhcpIpRange,omitempty"`
    // DNSServers is a list of DNS servers for vApp Network. At least two DNS servers must be specified.
    // If omitted - 8.8.8.8, 8.8.4.4 will be used
    //+optional
    DNSServers []*string `json:"dnsServers,omitempty" yaml:"dnsServers,omitempty"`
}

type VCDOrgNetworkTypeEnum

VCDOrgNetworkTypeEnum is enum for org network type

type VCDOrgNetworkTypeEnum string

type VCDSIPAddressAllocationMode

VCDSIPAddressAllocationMode - holds VMWare IP location mode

type VCDSIPAddressAllocationMode string

type VCDVAPPTemplateSpec

VCDVAPPTemplateSpec - template spec for VMware app.

type VCDVAPPTemplateSpec struct {
    // CatalogName is the catalog name in which to find the given vApp Template.
    // Required
    CatalogName *string `json:"catalogName,omitempty" yaml:"catalogName,omitempty"`
    // TemplateName is the name of the vApp Template to use.
    // Required
    TemplateName *string `json:"templateName,omitempty" yaml:"templateName,omitempty"`
}

type VCDVirtualMachineTemplate

VCDVirtualMachineTemplate - template for VMware virtual machines

type VCDVirtualMachineTemplate struct {
    // Template is a vApp template
    //Required
    Template *VCDVAPPTemplateSpec `json:"template,omitempty" yaml:"template,omitempty"`
    // Cpus is the number of virtual CPUs to allocate to the VM.
    // Required
    Cpus *int `json:"cpus,omitempty" yaml:"cpus,omitempty"`
    // MemoryMb is the amount of RAM (in MB) to allocate to the VM.
    // Required
    MemoryMb *int `json:"memoryMb,omitempty" yaml:"memoryMb,omitempty"`
    // StorageProfile is the storage profile name to be used for VMs storage.
    // If omitted - default VDC storage profile will be used
    //+optional
    StorageProfile *string `json:"storageProfile,omitempty" yaml:"storageProfile,omitempty"`
    // MasterDataDisk is a Master Data Disk.
    // If omitted - default will be created
    //+optional
    MasterDataDisk *VCDDataDiskSpec `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty"`
    // BootDisk is a Boot Data Disk.
    // If omitted - values from VM Template will be used.
    //+optional
    BootDisk *VCDBootDiskSpec `json:"bootDisk,omitempty" yaml:"bootDisk,omitempty"`
}

type VSphereAPISpec

VSphereAPISpec - VSphere Api Secret

type VSphereAPISpec struct {
    // URL is the URL for the vSphere API. e.g. https://server.domain.com/
    // Required
    URL string `json:"url" yaml:"url" bson:"url"`
    // Username for vSphere API operations.
    // Required
    Username string `json:"username" yaml:"username" bson:"username"`
    // Password for vSphere API operations.
    // Required
    Password string `json:"password" yaml:"password" bson:"password"`
    // Insecure can be set to true to disable SSL certificate verification. Default value is false
    Insecure bool `json:"insecure" yaml:"insecure" bson:"insecure"`
}

type VSphereDatastoreSecretStoreSpec

VSphereDatastoreSecretStoreSpec is a spec for secret store for VMWare vSphere installations.

type VSphereDatastoreSecretStoreSpec struct {
    // LocationRef is a reference to Location
    LocationRef string `json:"locationRef" yaml:"locationRef" bson:"locationRef"`
    // DatastoreName is a name of datastore if type is "datastore"
    DatastoreName *string `json:"datastoreName,omitempty" yaml:"datastoreName,omitempty" bson:"datastoreName,omitempty"`
    // DatastorePath is a datastore folder name
    DatastorePath *string `json:"datastorePath,omitempty" yaml:"datastorePath,omitempty" bson:"datastorePath,omitempty"`
}

type VSphereDiskSpec

VSphereDiskSpec represents VMWare vSphere disk specification

type VSphereDiskSpec struct {
    // SizeGb is a disk size (in Gb)
    //+optional
    SizeGb *int `json:"sizeGb,omitempty" yaml:"sizeGb,omitempty" bson:"sizeGb,omitempty"`
    // DataStoreName is data store name in the vSphere
    //+optional
    DataStoreName *string `json:"dataStoreName,omitempty" yaml:"dataStoreName,omitempty" bson:"dataStoreName,omitempty"`
    // EagerlyScrub - If set to true, the disk space is zeroed out on VM creation.
    // This will delay the creation of the disk or virtual machine. Cannot be set to true when thin_provisioned is true.
    // See the section on picking a disk type.
    // Default: the value from vm template will be used
    EagerlyScrub *bool `json:"eagerlyScrub,omitempty" yaml:"eagerlyScrub,omitempty" bson:"eagerlyScrub,omitempty"`
    // ThinProvisioned - (Optional) If true, this disk is thin provisioned, with space for the file being allocated on an as-needed basis.
    // Cannot be set to true when eagerly_scrub is true. See the section on picking a disk type.
    // Default: the value from vm template will be used
    ThinProvisioned *bool `json:"thinProvisioned,omitempty" yaml:"thinProvisioned,omitempty" bson:"thinProvisioned,omitempty"`
    // IoLimit is the upper limit of IOPS that this disk can use. The default is no limit.
    //+optional
    IoLimit *int `json:"ioLimit,omitempty" yaml:"ioLimit,omitempty" bson:"ioLimit,omitempty"`
    // IoReservation is the I/O reservation (guarantee) that this disk has, in IOPS. The default is no reservation.
    //+optional
    IoReservation *int `json:"ioReservation,omitempty" yaml:"ioReservation,omitempty" bson:"ioReservation,omitempty"`
}

type VSphereInstanceGroupLocationSpec

VSphereInstanceGroupLocationSpec - spec for instance group location

type VSphereInstanceGroupLocationSpec struct {
    // InitType is the VM initialization type
    // Values can be 'vm-tools', 'cloud-init' and 'ovf-cloud-init'
    // Required
    InitType *string `json:"initType,omitempty" yaml:"initType,omitempty" bson:"initType"`
    // CloudInitExtras is a basic cloud-init config, this config will be extended to make kublr work
    //+optional
    //
    // For example, to assign a password for default user:
    //
    // kind: Cluster
    // ....
    // spec:
    //   ...
    //   master:
    //   locations:
    //   - vSphere:
    //       initType: cloud-init
    //       cloudInitExtras:
    //         password: atomic
    //         ssh_pwauth: true
    //         chpasswd:
    //           expire: false
    //
    // Since version 1.20
    CloudInitExtras interface{} `json:"cloudInitExtras,omitempty" yaml:"cloudInitExtras,omitempty" bson:"cloudInitExtras,omitempty"`
    // LoadBalancerAddress is a Load balancing address for K8S API Server.
    //+optional
    LoadBalancerAddress *string `json:"loadBalancerAddress,omitempty" yaml:"loadBalancerAddress,omitempty" bson:"loadBalancerAddress,omitempty"`
    // IPAddressAllocationMode is an IP Address allocation mode (i.e. MANUAL, DHCP).
    // If ommitted - DHCP will be used.
    //+optional
    IPAddressAllocationMode *string `json:"ipAddressAllocationMode,omitempty" yaml:"ipAddressAllocationMode,omitempty" bson:"ipAddressAllocationMode,omitempty"`
    // IPAddresses  is a list of IP addresses for VM's in current group location.
    // Only mandatory for MANUAL ipAddressAllocationMode.
    //+optional
    IPAddresses []*string `json:"ipAddresses,omitempty" yaml:"ipAddresses,omitempty" bson:"ipAddresses,omitempty"`
    // The VM configuration
    // Required
    VM *VSphereVMInstanceSpec `json:"vm,omitempty" yaml:"vm,omitempty" bson:"vm,omitempty"`
    // ResourcePool is a name of the resource pool used by this instance group.
    //+optional
    //+deprecated use ResourcePools instead
    ResourcePool *string `json:"resourcePool,omitempty" yaml:"resourcePool,omitempty" bson:"resourcePool,omitempty"`
    // ResourcePools is a name of the resource pools used by VM's in current group location.
    //+optional
    ResourcePools []*string `json:"resourcePools,omitempty" yaml:"resourcePools,omitempty" bson:"resourcePools,omitempty"`
    // DataStoreName is a name of the vSphere datastore
    //+optional
    //+deprecated use DataStoreNames instead
    DataStoreName *string `json:"dataStoreName,omitempty" yaml:"dataStoreName,omitempty" bson:"dataStoreName,omitempty"`
    // DataStoreNames is a names of the vSphere datastores used by VM's in current group location.
    //+optional
    DataStoreNames []*string `json:"dataStoreNames,omitempty" yaml:"dataStoreNames,omitempty" bson:"dataStoreNames,omitempty"`
    // DataStoreType is type of data store.
    // If omitted, the default value of 'host' will be used. Values can be 'host' and 'cluster'
    //+optional
    //+deprecated use DataStoreTypes instead
    DataStoreType *string `json:"dataStoreType,omitempty" yaml:"dataStoreType,omitempty" bson:"dataStoreType,omitempty"`
    // DataStoreTypes is types of data stores used by VM's in current group location.
    // If omitted, the default value of 'host' will be used. Values can be 'host' and 'cluster'
    //+optional
    DataStoreTypes []*string `json:"dataStoreTypes,omitempty" yaml:"dataStoreTypes,omitempty" bson:"dataStoreTypes,omitempty"`
    // ClusterName is a name of the vSphere cluster. This field is necessary for the creation anti-affinity rules.
    // If this field is empty, anti-affinity rules will not be created.
    //+optional
    //+deprecated use ClusterNames instead
    ClusterName *string `json:"clusterName,omitempty" yaml:"clusterName,omitempty" bson:"clusterName,omitempty"`
    // ClusterNames is a names of the vSphere clusters of the resource pools used by VM's in current group location.
    // This field is necessary for the creation anti-affinity rules.
    // If this field is empty, anti-affinity rules will not be created.
    //+optional
    ClusterNames []*string `json:"clusterNames,omitempty" yaml:"clusterNames,omitempty" bson:"clusterNames,omitempty"`
    // SSHPublicSecretRef is reference to the secret object containing public SSH key for instance group
    // Required if initType is “vm-tools”
    SSHPublicSecretRef *string `json:"sshPublicSecretRef,omitempty" yaml:"sshPublicSecretRef,omitempty" bson:"sshPublicSecretRef,omitempty"`
    // GuestCredentialsRef is reference to the secret object containing credentials of the guest VM.
    //+optional
    GuestCredentialsRef *string `json:"guestCredentialsRef,omitempty" yaml:"guestCredentialsRef,omitempty" bson:"guestCredentialsRef,omitempty"`
}

type VSphereInstanceTemplate

VSphereInstanceTemplate represents VMWare vSphere instance template

type VSphereInstanceTemplate struct {
    // Source is resource source where templates are stored
    // "datacenter" - templates are stored in the VSphere Data Center
    // "library" - templates are stored in the VSphere Content Library
    // Required
    Source *string `json:"source,omitempty" yaml:"source,omitempty" bson:"source"`
    // TemplateName is the VM template name
    // Required
    TemplateName *string `json:"templateName,omitempty" yaml:"templateName,omitempty" bson:"templateName"`
    // libraryName is the name of VSphere Content Library.
    // The field is required if source is "library"
    //+optional
    LibraryName *string `json:"libraryName,omitempty" yaml:"libraryName,omitempty" bson:"libraryName,omitempty"`
}

type VSphereLocationSpec

VSphereLocationSpec holds location specification for VMWare vSphere installations.

type VSphereLocationSpec struct {
    // VCDApiSecretRef is a reference to the secret object containing vSphere secrets to access
    // Required
    APISecretRef *string `json:"apiSecretRef,omitempty" yaml:"apiSecretRef,omitempty" bson:"apiSecretRef"`
    // Datacenter is the name of the resource pool. This can be a name or path
    // Required
    Datacenter *string `json:"datacenter,omitempty" yaml:"datacenter,omitempty" bson:"datacenter"`
    // NetworkName is a vSphere Network name
    // Required
    NetworkName *string `json:"networkName,omitempty" yaml:"networkName,omitempty" bson:"networkName"`
    // NetworkCidrBlock is an IP address range for this vSphere Network.
    //+optional
    NetworkCidrBlock *string `json:"networkCidrBlock,omitempty" yaml:"networkCidrBlock,omitempty" bson:"networkCidrBlock,omitempty"`
    // ResourcePool is a name of vSphere resource pool.
    //+optional
    ResourcePool *string `json:"resourcePool,omitempty" yaml:"resourcePool,omitempty" bson:"resourcePool,omitempty"`
    // DataStoreName is a name of the vSphere datastore
    //+optional
    DataStoreName *string `json:"dataStoreName,omitempty" yaml:"dataStoreName,omitempty" bson:"dataStoreName,omitempty"`
    // DataStoreType is type of data store.
    // If omitted, the default value of 'host' will be used. Values can be 'host' and 'cluster'
    //+optional
    DataStoreType *string `json:"dataStoreType,omitempty" yaml:"dataStoreType,omitempty" bson:"dataStoreType,omitempty"`
    // ClusterName is a name of the vSphere cluster. This field is necessary for the creation anti-affinity rules.
    // If this field is empty, anti-affinity rules will not be created.
    //+optional
    ClusterName *string `json:"clusterName,omitempty" yaml:"clusterName,omitempty" bson:"clusterName,omitempty"`
    // Netmask address of the vSphere network.
    //+optional
    Netmask *string `json:"netmask,omitempty" yaml:"netmask,omitempty" bson:"netmask,omitempty"`
    // NetworkGateway is Gateway address of the vSphere Network.
    //+optional
    NetworkGateway *string `json:"networkGateway,omitempty" yaml:"networkGateway,omitempty" bson:"networkGateway,omitempty"`
    // DNSServers is list of DNS servers for vSphere Network.
    //+optional
    DNSServers []*string `json:"dnsServers,omitempty" yaml:"dnsServers,omitempty" bson:"dnsServers,omitempty"`
    // ZoneSupportEnabled enables zone support in the vsphere cloud provider
    //+optional
    // Since version 1.20
    ZoneSupportEnabled bool `json:"zoneSupportEnabled,omitempty" yaml:"zoneSupportEnabled,omitempty" bson:"zoneSupportEnabled,omitempty"`
    // BaseVCenterFolderPath The path of folder in VCenter where the cluster will be created.
    // If omitted - root of VCenter will be used.
    //+optional
    // Since version 1.23.2
    BaseVCenterFolderPath *string `json:"baseVcenterFolderPath,omitempty" yaml:"baseVcenterFolderPath,omitempty" bson:"baseVcenterFolderPath,omitempty"`
}

type VSphereLocationState

VSphereLocationState represents state of VMWare vSphere Location.

type VSphereLocationState struct {
    PrepareToCreateDeployment bool            `json:"prepareToCreateDeployment" yaml:"prepareToCreateDeployment" bson:"prepareToCreateDeployment"`
    TerraformState            *TerraformState `json:"terraformState,omitempty" yaml:"terraformState,omitempty" bson:"terraformState,omitempty"`
}

type VSphereVMInstanceSpec

VSphereVMInstanceSpec represents VMWare vSphere instance spec

type VSphereVMInstanceSpec struct {
    // Template is vCenter VM Template
    // Required
    Template *VSphereInstanceTemplate `json:"template,omitempty" yaml:"template,omitempty" bson:"template,omitempty"`
    // Cpus is the number of virtual CPUs to allocate to the VM.
    // Required
    Cpus *int `json:"cpus,omitempty" yaml:"cpus,omitempty" bson:"cpus,omitempty"`
    // MemoryMb is the amount of RAM (in MB) to allocate to the VM.
    // Required
    MemoryMb *int `json:"memoryMb,omitempty" yaml:"memoryMb,omitempty" bson:"memoryMb,omitempty"`
    // bootDisk is a Boot Data Disk.
    // If omitted - values from VM Template will be used.
    //+optional
    BootDisk *VSphereDiskSpec `json:"bootDisk,omitempty" yaml:"bootDisk,omitempty" bson:"bootDisk,omitempty"`
    // MasterDataDisk is a Master Data Disk.
    // If omitted - default will be created
    //+optional
    //+deprecated use DataDisks instead
    MasterDataDisk *VSphereDiskSpec `json:"masterDataDisk,omitempty" yaml:"masterDataDisk,omitempty" bson:"masterDataDisk,omitempty"`
    // DataDisk is a list of Data Disks using for data requiring local or shared datastore, for example etcd or iso files.
    // If omitted - default will be created
    // Required for groups using StorageDRS cluster and optional for other cases.
    DataDisks []*VSphereDiskSpec `json:"dataDisks,omitempty" yaml:"dataDisks,omitempty" bson:"dataDisks,omitempty"`

    // NICName is a Network Interface (NIC) Name.
    // Used only for cloud-init network initialization.
    // If omitted - 'ens192' will be used by default.
    //+optional
    NICName *string `json:"nicName,omitempty" yaml:"nicName,omitempty" bson:"nicName,omitempty"`
}

type Victims

Victims contains all nodes planned to delete during Update Location

type Victims map[ResourceID]*NodeToDelete

type VolumeSnapshot

VolumeSnapshot - model for volume snapshot

type VolumeSnapshot struct {
    CreatedAt time.Time `json:"createdAt,omitempty" yaml:"createdAt,omitempty" bson:"createdAt"`
    // Size is the size of the volume snapshot, in GiB.
    Size          int64              `json:"size" yaml:"size" bson:"size"`
    Tags          []SnapshotTag      `json:"tags" yaml:"tags" bson:"tags"`
    Aws           *AWSVolumeSnapshot `json:"aws,omitempty" yaml:"aws,omitempty" bson:"aws"`
    LocationRef   *string            `json:"locationRef,omitempty" yaml:"locationRef,omitempty" bson:"locationRef"`
    Status        SnapshotStatus     `json:"status" yaml:"status" bson:"status"`
    LastCheckTime time.Time          `json:"lastCheckTime,omitempty" yaml:"lastCheckTime,omitempty" bson:"lastCheckTime"`
    // PVSpec stores persistence volume object
    PVSpec string `json:"pvspec" yaml:"pvspec" bson:"pvspec"`
    // PVCSpec stores persistence volume claim object
    PVCSpec string `json:"pvcspec" yaml:"pvcspec" bson:"pvcspec"`
}