Merge pull request #12049 from iGene/octavia_provider_option

Add Option to Specify OpenStack Octavia Provider
This commit is contained in:
Kubernetes Prow Robot 2021-08-04 01:33:24 -07:00 committed by GitHub
commit d148cbed8d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 2 deletions

View File

@ -419,6 +419,8 @@ func NewCmdCreateCluster(f *util.Factory, out io.Writer) *cobra.Command {
cmd.RegisterFlagCompletionFunc("os-lb-floating-subnet", completeOpenstackLBSubnet)
cmd.Flags().BoolVar(&options.OpenstackStorageIgnoreAZ, "os-kubelet-ignore-az", options.OpenstackStorageIgnoreAZ, "Attach volumes across availability zones")
cmd.Flags().BoolVar(&options.OpenstackLBOctavia, "os-octavia", options.OpenstackLBOctavia, "Use octavia loadbalancer API")
cmd.Flags().StringVar(&options.OpenstackOctaviaProvider, "os-octavia-provider", options.OpenstackOctaviaProvider, "Octavia provider to use")
cmd.RegisterFlagCompletionFunc("os-octavia-provider", completeOpenstackOctaviaProvider)
cmd.Flags().StringVar(&options.OpenstackDNSServers, "os-dns-servers", options.OpenstackDNSServers, "comma separated list of DNS Servers which is used in network")
cmd.RegisterFlagCompletionFunc("os-dns-servers", completeOpenstackDNSServers)
cmd.Flags().StringVar(&options.OpenstackNetworkID, "os-network", options.OpenstackNetworkID, "ID of the existing OpenStack network to use")
@ -1054,6 +1056,20 @@ func completeOpenstackLBSubnet(cmd *cobra.Command, args []string, toComplete str
return nil, cobra.ShellCompDirectiveNoFileComp
}
func completeOpenstackOctaviaProvider(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
providers := []string{
"a10",
"amphora",
"amphorav2",
"f5",
"octavia",
"ovn",
"radware",
"vmwareedge",
}
return providers, cobra.ShellCompDirectiveNoFileComp
}
func completeOpenstackDNSServers(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
// TODO call into cloud provider to get list of DNS servers
return nil, cobra.ShellCompDirectiveNoFileComp

View File

@ -109,6 +109,7 @@ kops create cluster [CLUSTER] [flags]
--os-lb-floating-subnet string External subnet to use with the kubernetes api
--os-network string ID of the existing OpenStack network to use
--os-octavia Use octavia loadbalancer API
--os-octavia-provider string Octavia provider to use
--out string Path to write any local output
-o, --output string Output format. One of json or yaml. Used with the --dry-run flag.
--project string Project to use (must be set on GCE)

View File

@ -80,6 +80,7 @@ kops delete cluster my-cluster.k8s.local --yes
* `--os-kubelet-ignore-az=true` Nova and Cinder have different availability zones, more information [Kubernetes docs](https://kubernetes.io/docs/concepts/cluster-administration/cloud-providers/#block-storage)
* `--os-octavia=true` If Octavia Loadbalancer api should be used instead of old lbaas v2 api.
* `--os-dns-servers=8.8.8.8,8.8.4.4` You can define dns servers to be used in your cluster if your openstack setup does not have working dnssetup by default
* `--os-octavia-provider` You can define the Octavia Loadbalancer provider to use. To get the list of providers available in your environment, run `openstack loadbalancer provider list`. Default: octavia.
## Compute and volume zone names does not match

View File

@ -101,7 +101,8 @@ type NewClusterOptions struct {
OpenstackDNSServers string
OpenstackLBSubnet string
// OpenstackLBOctavia is whether to use use octavia instead of haproxy.
OpenstackLBOctavia bool
OpenstackLBOctavia bool
OpenstackOctaviaProvider string
AzureSubscriptionID string
AzureTenantID string
@ -1115,7 +1116,11 @@ func initializeOpenstackAPI(opt *NewClusterOptions, cluster *api.Cluster) {
cluster.Spec.API.LoadBalancer = &api.LoadBalancerAccessSpec{}
provider := "haproxy"
if opt.OpenstackLBOctavia {
provider = "octavia"
if opt.OpenstackOctaviaProvider != "" {
provider = opt.OpenstackOctaviaProvider
} else {
provider = "octavia"
}
}
cluster.Spec.CloudConfig.Openstack.Loadbalancer = &api.OpenstackLoadbalancerConfig{