@@ -83,9 +83,7 @@ func (c *ClusterSync) Monitor(cfg *Configuration, cli *client_native.HAProxyClie
8383 c .cli = cli
8484
8585 go c .monitorBootstrapKey ()
86- if c .cfg .Mode .Load () == "cluster" {
87- go c .monitorCertificateRefresh ()
88- }
86+ go c .monitorCertificateRefresh ()
8987
9088 c .certFetch = make (chan struct {}, 2 )
9189 go c .fetchCert ()
@@ -100,31 +98,36 @@ func (c *ClusterSync) Monitor(cfg *Configuration, cli *client_native.HAProxyClie
10098}
10199
102100func (c * ClusterSync ) monitorCertificateRefresh () {
103- for range c .cfg .Notify .CertificateRefresh .Subscribe ("monitorCertificateRefresh" ) {
104- log .Info ("refreshing certificate" )
101+ for {
102+ select {
103+ case <- c .cfg .Notify .CertificateRefresh .Subscribe ("monitorCertificateRefresh" ):
104+ log .Info ("refreshing certificate" )
105105
106- key := c .cfg .Cluster .BootstrapKey .Load ()
107- data , err := DecodeBootstrapKey (key )
108- if err != nil {
109- log .Warning (err )
110- continue
111- }
112- url := fmt .Sprintf ("%s://%s" , data ["schema" ], data ["address" ])
106+ key := c .cfg .Cluster .BootstrapKey .Load ()
107+ data , err := DecodeBootstrapKey (key )
108+ if err != nil {
109+ log .Warning (err )
110+ continue
111+ }
112+ url := fmt .Sprintf ("%s://%s" , data ["schema" ], data ["address" ])
113113
114- csr , key , err := generateCSR ()
115- if err != nil {
116- log .Warning (err )
117- continue
118- }
119- err = renameio .WriteFile (path .Join (c .cfg .GetClusterCertDir (), fmt .Sprintf ("dataplane-%s-csr.crt" , c .cfg .Name .Load ())), []byte (csr ), 0644 )
120- if err != nil {
121- log .Warning (err )
122- continue
123- }
124- err = c .issueRefreshRequest (url , data ["port" ], data ["api-base-path" ], data ["path" ], csr , key )
125- if err != nil {
126- log .Warning (err )
127- continue
114+ csr , key , err := generateCSR ()
115+ if err != nil {
116+ log .Warning (err )
117+ continue
118+ }
119+ err = renameio .WriteFile (path .Join (c .cfg .GetClusterCertDir (), fmt .Sprintf ("dataplane-%s-csr.crt" , c .cfg .Name .Load ())), []byte (csr ), 0644 )
120+ if err != nil {
121+ log .Warning (err )
122+ continue
123+ }
124+ err = c .issueRefreshRequest (url , data ["port" ], data ["api-base-path" ], data ["path" ], csr , key )
125+ if err != nil {
126+ log .Warning (err )
127+ continue
128+ }
129+ case <- c .Context .Done ():
130+ return
128131 }
129132 }
130133}
0 commit comments