@@ -42,6 +42,7 @@ func main() {
4242 chunkStoreConfig chunk.StoreConfig
4343 distributorConfig distributor.Config
4444 ingesterConfig ingester.Config
45+ configStoreConfig ruler.ConfigStoreConfig
4546 rulerConfig ruler.Config
4647 schemaConfig chunk.SchemaConfig
4748 storageConfig storage.Config
@@ -52,7 +53,7 @@ func main() {
5253 // Ingester needs to know our gRPC listen port.
5354 ingesterConfig .ListenPort = & serverConfig .GRPCListenPort
5455 util .RegisterFlags (& serverConfig , & chunkStoreConfig , & distributorConfig ,
55- & ingesterConfig , & rulerConfig , & storageConfig , & schemaConfig , & logLevel )
56+ & ingesterConfig , & configStoreConfig , & rulerConfig , & storageConfig , & schemaConfig , & logLevel )
5657 flag .BoolVar (& unauthenticated , "unauthenticated" , false , "Set to true to disable multitenancy." )
5758 flag .Parse ()
5859 schemaConfig .MaxChunkAge = ingesterConfig .MaxChunkAge
@@ -122,15 +123,20 @@ func main() {
122123 tableManager .Start ()
123124 defer tableManager .Stop ()
124125
125- if rulerConfig .ConfigsAPIURL .String () != "" {
126+ if configStoreConfig .ConfigsAPIURL .String () != "" || configStoreConfig .DBConfig .URI != "" {
127+ rulesAPI , err := ruler .NewRulesAPI (configStoreConfig )
128+ if err != nil {
129+ level .Error (util .Logger ).Log ("msg" , "error initializing ruler config store" , "err" , err )
130+ os .Exit (1 )
131+ }
126132 rlr , err := ruler .NewRuler (rulerConfig , dist , chunkStore )
127133 if err != nil {
128134 level .Error (util .Logger ).Log ("msg" , "error initializing ruler" , "err" , err )
129135 os .Exit (1 )
130136 }
131137 defer rlr .Stop ()
132138
133- rulerServer , err := ruler .NewServer (rulerConfig , rlr )
139+ rulerServer , err := ruler .NewServer (rulerConfig , rlr , rulesAPI )
134140 if err != nil {
135141 level .Error (util .Logger ).Log ("msg" , "error initializing ruler server" , "err" , err )
136142 os .Exit (1 )
@@ -163,6 +169,18 @@ func main() {
163169 })
164170 }
165171
172+ // Only serve the API for setting & getting rules configs if the database
173+ // was provided. Allows for smoother migration. See
174+ // https://github.com/weaveworks/cortex/issues/619
175+ if configStoreConfig .DBConfig .URI != "" {
176+ a , err := ruler .NewAPIFromConfig (configStoreConfig .DBConfig )
177+ if err != nil {
178+ level .Error (util .Logger ).Log ("msg" , "error initializing public rules API" , "err" , err )
179+ os .Exit (1 )
180+ }
181+ a .RegisterRoutes (server .HTTP )
182+ }
183+
166184 subrouter := server .HTTP .PathPrefix ("/api/prom" ).Subrouter ()
167185 subrouter .PathPrefix ("/api/v1" ).Handler (activeMiddleware .Wrap (promRouter ))
168186 subrouter .Path ("/read" ).Handler (activeMiddleware .Wrap (http .HandlerFunc (sampleQueryable .RemoteReadHandler )))
0 commit comments