Merge pull request #223 from zalando-incubator/document-watch-namespace
Make env var overwrite configmap setting for watching namespaces
This commit is contained in:
		
						commit
						60c742a3e8
					
				
							
								
								
									
										11
									
								
								cmd/main.go
								
								
								
								
							
							
						
						
									
										11
									
								
								cmd/main.go
								
								
								
								
							|  | @ -27,14 +27,9 @@ func init() { | |||
| 	flag.BoolVar(&config.NoTeamsAPI, "noteamsapi", false, "Disable all access to the teams API") | ||||
| 	flag.Parse() | ||||
| 
 | ||||
| 	config.Namespace = os.Getenv("WATCH_NAMESPACE") | ||||
| 	if config.Namespace == "" { | ||||
| 		config.Namespace = "default" | ||||
| 	} | ||||
| 
 | ||||
| 	configMap := os.Getenv("CONFIG_MAP_NAME") | ||||
| 	if configMap != "" { | ||||
| 		err := config.ConfigMapName.Decode(configMap) | ||||
| 	configMapRawName := os.Getenv("CONFIG_MAP_NAME") | ||||
| 	if configMapRawName != "" { | ||||
| 		err := config.ConfigMapName.Decode(configMapRawName) | ||||
| 		if err != nil { | ||||
| 			log.Fatalf("incorrect config map name") | ||||
| 		} | ||||
|  |  | |||
|  | @ -3,6 +3,9 @@ kind: ConfigMap | |||
| metadata: | ||||
|   name: postgres-operator | ||||
| data: | ||||
|   # assumes the ns exists before the operator starts | ||||
|   # the env var with the same name may overwrite it in the operator pod | ||||
|   # watched_namespace: development | ||||
|   service_account_name: operator | ||||
|   cluster_labels: application:spilo | ||||
|   cluster_name_label: version | ||||
|  |  | |||
|  | @ -15,9 +15,10 @@ spec: | |||
|         image: registry.opensource.zalan.do/acid/postgres-operator:c17aabb | ||||
|         imagePullPolicy: IfNotPresent | ||||
|         env: | ||||
|         - name: WATCH_NAMESPACE | ||||
|           valueFrom: | ||||
|             fieldRef: | ||||
|               fieldPath: metadata.namespace | ||||
|         # uncomment to overwrite a similar setting from operator configmap | ||||
|         # - name: WATCHED_NAMESPACE | ||||
|         #  valueFrom: | ||||
|         #    fieldRef: | ||||
|         #      fieldPath: metadata.namespace | ||||
|         - name: CONFIG_MAP_NAME | ||||
|           value: "postgres-operator" | ||||
|  |  | |||
|  | @ -110,7 +110,7 @@ func (c *Cluster) preScaleDown(newStatefulSet *v1beta1.StatefulSet) error { | |||
| 	} | ||||
| 
 | ||||
| 	podName := fmt.Sprintf("%s-0", c.Statefulset.Name) | ||||
| 	masterCandidatePod, err := c.KubeClient.Pods(c.OpConfig.Namespace).Get(podName, metav1.GetOptions{}) | ||||
| 	masterCandidatePod, err := c.KubeClient.Pods(c.OpConfig.WatchedNamespace).Get(podName, metav1.GetOptions{}) | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("could not get master candidate pod: %v", err) | ||||
| 	} | ||||
|  |  | |||
|  | @ -97,9 +97,18 @@ func (c *Controller) initOperatorConfig() { | |||
| 		c.logger.Infoln("no ConfigMap specified. Loading default values") | ||||
| 	} | ||||
| 
 | ||||
| 	if configMapData["namespace"] == "" { // Namespace in ConfigMap has priority over env var
 | ||||
| 		configMapData["namespace"] = c.config.Namespace | ||||
| 	// env var takes priority over the same param from the operator ConfigMap
 | ||||
| 	watchedNamespace := os.Getenv("WATCHED_NAMESPACE") | ||||
| 	if watchedNamespace != "" { | ||||
| 		c.logger.Infof("Watch the %q namespace specified in the env variable WATCHED_NAMESPACE\n", watchedNamespace) | ||||
| 		configMapData["watched_namespace"] = watchedNamespace | ||||
| 	} | ||||
| 
 | ||||
| 	if configMapData["watched_namespace"] == "" { | ||||
| 		c.logger.Infoln("No namespace to watch specified. Fall back to watching the 'default' namespace.") | ||||
| 		configMapData["watched_namespace"] = v1.NamespaceDefault | ||||
| 	} | ||||
| 
 | ||||
| 	if c.config.NoDatabaseAccess { | ||||
| 		configMapData["enable_database_access"] = "false" | ||||
| 	} | ||||
|  |  | |||
|  | @ -80,7 +80,7 @@ func (c *Controller) moveMasterPodsOffNode(node *v1.Node) { | |||
| 	opts := metav1.ListOptions{ | ||||
| 		LabelSelector: labels.Set(c.opConfig.ClusterLabels).String(), | ||||
| 	} | ||||
| 	podList, err := c.KubeClient.Pods(c.opConfig.Namespace).List(opts) | ||||
| 	podList, err := c.KubeClient.Pods(c.opConfig.WatchedNamespace).List(opts) | ||||
| 	if err != nil { | ||||
| 		c.logger.Errorf("could not fetch list of the pods: %v", err) | ||||
| 		return | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ func (c *Controller) podListFunc(options metav1.ListOptions) (runtime.Object, er | |||
| 		TimeoutSeconds:  options.TimeoutSeconds, | ||||
| 	} | ||||
| 
 | ||||
| 	return c.KubeClient.Pods(c.opConfig.Namespace).List(opts) | ||||
| 	return c.KubeClient.Pods(c.opConfig.WatchedNamespace).List(opts) | ||||
| } | ||||
| 
 | ||||
| func (c *Controller) podWatchFunc(options metav1.ListOptions) (watch.Interface, error) { | ||||
|  | @ -27,7 +27,7 @@ func (c *Controller) podWatchFunc(options metav1.ListOptions) (watch.Interface, | |||
| 		TimeoutSeconds:  options.TimeoutSeconds, | ||||
| 	} | ||||
| 
 | ||||
| 	return c.KubeClient.Pods(c.opConfig.Namespace).Watch(opts) | ||||
| 	return c.KubeClient.Pods(c.opConfig.WatchedNamespace).Watch(opts) | ||||
| } | ||||
| 
 | ||||
| func (c *Controller) dispatchPodEvent(clusterName spec.NamespacedName, event spec.PodEvent) { | ||||
|  |  | |||
|  | @ -46,7 +46,7 @@ func (c *Controller) clusterListFunc(options metav1.ListOptions) (runtime.Object | |||
| 
 | ||||
| 	req := c.KubeClient.CRDREST. | ||||
| 		Get(). | ||||
| 		Namespace(c.opConfig.Namespace). | ||||
| 		Namespace(c.opConfig.WatchedNamespace). | ||||
| 		Resource(constants.CRDResource). | ||||
| 		VersionedParams(&options, metav1.ParameterCodec) | ||||
| 
 | ||||
|  | @ -110,7 +110,7 @@ func (c *Controller) clusterWatchFunc(options metav1.ListOptions) (watch.Interfa | |||
| 	options.Watch = true | ||||
| 	r, err := c.KubeClient.CRDREST. | ||||
| 		Get(). | ||||
| 		Namespace(c.opConfig.Namespace). | ||||
| 		Namespace(c.opConfig.WatchedNamespace). | ||||
| 		Resource(constants.CRDResource). | ||||
| 		VersionedParams(&options, metav1.ParameterCodec). | ||||
| 		FieldsSelectorParam(nil). | ||||
|  |  | |||
|  | @ -16,7 +16,7 @@ import ( | |||
| // ClusterStatus provides status of the cluster
 | ||||
| func (c *Controller) ClusterStatus(team, cluster string) (*spec.ClusterStatus, error) { | ||||
| 	clusterName := spec.NamespacedName{ | ||||
| 		Namespace: c.opConfig.Namespace, | ||||
| 		Namespace: c.opConfig.WatchedNamespace, | ||||
| 		Name:      team + "-" + cluster, | ||||
| 	} | ||||
| 
 | ||||
|  | @ -92,7 +92,7 @@ func (c *Controller) GetStatus() *spec.ControllerStatus { | |||
| // ClusterLogs dumps cluster ring logs
 | ||||
| func (c *Controller) ClusterLogs(team, name string) ([]*spec.LogEntry, error) { | ||||
| 	clusterName := spec.NamespacedName{ | ||||
| 		Namespace: c.opConfig.Namespace, | ||||
| 		Namespace: c.opConfig.WatchedNamespace, | ||||
| 		Name:      team + "-" + name, | ||||
| 	} | ||||
| 
 | ||||
|  | @ -214,7 +214,7 @@ func (c *Controller) WorkerStatus(workerID uint32) (*spec.WorkerStatus, error) { | |||
| // ClusterHistory dumps history of cluster changes
 | ||||
| func (c *Controller) ClusterHistory(team, name string) ([]*spec.Diff, error) { | ||||
| 	clusterName := spec.NamespacedName{ | ||||
| 		Namespace: c.opConfig.Namespace, | ||||
| 		Namespace: c.opConfig.WatchedNamespace, | ||||
| 		Name:      team + "-" + name, | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ import ( | |||
| 	"time" | ||||
| 
 | ||||
| 	"fmt" | ||||
| 
 | ||||
| 	"github.com/zalando-incubator/postgres-operator/pkg/spec" | ||||
| ) | ||||
| 
 | ||||
|  | @ -66,7 +67,7 @@ type Config struct { | |||
| 	Resources | ||||
| 	Auth | ||||
| 	Scalyr | ||||
| 	Namespace                string            `name:"namespace"` | ||||
| 	WatchedNamespace         string            `name:"watched_namespace"` | ||||
| 	EtcdHost                 string            `name:"etcd_host" default:"etcd-client.default.svc.cluster.local:2379"` | ||||
| 	DockerImage              string            `name:"docker_image" default:"registry.opensource.zalan.do/acid/spiloprivate-9.6:1.2-p4"` | ||||
| 	ServiceAccountName       string            `name:"service_account_name" default:"operator"` | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue