Assign DNS name to the cluster.
DNS name is generated from the team name and cluster name. Use "zalando.org/dnsname" service annotation that makes 'mate' service assign a CNAME to the load balancer name.
This commit is contained in:
		
							parent
							
								
									45fcb2adc9
								
							
						
					
					
						commit
						55dbacdfa6
					
				|  | @ -88,6 +88,10 @@ func (c *Cluster) ClusterName() spec.ClusterName { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) ClusterTeamName() string { | ||||
| 	return c.Spec.TeamId | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) Run(stopCh <-chan struct{}) { | ||||
| 	go c.podEventsDispatcher(stopCh) | ||||
| 
 | ||||
|  | @ -199,7 +203,7 @@ func (c *Cluster) Update(newSpec *spec.Postgresql) error { | |||
| 
 | ||||
| 	newStatefulSet := getStatefulSet(c.ClusterName(), newSpec.Spec, c.etcdHost, c.dockerImage) | ||||
| 
 | ||||
| 	newService := resources.Service(c.ClusterName(), newSpec.Spec.AllowedSourceRanges) | ||||
| 	newService := resources.Service(c.ClusterName(), c.ClusterTeamName(), newSpec.Spec.AllowedSourceRanges) | ||||
| 	if !servicesEqual(newService, c.Service) { | ||||
| 		c.logger.Infof("Service needs to be upated") | ||||
| 		if err := c.updateService(newService); err != nil { | ||||
|  |  | |||
|  | @ -148,7 +148,7 @@ func (c *Cluster) createService() (*v1.Service, error) { | |||
| 	if c.Service != nil { | ||||
| 		return nil, fmt.Errorf("Service already exists in the cluster") | ||||
| 	} | ||||
| 	serviceSpec := resources.Service(c.ClusterName(), c.Spec.AllowedSourceRanges) | ||||
| 	serviceSpec := resources.Service(c.ClusterName(), c.ClusterTeamName(), c.Spec.AllowedSourceRanges) | ||||
| 
 | ||||
| 	service, err := c.config.KubeClient.Services(serviceSpec.Namespace).Create(serviceSpec) | ||||
| 	if k8sutil.ResourceAlreadyExists(err) { | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ import ( | |||
| 	"k8s.io/client-go/pkg/util/intstr" | ||||
| 
 | ||||
| 	"github.bus.zalan.do/acid/postgres-operator/pkg/spec" | ||||
| 	"github.bus.zalan.do/acid/postgres-operator/pkg/util" | ||||
| 	"github.bus.zalan.do/acid/postgres-operator/pkg/util/constants" | ||||
| ) | ||||
| 
 | ||||
|  | @ -18,6 +19,9 @@ const ( | |||
| 	superuserName            = "postgres" | ||||
| 	replicationUsername      = "replication" | ||||
| 	dataVolumeName           = "pgdata" | ||||
| 	zalandoDnsNameAnnotation = "zalando.org/dnsname" | ||||
| 	// TODO: move DbHostedZone to operator configuration
 | ||||
| 	DbHostedZone = "db.example.com" | ||||
| ) | ||||
| 
 | ||||
| func credentialSecretName(clusterName, username string) string { | ||||
|  | @ -248,12 +252,13 @@ func UserSecrets(cluster spec.ClusterName, pgUsers map[string]spec.PgUser) (secr | |||
| 	return | ||||
| } | ||||
| 
 | ||||
| func Service(cluster spec.ClusterName, allowedSourceRanges []string) *v1.Service { | ||||
| func Service(cluster spec.ClusterName, teamName string, allowedSourceRanges []string) *v1.Service { | ||||
| 	service := &v1.Service{ | ||||
| 		ObjectMeta: v1.ObjectMeta{ | ||||
| 			Name:        cluster.Name, | ||||
| 			Namespace:   cluster.Namespace, | ||||
| 			Labels:      labelsSet(cluster.Name), | ||||
| 			Annotations: map[string]string{zalandoDnsNameAnnotation: util.ClusterDNSName(cluster.Name, teamName, DbHostedZone)}, | ||||
| 		}, | ||||
| 		Spec: v1.ServiceSpec{ | ||||
| 			Type:  v1.ServiceTypeLoadBalancer, | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ import ( | |||
| 	"math/rand" | ||||
| 	"time" | ||||
| 
 | ||||
| 	"fmt" | ||||
| 	"github.bus.zalan.do/acid/postgres-operator/pkg/spec" | ||||
| 	"k8s.io/client-go/pkg/api/v1" | ||||
| 	"k8s.io/client-go/pkg/types" | ||||
|  | @ -43,3 +44,7 @@ func PodClusterName(pod *v1.Pod) spec.ClusterName { | |||
| 
 | ||||
| 	return spec.ClusterName{} | ||||
| } | ||||
| 
 | ||||
| func ClusterDNSName(clusterName, teamName, hostedZone string) string { | ||||
| 	return fmt.Sprintf("%s.%s.%s", clusterName, teamName, hostedZone) | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue