diff --git a/apis/management.cattle.io/v3/rke_types.go b/apis/management.cattle.io/v3/rke_types.go index bbe448a1..310df5e5 100644 --- a/apis/management.cattle.io/v3/rke_types.go +++ b/apis/management.cattle.io/v3/rke_types.go @@ -33,6 +33,16 @@ type RancherKubernetesEngineConfig struct { ClusterName string `yaml:"cluster_name" json:"clusterName,omitempty"` // Cloud Provider options CloudProvider CloudProvider `yaml:"cloud_provider" json:"cloudProvider,omitempty"` + // AWSCloudProvicer + AWSCloudProvider AWSCloudProvider `yaml:",omitempty" json:"awsCloudProvider,omitempty"` + // AzureCloudProvicer + AzureCloudProvider AzureCloudProvider `yaml:",omitempty" json:"azureCloudProvider,omitempty"` + // CalicoNetworkProvider + CalicoNetworkProvider CalicoNetworkProvider `yaml:",omitempty" json:"calicoNetworkProvider,omitempty"` + // CanalNetworkProvider + CanalNetworkProvider CanalNetworkProvider `yaml:",omitempty" json:"canalNetworkProvider,omitempty"` + // FlannelNetworkProvider + FlannelNetworkProvider FlannelNetworkProvider `yaml:",omitempty" json:"flannelNetworkProvider,omitempty"` } type PrivateRegistry struct { @@ -305,3 +315,87 @@ type CloudProvider struct { // Configuration Options of Cloud Provider CloudConfig map[string]string `yaml:"cloud_config" json:"cloudConfig,omitempty"` } + +type AzureCloudProvider struct { + // The cloud environment identifier. Takes values from https://github.com/Azure/go-autorest/blob/ec5f4903f77ed9927ac95b19ab8e44ada64c1356/autorest/azure/environments.go#L13 + Cloud string `json:"cloud" yaml:"cloud"` + // The AAD Tenant ID for the Subscription that the cluster is deployed in + TenantID string `json:"tenantId" yaml:"tenantId"` + // The ID of the Azure Subscription that the cluster is deployed in + SubscriptionID string `json:"subscriptionId" yaml:"subscriptionId"` + // The name of the resource group that the cluster is deployed in + ResourceGroup string `json:"resourceGroup" yaml:"resourceGroup"` + // The location of the resource group that the cluster is deployed in + Location string `json:"location" yaml:"location"` + // The name of the VNet that the cluster is deployed in + VnetName string `json:"vnetName" yaml:"vnetName"` + // The name of the resource group that the Vnet is deployed in + VnetResourceGroup string `json:"vnetResourceGroup" yaml:"vnetResourceGroup"` + // The name of the subnet that the cluster is deployed in + SubnetName string `json:"subnetName" yaml:"subnetName"` + // The name of the security group attached to the cluster's subnet + SecurityGroupName string `json:"securityGroupName" yaml:"securityGroupName"` + // (Optional in 1.6) The name of the route table attached to the subnet that the cluster is deployed in + RouteTableName string `json:"routeTableName" yaml:"routeTableName"` + // (Optional) The name of the availability set that should be used as the load balancer backend + // If this is set, the Azure cloudprovider will only add nodes from that availability set to the load + // balancer backend pool. If this is not set, and multiple agent pools (availability sets) are used, then + // the cloudprovider will try to add all nodes to a single backend pool which is forbidden. + // In other words, if you use multiple agent pools (availability sets), you MUST set this field. + PrimaryAvailabilitySetName string `json:"primaryAvailabilitySetName" yaml:"primaryAvailabilitySetName"` + // The type of azure nodes. Candidate valudes are: vmss and standard. + // If not set, it will be default to standard. + VMType string `json:"vmType" yaml:"vmType"` + // The name of the scale set that should be used as the load balancer backend. + // If this is set, the Azure cloudprovider will only add nodes from that scale set to the load + // balancer backend pool. If this is not set, and multiple agent pools (scale sets) are used, then + // the cloudprovider will try to add all nodes to a single backend pool which is forbidden. + // In other words, if you use multiple agent pools (scale sets), you MUST set this field. + PrimaryScaleSetName string `json:"primaryScaleSetName" yaml:"primaryScaleSetName"` + // The ClientID for an AAD application with RBAC access to talk to Azure RM APIs + AADClientID string `json:"aadClientId" yaml:"aadClientId"` + // The ClientSecret for an AAD application with RBAC access to talk to Azure RM APIs + AADClientSecret string `json:"aadClientSecret" yaml:"aadClientSecret"` + // The path of a client certificate for an AAD application with RBAC access to talk to Azure RM APIs + AADClientCertPath string `json:"aadClientCertPath" yaml:"aadClientCertPath"` + // The password of the client certificate for an AAD application with RBAC access to talk to Azure RM APIs + AADClientCertPassword string `json:"aadClientCertPassword" yaml:"aadClientCertPassword"` + // Enable exponential backoff to manage resource request retries + CloudProviderBackoff bool `json:"cloudProviderBackoff" yaml:"cloudProviderBackoff"` + // Backoff retry limit + CloudProviderBackoffRetries int `json:"cloudProviderBackoffRetries" yaml:"cloudProviderBackoffRetries"` + // Backoff exponent + CloudProviderBackoffExponent int `json:"cloudProviderBackoffExponent" yaml:"cloudProviderBackoffExponent"` + // Backoff duration + CloudProviderBackoffDuration int `json:"cloudProviderBackoffDuration" yaml:"cloudProviderBackoffDuration"` + // Backoff jitter + CloudProviderBackoffJitter int `json:"cloudProviderBackoffJitter" yaml:"cloudProviderBackoffJitter"` + // Enable rate limiting + CloudProviderRateLimit bool `json:"cloudProviderRateLimit" yaml:"cloudProviderRateLimit"` + // Rate limit QPS + CloudProviderRateLimitQPS int `json:"cloudProviderRateLimitQPS" yaml:"cloudProviderRateLimitQPS"` + // Rate limit Bucket Size + CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket" yaml:"cloudProviderRateLimitBucket"` + // Use instance metadata service where possible + UseInstanceMetadata bool `json:"useInstanceMetadata" yaml:"useInstanceMetadata"` + // Use managed service identity for the virtual machine to access Azure ARM APIs + UseManagedIdentityExtension bool `json:"useManagedIdentityExtension"` + // Maximum allowed LoadBalancer Rule Count is the limit enforced by Azure Load balancer + MaximumLoadBalancerRuleCount int `json:"maximumLoadBalancerRuleCount"` +} + +type AWSCloudProvider struct { +} + +type CalicoNetworkProvider struct { + // Cloud provider type used with calico + CloudProvider string +} + +type FlannelNetworkProvider struct { + // Alternate cloud interface for flannel + Iface string +} + +type CanalNetworkProvider struct { +}