diff --git a/CHANGELOG.md b/CHANGELOG.md index bc771dd108..df2ee3854b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,33 +27,39 @@ We use _breaking :warning:_ to mark changes that are not backward compatible (re - [#3705](https://github.com/thanos-io/thanos/pull/3705) Store: Fix race condition leading to failing queries or possibly incorrect query results. -## [v0.18.0](https://github.com/thanos-io/thanos/releases) - Release in progress +## [v0.18.0](https://github.com/thanos-io/thanos/releases/tag/v0.18.0) - 2021.01.27 ### Added -- [#3579](https://github.com/thanos-io/thanos/pull/3579) Cache: Added inmemory cache for caching bucket. -- [#3469](https://github.com/thanos-io/thanos/pull/3469) StoreAPI: Added `hints` field to `LabelNamesRequest` and `LabelValuesRequest`. Hints in an opaque data structure that can be used to carry additional information from the store and its content is implementation specific. +- [#3380](https://github.com/thanos-io/thanos/pull/3380) Mixin: Add block deletion panels for compactor dashboards. +- [#3568](https://github.com/thanos-io/thanos/pull/3568) Store: Optimized inject label stage of index lookup. +- [#3566](https://github.com/thanos-io/thanos/pull/3566) StoreAPI: Support label matchers in labels API. +- [#3531](https://github.com/thanos-io/thanos/pull/3531) Store: Optimized common cases for time selecting smaller amount of series by avoiding looking up symbols. +- [#3469](https://github.com/thanos-io/thanos/pull/3469) StoreAPI: Added `hints` field to `LabelNamesRequest` and `LabelValuesRequest`. Hints are an opaque data structure that can be used to carry additional information from the store and its content is implementation-specific. - [#3421](https://github.com/thanos-io/thanos/pull/3421) Tools: Added `thanos tools bucket rewrite` command allowing to delete series from given block. -- [#3509](https://github.com/thanos-io/thanos/pull/3509) Store: Added touch series limit -- [#3388](https://github.com/thanos-io/thanos/pull/3378) Tools: Bucket replicator now can specify block IDs to copy. -- [#3121](https://github.com/thanos-io/thanos/pull/3121) Receive: Added `--receive.hashrings` alternative to `receive.hashrings-file` flag (lower priority). Content of JSON file that contains the hashring configuration. +- [#3509](https://github.com/thanos-io/thanos/pull/3509) Store: Added a CLI flag to limit the number of series that are touched. +- [#3444](https://github.com/thanos-io/thanos/pull/3444) Query Frontend: Make POST request to downstream URL for labels and series API endpoints. +- [#3388](https://github.com/thanos-io/thanos/pull/3388) Tools: Bucket replicator now can specify block IDs to copy. +- [#3385](https://github.com/thanos-io/thanos/pull/3385) Tools: Bucket prints extra statistics for block index with debug log-level. +- [#3121](https://github.com/thanos-io/thanos/pull/3121) Receive: Added `--receive.hashrings` alternative to `receive.hashrings-file` flag (lower priority). The flag expects the literal hashring configuration in JSON format. ### Fixed +- [#3567](https://github.com/thanos-io/thanos/pull/3567) Mixin: Reintroduce `thanos_objstore_bucket_operation_failures_total` alert. - [#3527](https://github.com/thanos-io/thanos/pull/3527) Query Frontend: Fix query_range behavior when start/end times are the same -- [#3560](https://github.com/thanos-io/thanos/pull/3560) query-frontend: Allow separate label cache -- [#3672](https://github.com/thanos-io/thanos/pull/3672) rule: prevent rule crash from no such host error when using `dnssrv+` or `dnssrvnoa+`. - [#3760](https://github.com/thanos-io/thanos/pull/3760) Store: Fix panic caused by a race condition happening on concurrent index-header reader usage and unload, when `--store.enable-index-header-lazy-reader` is enabled. - [#3759](https://github.com/thanos-io/thanos/pull/3759) Store: Fix panic caused by a race condition happening on concurrent index-header lazy load and unload, when `--store.enable-index-header-lazy-reader` is enabled. +- [#3560](https://github.com/thanos-io/thanos/pull/3560) Query Frontend: Allow separate label cache +- [#3672](https://github.com/thanos-io/thanos/pull/3672) Rule: Prevent crashing due to `no such host error` when using `dnssrv+` or `dnssrvnoa+`. +- [#3461](https://github.com/thanos-io/thanos/pull/3461) Compact, Shipper, Store: Fixed panic when no external labels are set in block metadata. ### Changed -- [#3496](https://github.com/thanos-io/thanos/pull/3496) s3: Respect SignatureV2 flag for all credential providers. +- [#3496](https://github.com/thanos-io/thanos/pull/3496) S3: Respect SignatureV2 flag for all credential providers. - [#2732](https://github.com/thanos-io/thanos/pull/2732) Swift: Switched to a new library [ncw/swift](https://github.com/ncw/swift) providing large objects support. By default, segments will be uploaded to the same container directory `segments/` if the file is bigger than `1GB`. To change the defaults see [the docs](./docs/storage.md#openstack-swift). -- [#3626](https://github.com/thanos-io/thanos/pull/3626) Failed upload of `meta.json` file doesn't cause block cleanup anymore. This has a potential to generate corrupted blocks under specific conditions. Partial block is left in bucket for later cleanup. - +- [#3626](https://github.com/thanos-io/thanos/pull/3626) Shipper: Failed upload of `meta.json` file doesn't cause block cleanup anymore. This has a potential to generate corrupted blocks under specific conditions. Partial block is left in bucket for later cleanup. ## [v0.17.2](https://github.com/thanos-io/thanos/releases/tag/v0.17.2) - 2020.12.07 @@ -66,7 +72,8 @@ We use _breaking :warning:_ to mark changes that are not backward compatible (re ### Fixed -- [#3480](https://github.com/thanos-io/thanos/pull/3480) Query-frontend: Fixed regression. +- [#3480](https://github.com/thanos-io/thanos/pull/3480) Query Frontend: Fixed regression. +- [#3734](https://github.com/thanos-io/thanos/pull/3734) pkg/rules/proxy: fix hotlooping when receiving client errors ### Changed @@ -278,7 +285,6 @@ sse_config: - [#2579](https://github.com/thanos-io/thanos/pull/2579) Store: Experimental caching bucket can now cache metadata as well. Config has changed from #2532. - [#2526](https://github.com/thanos-io/thanos/pull/2526) Compact: In case there are no labels left after deduplication via `--deduplication.replica-label`, assign first `replica-label` with value `deduped`. - [#2621](https://github.com/thanos-io/thanos/pull/2621) Receive: Added flag to configure forward request timeout. Receive write will complete request as soon as quorum of writes succeeds. -- [#3380](https://github.com/thanos-io/thanos/pull/3380) mixin: Add block deletion panels for compactor dashboards. ### Changed diff --git a/VERSION b/VERSION index 498b6fb3d5..66333910a4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.18.0-dev +0.18.0 diff --git a/pkg/rules/proxy.go b/pkg/rules/proxy.go index 7910f0ef68..8a1493c906 100644 --- a/pkg/rules/proxy.go +++ b/pkg/rules/proxy.go @@ -108,6 +108,9 @@ func (stream *rulesStream) receive(ctx context.Context) error { } if err != nil { + // An error happened in Recv(), hence the underlying stream is aborted + // as per https://github.com/grpc/grpc-go/blob/7f2581f910fc21497091c4109b56d310276fc943/stream.go#L117-L125. + // We must not continue receiving additional data from it and must return. err = errors.Wrapf(err, "receiving rules from rules client %v", stream.client) if stream.request.PartialResponseStrategy == storepb.PartialResponseStrategy_ABORT { @@ -118,13 +121,15 @@ func (stream *rulesStream) receive(ctx context.Context) error { return errors.Wrapf(err, "sending rules error to server %v", stream.server) } - continue + // Return no error if response strategy is warning. + return nil } if w := rule.GetWarning(); w != "" { if err := stream.server.Send(rulespb.NewWarningRulesResponse(errors.New(w))); err != nil { return errors.Wrapf(err, "sending rules warning to server %v", stream.server) } + // Client stream is not aborted, it is ok to receive additional data. continue } diff --git a/pkg/rules/proxy_test.go b/pkg/rules/proxy_test.go new file mode 100644 index 0000000000..54e112ef00 --- /dev/null +++ b/pkg/rules/proxy_test.go @@ -0,0 +1,253 @@ +// Copyright (c) The Thanos Authors. +// Licensed under the Apache License 2.0. + +package rules + +import ( + "context" + "io" + "os" + "reflect" + "testing" + + "github.com/go-kit/kit/log" + "github.com/pkg/errors" + "github.com/thanos-io/thanos/pkg/rules/rulespb" + "github.com/thanos-io/thanos/pkg/store/storepb" + "google.golang.org/grpc" +) + +type testRulesClient struct { + grpc.ClientStream + rulesErr, recvErr error + response *rulespb.RulesResponse + sentResponse bool +} + +func (t *testRulesClient) String() string { + return "test" +} + +func (t *testRulesClient) Recv() (*rulespb.RulesResponse, error) { + // A simulation of underlying grpc Recv behavior as per https://github.com/grpc/grpc-go/blob/7f2581f910fc21497091c4109b56d310276fc943/stream.go#L117-L125. + if t.recvErr != nil { + return nil, t.recvErr + } + + if t.sentResponse { + return nil, io.EOF + } + t.sentResponse = true + + return t.response, nil +} + +func (t *testRulesClient) Rules(ctx context.Context, in *rulespb.RulesRequest, opts ...grpc.CallOption) (rulespb.Rules_RulesClient, error) { + return t, t.rulesErr +} + +var _ rulespb.RulesClient = &testRulesClient{} + +type testRulesServer struct { + grpc.ServerStream + sendErr error + response *rulespb.RulesResponse +} + +func (t *testRulesServer) String() string { + return "test" +} + +func (t *testRulesServer) Send(response *rulespb.RulesResponse) error { + if t.sendErr != nil { + return t.sendErr + } + t.response = response + return nil +} + +func (t *testRulesServer) Context() context.Context { + return context.Background() +} + +func TestProxy(t *testing.T) { + logger := log.NewLogfmtLogger(os.Stderr) + + for _, tc := range []struct { + name string + request *rulespb.RulesRequest + client rulespb.RulesClient + server *testRulesServer + wantResponse *rulespb.RulesResponse + wantError error + }{ + { + name: "rule group proxy success", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: rulespb.NewRuleGroupRulesResponse(&rulespb.RuleGroup{ + Name: "foo", + }), + recvErr: nil, + }, + server: &testRulesServer{}, + wantResponse: rulespb.NewRuleGroupRulesResponse(&rulespb.RuleGroup{ + Name: "foo", + }), + }, + { + name: "warning proxy success", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: rulespb.NewWarningRulesResponse(errors.New("warning from client")), + recvErr: nil, + }, + server: &testRulesServer{}, + wantResponse: rulespb.NewWarningRulesResponse(errors.New("warning from client")), + }, + { + name: "warn: retreiving rules client failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: nil, + rulesErr: errors.New("retreiving rules failed"), + }, + server: &testRulesServer{}, + wantResponse: rulespb.NewWarningRulesResponse(errors.New("fetching rules from rules client test: retreiving rules failed")), + }, + { + name: "warn: retreiving rules client failed, forward warning failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: nil, + rulesErr: errors.New("retreiving rules failed"), + }, + server: &testRulesServer{ + sendErr: errors.New("forwarding warning response failed"), + }, + wantError: errors.New("forwarding warning response failed"), + }, + { + name: "abort: retreiving rules client failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_ABORT, + }, + client: &testRulesClient{ + response: nil, + rulesErr: errors.New("retreiving rules failed"), + }, + server: &testRulesServer{}, + wantError: errors.New("fetching rules from rules client test: retreiving rules failed"), + }, + { + name: "warn: receive failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: nil, + recvErr: errors.New("503 from Prometheus"), + }, + server: &testRulesServer{}, + wantResponse: rulespb.NewWarningRulesResponse(errors.New("receiving rules from rules client test: 503 from Prometheus")), + }, + { + name: "warn: receive failed, forward warning failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: nil, + recvErr: errors.New("503 from Prometheus"), + }, + server: &testRulesServer{ + sendErr: errors.New("forwarding warning response failed"), + }, + wantError: errors.New("sending rules error to server test: forwarding warning response failed"), + }, + { + name: "abort: receive failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_ABORT, + }, + client: &testRulesClient{ + response: nil, + recvErr: errors.New("503 from Prometheus"), + }, + server: &testRulesServer{}, + wantError: errors.New("receiving rules from rules client test: 503 from Prometheus"), + }, + { + name: "send failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: rulespb.NewRuleGroupRulesResponse(&rulespb.RuleGroup{ + Name: "foo", + }), + recvErr: nil, + }, + server: &testRulesServer{ + sendErr: errors.New("sending message failed"), + }, + wantError: errors.New("rpc error: code = Unknown desc = send rules response: sending message failed"), + }, + { + name: "sending warning response failed", + request: &rulespb.RulesRequest{ + Type: rulespb.RulesRequest_ALL, + PartialResponseStrategy: storepb.PartialResponseStrategy_WARN, + }, + client: &testRulesClient{ + response: rulespb.NewWarningRulesResponse(errors.New("warning from client")), + recvErr: nil, + }, + server: &testRulesServer{ + sendErr: errors.New("sending message failed"), + }, + wantError: errors.New("sending rules warning to server test: sending message failed"), + }, + } { + t.Run(tc.name, func(t *testing.T) { + p := NewProxy(logger, func() []rulespb.RulesClient { + return []rulespb.RulesClient{tc.client} + }) + + err := p.Rules(tc.request, tc.server) + gotErr := "" + if err != nil { + gotErr = err.Error() + } + wantErr := "" + if tc.wantError != nil { + wantErr = tc.wantError.Error() + } + + if gotErr != wantErr { + t.Errorf("want error %q, got %q", wantErr, gotErr) + } + + if !reflect.DeepEqual(tc.wantResponse, tc.server.response) { + t.Errorf("want response %v, got %v", tc.wantResponse, tc.server.response) + } + }) + } +} diff --git a/tutorials/katacoda/thanos/1-globalview/courseBase.sh b/tutorials/katacoda/thanos/1-globalview/courseBase.sh index f6740c288f..4d53f3e701 100644 --- a/tutorials/katacoda/thanos/1-globalview/courseBase.sh +++ b/tutorials/katacoda/thanos/1-globalview/courseBase.sh @@ -1,4 +1,4 @@ #!/usr/bin/env bash docker pull quay.io/prometheus/prometheus:v2.16.0 -docker pull quay.io/thanos/thanos:v0.17.2 +docker pull quay.io/thanos/thanos:v0.18.0 diff --git a/tutorials/katacoda/thanos/1-globalview/step2.md b/tutorials/katacoda/thanos/1-globalview/step2.md index b14e0cc5bd..b7c0ae07fc 100644 --- a/tutorials/katacoda/thanos/1-globalview/step2.md +++ b/tutorials/katacoda/thanos/1-globalview/step2.md @@ -10,7 +10,7 @@ component and can be invoked in a single command. Let's take a look at all the Thanos commands: ``` -docker run --rm quay.io/thanos/thanos:v0.17.2 --help +docker run --rm quay.io/thanos/thanos:v0.18.0 --help ```{{execute}} You should see multiple commands that solves different purposes. @@ -53,7 +53,7 @@ docker run -d --net=host --rm \ -v $(pwd)/prometheus0_eu1.yml:/etc/prometheus/prometheus.yml \ --name prometheus-0-sidecar-eu1 \ -u root \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19090 \ --grpc-address 0.0.0.0:19190 \ @@ -68,7 +68,7 @@ docker run -d --net=host --rm \ -v $(pwd)/prometheus0_us1.yml:/etc/prometheus/prometheus.yml \ --name prometheus-0-sidecar-us1 \ -u root \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19091 \ --grpc-address 0.0.0.0:19191 \ @@ -81,7 +81,7 @@ docker run -d --net=host --rm \ -v $(pwd)/prometheus1_us1.yml:/etc/prometheus/prometheus.yml \ --name prometheus-1-sidecar-us1 \ -u root \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19092 \ --grpc-address 0.0.0.0:19192 \ diff --git a/tutorials/katacoda/thanos/1-globalview/step3.md b/tutorials/katacoda/thanos/1-globalview/step3.md index 0238be5e8a..40be4f6264 100644 --- a/tutorials/katacoda/thanos/1-globalview/step3.md +++ b/tutorials/katacoda/thanos/1-globalview/step3.md @@ -28,7 +28,7 @@ Click below snippet to start the Querier. ``` docker run -d --net=host --rm \ --name querier \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:29090 \ --query.replica-label replica \ diff --git a/tutorials/katacoda/thanos/2-lts/courseBase.sh b/tutorials/katacoda/thanos/2-lts/courseBase.sh index cc628b61a3..e3dd261757 100644 --- a/tutorials/katacoda/thanos/2-lts/courseBase.sh +++ b/tutorials/katacoda/thanos/2-lts/courseBase.sh @@ -2,7 +2,7 @@ docker pull minio/minio:RELEASE.2019-01-31T00-31-19Z docker pull quay.io/prometheus/prometheus:v2.20.0 -docker pull quay.io/thanos/thanos:v0.16.0 +docker pull quay.io/thanos/thanos:v0.18.0 docker pull quay.io/thanos/thanosbench:v0.2.0-rc.1 mkdir /root/editor diff --git a/tutorials/katacoda/thanos/2-lts/step1.md b/tutorials/katacoda/thanos/2-lts/step1.md index b433a6e67d..46a7045679 100644 --- a/tutorials/katacoda/thanos/2-lts/step1.md +++ b/tutorials/katacoda/thanos/2-lts/step1.md @@ -117,7 +117,7 @@ Similar to previous course, let's setup global view querying with sidecar: docker run -d --net=host --rm \ --name prometheus-0-eu1-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19090 \ --grpc-address 0.0.0.0:19190 \ @@ -130,7 +130,7 @@ so we will make sure we point the Querier to the gRPC endpoints of the sidecar: ``` docker run -d --net=host --rm \ --name querier \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:9091 \ --query.replica-label replica \ diff --git a/tutorials/katacoda/thanos/2-lts/step2.md b/tutorials/katacoda/thanos/2-lts/step2.md index 81a399a5e0..3cc24c6df1 100644 --- a/tutorials/katacoda/thanos/2-lts/step2.md +++ b/tutorials/katacoda/thanos/2-lts/step2.md @@ -79,7 +79,7 @@ docker run -d --net=host --rm \ -v /root/prom-eu1:/prometheus \ --name prometheus-0-eu1-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --tsdb.path /prometheus \ --objstore.config-file /etc/thanos/minio-bucket.yaml \ diff --git a/tutorials/katacoda/thanos/2-lts/step3.md b/tutorials/katacoda/thanos/2-lts/step3.md index 05d39f0b67..8ce0891d22 100644 --- a/tutorials/katacoda/thanos/2-lts/step3.md +++ b/tutorials/katacoda/thanos/2-lts/step3.md @@ -6,7 +6,7 @@ In this step, we will learn about Thanos Store Gateway and how to deploy it. Let's take a look at all the Thanos commands: -```docker run --rm quay.io/thanos/thanos:v0.16.0 --help```{{execute}} +```docker run --rm quay.io/thanos/thanos:v0.18.0 --help```{{execute}} You should see multiple commands that solve different purposes, block storage based long-term storage for Prometheus. @@ -32,7 +32,7 @@ You can read more about [Store](https://thanos.io/tip/components/store.md/) here docker run -d --net=host --rm \ -v /root/editor/bucket_storage.yaml:/etc/thanos/minio-bucket.yaml \ --name store-gateway \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ store \ --objstore.config-file /etc/thanos/minio-bucket.yaml \ --http-address 0.0.0.0:19091 \ @@ -49,7 +49,7 @@ Currently querier does not know about store yet. Let's change it by adding Store docker stop querier && \ docker run -d --net=host --rm \ --name querier \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:9091 \ --query.replica-label replica \ diff --git a/tutorials/katacoda/thanos/2-lts/step4.md b/tutorials/katacoda/thanos/2-lts/step4.md index 03aa99e8e5..001773acb7 100644 --- a/tutorials/katacoda/thanos/2-lts/step4.md +++ b/tutorials/katacoda/thanos/2-lts/step4.md @@ -25,7 +25,7 @@ Click below snippet to start the Compactor. docker run -d --net=host --rm \ -v /root/editor/bucket_storage.yaml:/etc/thanos/minio-bucket.yaml \ --name thanos-compact \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ compact \ --wait --wait-interval 30s \ --consistency-delay 0s \ diff --git a/tutorials/katacoda/thanos/6-query-caching/courseBase.sh b/tutorials/katacoda/thanos/6-query-caching/courseBase.sh index b75a3a5edf..804e416ebe 100644 --- a/tutorials/katacoda/thanos/6-query-caching/courseBase.sh +++ b/tutorials/katacoda/thanos/6-query-caching/courseBase.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash docker pull quay.io/prometheus/prometheus:v2.22.2 -docker pull quay.io/thanos/thanos:v0.17.0 +docker pull quay.io/thanos/thanos:v0.18.0 docker pull yannrobert/docker-nginx diff --git a/tutorials/katacoda/thanos/6-query-caching/step1.md b/tutorials/katacoda/thanos/6-query-caching/step1.md index 92bb3a89f5..824e3d1f97 100644 --- a/tutorials/katacoda/thanos/6-query-caching/step1.md +++ b/tutorials/katacoda/thanos/6-query-caching/step1.md @@ -103,7 +103,7 @@ docker run -d --net=host --rm \ -v $(pwd)/prometheus"${i}".yml:/etc/prometheus/prometheus.yml \ --name prometheus-sidecar"${i}" \ -u root \ - quay.io/thanos/thanos:v0.17.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address=0.0.0.0:1909"${i}" \ --grpc-address=0.0.0.0:1919"${i}" \ @@ -129,7 +129,7 @@ And now, let's deploy Thanos Querier to have a global overview on our services. ``` docker run -d --net=host --rm \ --name querier \ - quay.io/thanos/thanos:v0.17.0 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:10912 \ --grpc-address 0.0.0.0:10901 \ diff --git a/tutorials/katacoda/thanos/6-query-caching/step2.md b/tutorials/katacoda/thanos/6-query-caching/step2.md index ff51d41409..d897435efc 100644 --- a/tutorials/katacoda/thanos/6-query-caching/step2.md +++ b/tutorials/katacoda/thanos/6-query-caching/step2.md @@ -62,7 +62,7 @@ And deploy Query Frontend: docker run -d --net=host --rm \ -v $(pwd)/frontend.yml:/etc/thanos/frontend.yml \ --name query-frontend \ - quay.io/thanos/thanos:v0.17.0 \ + quay.io/thanos/thanos:v0.18.0 \ query-frontend \ --http-address 0.0.0.0:20902 \ --query-frontend.compress-responses \ diff --git a/tutorials/katacoda/thanos/7-multi-tenancy/courseBase.sh b/tutorials/katacoda/thanos/7-multi-tenancy/courseBase.sh index e186a04053..9d96284940 100644 --- a/tutorials/katacoda/thanos/7-multi-tenancy/courseBase.sh +++ b/tutorials/katacoda/thanos/7-multi-tenancy/courseBase.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash docker pull quay.io/prometheus/prometheus:v2.20.0 -docker pull quay.io/thanos/thanos:v0.17.2 +docker pull quay.io/thanos/thanos:v0.18.0 docker pull quay.io/thanos/prom-label-proxy:v0.3.0-rc.0-ext1 docker pull caddy:2.2.1 diff --git a/tutorials/katacoda/thanos/7-multi-tenancy/step1.md b/tutorials/katacoda/thanos/7-multi-tenancy/step1.md index 686b48482c..b34c112756 100644 --- a/tutorials/katacoda/thanos/7-multi-tenancy/step1.md +++ b/tutorials/katacoda/thanos/7-multi-tenancy/step1.md @@ -88,7 +88,7 @@ docker run -d --net=host --rm \ -v $(pwd)/editor/prometheus0_fruit.yml:/etc/prometheus/prometheus.yml \ --name prometheus-0-sidecar-fruit \ -u root \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19090 \ --grpc-address 0.0.0.0:19190 \ @@ -120,7 +120,7 @@ docker run -d --net=host --rm \ -v $(pwd)/editor/prometheus0_veggie.yml:/etc/prometheus/prometheus.yml \ --name prometheus-0-sidecar-veggie \ -u root \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19091 \ --grpc-address 0.0.0.0:19191 \ @@ -152,7 +152,7 @@ docker run -d --net=host --rm \ -v $(pwd)/editor/prometheus1_veggie.yml:/etc/prometheus/prometheus.yml \ --name prometheus-01-sidecar-veggie \ -u root \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19092 \ --grpc-address 0.0.0.0:19192 \ @@ -170,7 +170,7 @@ Fruit: ``` docker run -d --net=host --rm \ --name querier-fruit \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:29091 \ --grpc-address 0.0.0.0:29191 \ @@ -183,7 +183,7 @@ Veggie: ``` docker run -d --net=host --rm \ --name querier-veggie \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:29092 \ --grpc-address 0.0.0.0:29192 \ diff --git a/tutorials/katacoda/thanos/7-multi-tenancy/step2.md b/tutorials/katacoda/thanos/7-multi-tenancy/step2.md index 85796de8a2..5a63ed2dae 100644 --- a/tutorials/katacoda/thanos/7-multi-tenancy/step2.md +++ b/tutorials/katacoda/thanos/7-multi-tenancy/step2.md @@ -11,7 +11,7 @@ docker stop querier-fruit && docker stop querier-veggie ``` docker run -d --net=host --rm \ --name querier-multi \ - quay.io/thanos/thanos:v0.17.2 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:29090 \ --grpc-address 0.0.0.0:29190 \ diff --git a/tutorials/katacoda/thanos/x-playground/courseBase.sh b/tutorials/katacoda/thanos/x-playground/courseBase.sh index b66bef6970..9a5e40ba35 100644 --- a/tutorials/katacoda/thanos/x-playground/courseBase.sh +++ b/tutorials/katacoda/thanos/x-playground/courseBase.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash docker pull quay.io/prometheus/prometheus:v2.20.0 -docker pull quay.io/thanos/thanos:v0.16.0 +docker pull quay.io/thanos/thanos:v0.18.0 docker pull quay.io/thanos/thanosbench:v0.2.0-rc.1 docker pull minio/minio:RELEASE.2019-01-31T00-31-19Z diff --git a/tutorials/katacoda/thanos/x-playground/step1.md b/tutorials/katacoda/thanos/x-playground/step1.md index 2b63b6fd59..402ebb756a 100644 --- a/tutorials/katacoda/thanos/x-playground/step1.md +++ b/tutorials/katacoda/thanos/x-playground/step1.md @@ -169,7 +169,7 @@ docker run -d --net=host --rm \ ### Step1: Sidecar ``` -docker run -it --rm quay.io/thanos/thanos:v0.16.0 --help +docker run -it --rm quay.io/thanos/thanos:v0.18.0 --help ```{{execute}} @@ -180,7 +180,7 @@ docker run -d --net=host --rm \ -v ${CURR_DIR}/prom-eu1-replica0-config.yaml:/etc/prometheus/prometheus.yml \ --name prom-eu1-0-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19091 \ --grpc-address 0.0.0.0:19191 \ @@ -195,7 +195,7 @@ docker run -d --net=host --rm \ -v ${CURR_DIR}/prom-eu1-replica1-config.yaml:/etc/prometheus/prometheus.yml \ --name prom-eu1-1-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19092 \ --grpc-address 0.0.0.0:19192 \ @@ -210,7 +210,7 @@ docker run -d --net=host --rm \ -v ${CURR_DIR}/prom-us1-replica0-config.yaml:/etc/prometheus/prometheus.yml \ --name prom-us1-0-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --http-address 0.0.0.0:19093 \ --grpc-address 0.0.0.0:19193 \ @@ -223,7 +223,7 @@ docker run -d --net=host --rm \ ``` docker run -d --net=host --rm \ --name querier \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:9090 \ --grpc-address 0.0.0.0:19190 \ diff --git a/tutorials/katacoda/thanos/x-playground/step2.md b/tutorials/katacoda/thanos/x-playground/step2.md index d27ebbaa24..efaa56c3fc 100644 --- a/tutorials/katacoda/thanos/x-playground/step2.md +++ b/tutorials/katacoda/thanos/x-playground/step2.md @@ -65,7 +65,7 @@ docker run -d --net=host --rm \ -v ${CURR_DIR}/prom-eu1-replica0:/prometheus \ --name prom-eu1-0-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --tsdb.path /prometheus \ --objstore.config-file /etc/thanos/minio-bucket.yaml \ @@ -85,7 +85,7 @@ docker run -d --net=host --rm \ -v ${CURR_DIR}/prom-eu1-replica1:/prometheus \ --name prom-eu1-1-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --tsdb.path /prometheus \ --objstore.config-file /etc/thanos/minio-bucket.yaml \ @@ -105,7 +105,7 @@ docker run -d --net=host --rm \ -v ${CURR_DIR}/prom-us1-replica0:/prometheus \ --name prom-us1-0-sidecar \ -u root \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ sidecar \ --tsdb.path /prometheus \ --objstore.config-file /etc/thanos/minio-bucket.yaml \ @@ -130,7 +130,7 @@ Let's run Store Gateway server: docker run -d --net=host --rm \ -v ${CURR_DIR}/minio-bucket.yaml:/etc/thanos/minio-bucket.yaml \ --name store-gateway \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ store \ --objstore.config-file /etc/thanos/minio-bucket.yaml \ --http-address 0.0.0.0:19094 \ @@ -143,7 +143,7 @@ docker run -d --net=host --rm \ docker stop querier && \ docker run -d --net=host --rm \ --name querier \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ query \ --http-address 0.0.0.0:9090 \ --grpc-address 0.0.0.0:19190 \ @@ -162,7 +162,7 @@ Visit https://[[HOST_SUBDOMAIN]]-9090-[[KATACODA_HOST]].environments.katacoda.co docker run -d --net=host --rm \ -v ${CURR_DIR}/minio-bucket.yaml:/etc/thanos/minio-bucket.yaml \ --name compactor \ - quay.io/thanos/thanos:v0.16.0 \ + quay.io/thanos/thanos:v0.18.0 \ compact \ --wait --wait-interval 30s \ --consistency-delay 0s \