mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-25 17:12:50 +00:00
support to use external dns to resolve control-plane domain
Signed-off-by: pixiake <guofeng@yunify.com>
This commit is contained in:
parent
b4edf604e0
commit
bd9b7d5603
|
|
@ -74,6 +74,7 @@ type HostCfg struct {
|
|||
type ControlPlaneEndpoint struct {
|
||||
InternalLoadbalancer string `yaml:"internalLoadbalancer" json:"internalLoadbalancer,omitempty"`
|
||||
Domain string `yaml:"domain" json:"domain,omitempty"`
|
||||
ExternalDNS *bool `yaml:"externalDNS" json:"externalDNS"`
|
||||
Address string `yaml:"address" json:"address,omitempty"`
|
||||
Port int `yaml:"port" json:"port,omitempty"`
|
||||
KubeVip KubeVip `yaml:"kubevip" json:"kubevip,omitempty"`
|
||||
|
|
@ -296,3 +297,11 @@ func (c ControlPlaneEndpoint) IsInternalLBEnabled() bool {
|
|||
func (c ControlPlaneEndpoint) IsInternalLBEnabledVip() bool {
|
||||
return c.InternalLoadbalancer == Kubevip
|
||||
}
|
||||
|
||||
// EnableExternalDNS is used to determine whether to use external dns to resolve kube-apiserver domain.
|
||||
func (c *ControlPlaneEndpoint) EnableExternalDNS() bool {
|
||||
if c.ExternalDNS == nil {
|
||||
return false
|
||||
}
|
||||
return *c.ExternalDNS
|
||||
}
|
||||
|
|
|
|||
|
|
@ -185,9 +185,9 @@ func SetDefaultHostsCfg(cfg *ClusterSpec) []HostCfg {
|
|||
|
||||
func SetDefaultLBCfg(cfg *ClusterSpec, masterGroup []*KubeHost) ControlPlaneEndpoint {
|
||||
//Check whether LB should be configured
|
||||
if len(masterGroup) >= 2 && !cfg.ControlPlaneEndpoint.IsInternalLBEnabled() && cfg.ControlPlaneEndpoint.Address == "" {
|
||||
if len(masterGroup) >= 2 && !cfg.ControlPlaneEndpoint.IsInternalLBEnabled() && cfg.ControlPlaneEndpoint.Address == "" && !cfg.ControlPlaneEndpoint.EnableExternalDNS() {
|
||||
fmt.Println()
|
||||
fmt.Println("Warning: When there are at least two nodes in the control-plane, you should set the value of the LB address or enable the internal loadbalancer, if the 'ControlPlaneEndpoint.Domain' cannot be resolved in your dns server.")
|
||||
fmt.Println("Warning: When there are at least two nodes in the control-plane, you should set the value of the LB address or enable the internal loadbalancer, or set 'controlPlaneEndpoint.externalDNS' to 'true' if the 'controlPlaneEndpoint.domain' can be resolved in your dns server.")
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
|
|
@ -197,7 +197,7 @@ func SetDefaultLBCfg(cfg *ClusterSpec, masterGroup []*KubeHost) ControlPlaneEndp
|
|||
os.Exit(0)
|
||||
}
|
||||
|
||||
if cfg.ControlPlaneEndpoint.Address == "127.0.0.1" {
|
||||
if (cfg.ControlPlaneEndpoint.Address == "" && !cfg.ControlPlaneEndpoint.EnableExternalDNS()) || cfg.ControlPlaneEndpoint.Address == "127.0.0.1" {
|
||||
cfg.ControlPlaneEndpoint.Address = masterGroup[0].InternalAddress
|
||||
}
|
||||
if cfg.ControlPlaneEndpoint.Domain == "" {
|
||||
|
|
|
|||
|
|
@ -23,8 +23,11 @@ spec:
|
|||
- node1
|
||||
- node[10:100] # All the nodes in your cluster that serve as the worker nodes.
|
||||
controlPlaneEndpoint:
|
||||
#Internal loadbalancer for apiservers. Support: haproxy, kube-vip [Default: ""]
|
||||
internalLoadbalancer: haproxy
|
||||
# Internal loadbalancer for apiservers. Support: haproxy, kube-vip [Default: ""]
|
||||
internalLoadbalancer: haproxy
|
||||
# Determines whether to use external dns to resolve the control-plane domain.
|
||||
# If 'externalDNS' is set to 'true', the 'address' needs to be set to "".
|
||||
externalDNS: false
|
||||
domain: lb.kubesphere.local
|
||||
# The IP address of your load balancer. If you use internalLoadblancer in "kube-vip" mode, a VIP is required here.
|
||||
address: ""
|
||||
|
|
|
|||
Loading…
Reference in New Issue