@@ -119,7 +119,6 @@ type DesignateReconciler struct {
119119// +kubebuilder:rbac:groups=rabbitmq.openstack.org,resources=transporturls,verbs=get;list;watch;create;update;patch;delete
120120// +kubebuilder:rbac:groups=redis.openstack.org,resources=redises,verbs=get;list;watch;create;update;patch;delete
121121// +kubebuilder:rbac:groups=k8s.cni.cncf.io,resources=network-attachment-definitions,verbs=get;list;watch
122- // +kubebuilder:rbac:groups="",resources=nodes,verbs=get;list
123122// +kubebuilder:rbac:groups=apps,resources=statefulsets,verbs=get;list;create;update;patch;delete;watch
124123
125124// service account, role, rolebinding
@@ -775,25 +774,14 @@ func (r *DesignateReconciler) reconcileNormal(ctx context.Context, instance *des
775774 allocatedIPs [predIP ] = true
776775 }
777776
778- // Get a list of the nodes in the cluster
779-
780- // TODO(oschwart):
781- // * confirm whether or not this lists only the nodes we want (i.e. ones
782- // that will host the daemonset)
783- // * do we want to provide a mechanism to temporarily disabling this list
784- // for maintenance windows where nodes might be "coming and going"
785-
786- nodes , err := helper .GetKClient ().CoreV1 ().Nodes ().List (ctx , metav1.ListOptions {})
787- if err != nil {
788- return ctrl.Result {}, err
789- }
790-
791- var nodeNames []string
792- for _ , node := range nodes .Items {
793- nodeNames = append (nodeNames , fmt .Sprintf ("mdns_%s" , node .Name ))
777+ // Handle Mdns predictable IPs configmap
778+ mdnsReplicaCount := int (* instance .Spec .DesignateMdns .Replicas )
779+ var mdnsNames []string
780+ for i := 0 ; i < mdnsReplicaCount ; i ++ {
781+ mdnsNames = append (mdnsNames , fmt .Sprintf ("mdns_address_%d" , i ))
794782 }
795783
796- updatedMap , allocatedIPs , err := r .allocatePredictableIPs (ctx , predictableIPParams , nodeNames , mdnsConfigMap .Data , allocatedIPs )
784+ updatedMap , allocatedIPs , err := r .allocatePredictableIPs (ctx , predictableIPParams , mdnsNames , mdnsConfigMap .Data , allocatedIPs )
797785 if err != nil {
798786 return ctrl.Result {}, err
799787 }
@@ -959,7 +947,7 @@ func (r *DesignateReconciler) reconcileNormal(ctx context.Context, instance *des
959947 Log .Info ("Deployment Worker task reconciled" )
960948
961949 // deploy designate-mdns
962- designateMdns , op , err := r .mdnsDaemonSetCreateOrUpdate (ctx , instance )
950+ designateMdns , op , err := r .mdnsStatefulSetCreateOrUpdate (ctx , instance )
963951 if err != nil {
964952 instance .Status .Conditions .Set (condition .FalseCondition (
965953 designatev1beta1 .DesignateMdnsReadyCondition ,
@@ -1585,8 +1573,8 @@ func (r *DesignateReconciler) workerDeploymentCreateOrUpdate(ctx context.Context
15851573 return deployment , op , err
15861574}
15871575
1588- func (r * DesignateReconciler ) mdnsDaemonSetCreateOrUpdate (ctx context.Context , instance * designatev1beta1.Designate ) (* designatev1beta1.DesignateMdns , controllerutil.OperationResult , error ) {
1589- daemonset := & designatev1beta1.DesignateMdns {
1576+ func (r * DesignateReconciler ) mdnsStatefulSetCreateOrUpdate (ctx context.Context , instance * designatev1beta1.Designate ) (* designatev1beta1.DesignateMdns , controllerutil.OperationResult , error ) {
1577+ statefulSet := & designatev1beta1.DesignateMdns {
15901578 ObjectMeta : metav1.ObjectMeta {
15911579 Name : fmt .Sprintf ("%s-mdns" , instance .Name ),
15921580 Namespace : instance .Namespace ,
@@ -1597,28 +1585,28 @@ func (r *DesignateReconciler) mdnsDaemonSetCreateOrUpdate(ctx context.Context, i
15971585 instance .Spec .DesignateMdns .NodeSelector = instance .Spec .NodeSelector
15981586 }
15991587
1600- op , err := controllerutil .CreateOrUpdate (ctx , r .Client , daemonset , func () error {
1601- daemonset .Spec = instance .Spec .DesignateMdns
1588+ op , err := controllerutil .CreateOrUpdate (ctx , r .Client , statefulSet , func () error {
1589+ statefulSet .Spec = instance .Spec .DesignateMdns
16021590 // Add in transfers from umbrella Designate CR (this instance) spec
16031591 // TODO: Add logic to determine when to set/overwrite, etc
1604- daemonset .Spec .ServiceUser = instance .Spec .ServiceUser
1605- daemonset .Spec .DatabaseHostname = instance .Status .DatabaseHostname
1606- daemonset .Spec .DatabaseAccount = instance .Spec .DatabaseAccount
1607- daemonset .Spec .Secret = instance .Spec .Secret
1608- daemonset .Spec .TransportURLSecret = instance .Status .TransportURLSecret
1609- daemonset .Spec .ServiceAccount = instance .RbacResourceName ()
1610- daemonset .Spec .TLS = instance .Spec .DesignateAPI .TLS .Ca
1611- daemonset .Spec .NodeSelector = instance .Spec .DesignateMdns .NodeSelector
1612-
1613- err := controllerutil .SetControllerReference (instance , daemonset , r .Scheme )
1592+ statefulSet .Spec .ServiceUser = instance .Spec .ServiceUser
1593+ statefulSet .Spec .DatabaseHostname = instance .Status .DatabaseHostname
1594+ statefulSet .Spec .DatabaseAccount = instance .Spec .DatabaseAccount
1595+ statefulSet .Spec .Secret = instance .Spec .Secret
1596+ statefulSet .Spec .TransportURLSecret = instance .Status .TransportURLSecret
1597+ statefulSet .Spec .ServiceAccount = instance .RbacResourceName ()
1598+ statefulSet .Spec .TLS = instance .Spec .DesignateAPI .TLS .Ca
1599+ statefulSet .Spec .NodeSelector = instance .Spec .DesignateMdns .NodeSelector
1600+
1601+ err := controllerutil .SetControllerReference (instance , statefulSet , r .Scheme )
16141602 if err != nil {
16151603 return err
16161604 }
16171605
16181606 return nil
16191607 })
16201608
1621- return daemonset , op , err
1609+ return statefulSet , op , err
16221610}
16231611
16241612func (r * DesignateReconciler ) producerDeploymentCreateOrUpdate (ctx context.Context , instance * designatev1beta1.Designate ) (* designatev1beta1.DesignateProducer , controllerutil.OperationResult , error ) {
0 commit comments