mirror of https://github.com/kubernetes/kops.git
specify dns servers to openstack subnet
This commit is contained in:
parent
d44c7fed95
commit
71452d0ddd
|
@ -151,6 +151,7 @@ type CreateClusterOptions struct {
|
|||
// OpenstackExternalNet is the name of the external network for the openstack router
|
||||
OpenstackExternalNet string
|
||||
OpenstackStorageIgnoreAZ bool
|
||||
OpenstackDNSServers string
|
||||
|
||||
// OpenstackLBOctavia is boolean value should we use octavia or old loadbalancer api
|
||||
OpenstackLBOctavia bool
|
||||
|
@ -383,6 +384,7 @@ func NewCmdCreateCluster(f *util.Factory, out io.Writer) *cobra.Command {
|
|||
cmd.Flags().StringVar(&options.OpenstackExternalNet, "os-ext-net", options.OpenstackExternalNet, "The name of the external network to use with the openstack router")
|
||||
cmd.Flags().BoolVar(&options.OpenstackStorageIgnoreAZ, "os-kubelet-ignore-az", options.OpenstackStorageIgnoreAZ, "If true kubernetes may attach volumes across availability zones")
|
||||
cmd.Flags().BoolVar(&options.OpenstackLBOctavia, "os-octavia", options.OpenstackLBOctavia, "If true octavia loadbalancer api will be used")
|
||||
cmd.Flags().StringVar(&options.OpenstackDNSServers, "os-dns-servers", options.OpenstackDNSServers, "comma separated list of DNS Servers which is used in network")
|
||||
}
|
||||
|
||||
return cmd
|
||||
|
@ -915,6 +917,9 @@ func RunCreateCluster(f *util.Factory, out io.Writer, c *CreateClusterOptions) e
|
|||
MaxRetries: fi.Int(3),
|
||||
},
|
||||
}
|
||||
if c.OpenstackDNSServers != "" {
|
||||
cluster.Spec.CloudConfig.Openstack.Router.DNSServers = fi.String(c.OpenstackDNSServers)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -63,4 +63,5 @@ kops delete cluster my-cluster.k8s.local --yes
|
|||
#### Optional flags
|
||||
* `--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
|
||||
|
||||
|
|
|
@ -528,6 +528,7 @@ type OpenstackMonitor struct {
|
|||
// OpenstackRouter defines the config for a router
|
||||
type OpenstackRouter struct {
|
||||
ExternalNetwork *string `json:"externalNetwork,omitempty"`
|
||||
DNSServers *string `json:"dnsServers,omitempty"`
|
||||
}
|
||||
|
||||
// OpenstackConfiguration defines cloud config elements for the openstack cloud provider
|
||||
|
|
|
@ -528,6 +528,7 @@ type OpenstackMonitor struct {
|
|||
// OpenstackRouter defines the config for a router
|
||||
type OpenstackRouter struct {
|
||||
ExternalNetwork *string `json:"externalNetwork,omitempty"`
|
||||
DNSServers *string `json:"dnsServers,omitempty"`
|
||||
}
|
||||
|
||||
// OpenstackConfiguration defines cloud config elements for the openstack cloud provider
|
||||
|
|
|
@ -4096,6 +4096,7 @@ func Convert_kops_OpenstackMonitor_To_v1alpha1_OpenstackMonitor(in *kops.Opensta
|
|||
|
||||
func autoConvert_v1alpha1_OpenstackRouter_To_kops_OpenstackRouter(in *OpenstackRouter, out *kops.OpenstackRouter, s conversion.Scope) error {
|
||||
out.ExternalNetwork = in.ExternalNetwork
|
||||
out.DNSServers = in.DNSServers
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -4106,6 +4107,7 @@ func Convert_v1alpha1_OpenstackRouter_To_kops_OpenstackRouter(in *OpenstackRoute
|
|||
|
||||
func autoConvert_kops_OpenstackRouter_To_v1alpha1_OpenstackRouter(in *kops.OpenstackRouter, out *OpenstackRouter, s conversion.Scope) error {
|
||||
out.ExternalNetwork = in.ExternalNetwork
|
||||
out.DNSServers = in.DNSServers
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -2696,6 +2696,11 @@ func (in *OpenstackRouter) DeepCopyInto(out *OpenstackRouter) {
|
|||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.DNSServers != nil {
|
||||
in, out := &in.DNSServers, &out.DNSServers
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -528,6 +528,7 @@ type OpenstackMonitor struct {
|
|||
// OpenstackRouter defines the config for a router
|
||||
type OpenstackRouter struct {
|
||||
ExternalNetwork *string `json:"externalNetwork,omitempty"`
|
||||
DNSServers *string `json:"dnsServers,omitempty"`
|
||||
}
|
||||
|
||||
// OpenstackConfiguration defines cloud config elements for the openstack cloud provider
|
||||
|
|
|
@ -4366,6 +4366,7 @@ func Convert_kops_OpenstackMonitor_To_v1alpha2_OpenstackMonitor(in *kops.Opensta
|
|||
|
||||
func autoConvert_v1alpha2_OpenstackRouter_To_kops_OpenstackRouter(in *OpenstackRouter, out *kops.OpenstackRouter, s conversion.Scope) error {
|
||||
out.ExternalNetwork = in.ExternalNetwork
|
||||
out.DNSServers = in.DNSServers
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -4376,6 +4377,7 @@ func Convert_v1alpha2_OpenstackRouter_To_kops_OpenstackRouter(in *OpenstackRoute
|
|||
|
||||
func autoConvert_kops_OpenstackRouter_To_v1alpha2_OpenstackRouter(in *kops.OpenstackRouter, out *OpenstackRouter, s conversion.Scope) error {
|
||||
out.ExternalNetwork = in.ExternalNetwork
|
||||
out.DNSServers = in.DNSServers
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -2767,6 +2767,11 @@ func (in *OpenstackRouter) DeepCopyInto(out *OpenstackRouter) {
|
|||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.DNSServers != nil {
|
||||
in, out := &in.DNSServers, &out.DNSServers
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -2981,6 +2981,11 @@ func (in *OpenstackRouter) DeepCopyInto(out *OpenstackRouter) {
|
|||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
if in.DNSServers != nil {
|
||||
in, out := &in.DNSServers, &out.DNSServers
|
||||
*out = new(string)
|
||||
**out = **in
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,14 @@ func (b *NetworkModelBuilder) Build(c *fi.ModelBuilderContext) error {
|
|||
CIDR: s(sp.CIDR),
|
||||
Lifecycle: b.Lifecycle,
|
||||
}
|
||||
if b.Cluster.Spec.CloudConfig.Openstack.Router.DNSServers != nil {
|
||||
dnsSplitted := strings.Split(fi.StringValue(b.Cluster.Spec.CloudConfig.Openstack.Router.DNSServers), ",")
|
||||
dnsNameSrv := make([]*string, len(dnsSplitted))
|
||||
for i, ns := range dnsSplitted {
|
||||
dnsNameSrv[i] = fi.String(ns)
|
||||
}
|
||||
t.DNSServers = dnsNameSrv
|
||||
}
|
||||
c.AddTask(t)
|
||||
|
||||
t1 := &openstacktasks.RouterInterface{
|
||||
|
|
|
@ -28,11 +28,12 @@ import (
|
|||
|
||||
//go:generate fitask -type=Subnet
|
||||
type Subnet struct {
|
||||
ID *string
|
||||
Name *string
|
||||
Network *Network
|
||||
CIDR *string
|
||||
Lifecycle *fi.Lifecycle
|
||||
ID *string
|
||||
Name *string
|
||||
Network *Network
|
||||
CIDR *string
|
||||
DNSServers []*string
|
||||
Lifecycle *fi.Lifecycle
|
||||
}
|
||||
|
||||
// GetDependencies returns the dependencies of the Port task
|
||||
|
@ -53,18 +54,24 @@ func (s *Subnet) CompareWithID() *string {
|
|||
}
|
||||
|
||||
func NewSubnetTaskFromCloud(cloud openstack.OpenstackCloud, lifecycle *fi.Lifecycle, subnet *subnets.Subnet, find *Subnet) (*Subnet, error) {
|
||||
|
||||
network, err := cloud.GetNetwork(subnet.NetworkID)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("NewSubnetTaskFromCloud: Failed to get network with ID %s: %v", subnet.NetworkID, err)
|
||||
}
|
||||
networkTask, err := NewNetworkTaskFromCloud(cloud, lifecycle, network)
|
||||
|
||||
nameservers := make([]*string, len(subnet.DNSNameservers))
|
||||
for i, ns := range subnet.DNSNameservers {
|
||||
nameservers[i] = fi.String(ns)
|
||||
}
|
||||
|
||||
actual := &Subnet{
|
||||
ID: fi.String(subnet.ID),
|
||||
Name: fi.String(subnet.Name),
|
||||
Network: networkTask,
|
||||
CIDR: fi.String(subnet.CIDR),
|
||||
Lifecycle: lifecycle,
|
||||
ID: fi.String(subnet.ID),
|
||||
Name: fi.String(subnet.Name),
|
||||
Network: networkTask,
|
||||
CIDR: fi.String(subnet.CIDR),
|
||||
Lifecycle: lifecycle,
|
||||
DNSServers: nameservers,
|
||||
}
|
||||
if find != nil {
|
||||
find.ID = actual.ID
|
||||
|
@ -113,6 +120,9 @@ func (_ *Subnet) CheckChanges(a, e, changes *Subnet) error {
|
|||
if changes.Name != nil {
|
||||
return fi.CannotChangeField("Name")
|
||||
}
|
||||
if e.DNSServers != nil {
|
||||
return fi.CannotChangeField("DNSServers")
|
||||
}
|
||||
if e.Network != nil {
|
||||
return fi.CannotChangeField("Network")
|
||||
}
|
||||
|
@ -135,6 +145,13 @@ func (_ *Subnet) RenderOpenstack(t *openstack.OpenstackAPITarget, a, e, changes
|
|||
EnableDHCP: fi.Bool(true),
|
||||
}
|
||||
|
||||
if len(e.DNSServers) > 0 {
|
||||
dnsNameSrv := make([]string, len(e.DNSServers))
|
||||
for i, ns := range e.DNSServers {
|
||||
dnsNameSrv[i] = fi.StringValue(ns)
|
||||
}
|
||||
opt.DNSNameservers = dnsNameSrv
|
||||
}
|
||||
v, err := t.Cloud.CreateSubnet(opt)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error creating subnet: %v", err)
|
||||
|
|
Loading…
Reference in New Issue