-
Notifications
You must be signed in to change notification settings - Fork 544
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
6964 mimir istio fixes #6965
base: main
Are you sure you want to change the base?
6964 mimir istio fixes #6965
Conversation
…ing in the sidecar when querier tries to send query results back to the frontend (using the podip)
…oper protocol selection in istio; allow to optionally set appProtocol to tcp
…nts to istio for protocol-selection
…s enabled for istio to register the podip's which is required for querier to report back the results
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the contribution! We don't have much experience with istio, so this contribution is very valuable.
I left a couple of comments and questions, but the core of the change makes sense to me
CHANGELOG.md
Outdated
@@ -68,6 +68,7 @@ | |||
* `store_gateway_zone_c_node_affinity_matchers` | |||
* [FEATURE] Ingester: Allow automated zone-by-zone downscaling, that can be enabled via the `ingester_automated_downscale_enabled` flag. It is disabled by default. #6850 | |||
* [BUGFIX] Update memcached-exporter to 0.14.1 due to CVE-2023-39325. #6861 | |||
* [BUGFIX] Always generate query-frontend headless service (otherwise istio doesn't register the pod ip's for querier to report back the results) #6964 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* [BUGFIX] Always generate query-frontend headless service (otherwise istio doesn't register the pod ip's for querier to report back the results) #6964 | |
* [BUGFIX] Always generate query-frontend headless service (otherwise, istio doesn't register the pod IPs for querier to report back the results). #6965 |
we usually put the PR number in the changelog entry, so it's easier to trace back the change
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let me make a fix there...
@@ -40,6 +40,7 @@ Entries should include a reference to the Pull Request that introduced the chang | |||
* [BUGFIX] Let the unified gatway/nginx config listen on IPv6 as well. Followup to #5948. #6204 | |||
* [BUGFIX] Quote `checksum/config` when using external config. This allows setting `externalConfigVersion` to numeric values. #6407 | |||
* [BUGFIX] Update memcached-exporter to 0.14.1 due to CVE-2023-39325. #6861 | |||
* [BUGFIX] Allow Mimir to run injected (istio); optionally add appProtocol to memcached svc's and grpc ports and always generate query-frontend headless service (otherwise istio doesn't register the pod ip's for querier to report back the results) #6964 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* [BUGFIX] Allow Mimir to run injected (istio); optionally add appProtocol to memcached svc's and grpc ports and always generate query-frontend headless service (otherwise istio doesn't register the pod ip's for querier to report back the results) #6964 | |
* [BUGFIX] Allow Mimir to run injected (istio); optionally add appProtocol to memcached services and gRPC ports and always generate query-frontend headless service (otherwise, istio doesn't register the pod IPs for querier to report back the results). #6965 |
appProtocol: | ||
# -- Set the optional service protocol. Ex: "tcp" | ||
client: null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it took me a bit to understand the format of this parameter. Is client
meant to represent the name of the port on the service? If so let's call it memcached-client
, like it actually is on the Service manifest.
Perhaps adding a more explicit doc on the field would also help; something like
appProtocol: | |
# -- Set the optional service protocol. Ex: "tcp" | |
client: null | |
appProtocol: | |
# -- Set the optional service appProtocol for the memcached-client port. Ex: "tcp" | |
memcached-client: null |
Also, can you apply this to all the ports in this PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, i had to somehow refer to the port, and indeed client isn't the best choice there, i will rework.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
aha, that makes more sense now. Sorry for making you change this twice, but can you add a comment explaining what the null
value means too?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also, can you make it explicit that the keys in appProtocol
refer to individual ports of the service? A common on each key or on appProtocol
itself should be sufficient
appProtocol: | ||
# -- Set the optional service protocol. Ex: "tcp" | ||
client: null |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding this as a separate comment because it's a different topic: can you help me understand why we wouldn't want to set the appProtocol by default? I tried setting it to grpc
in a cluster without istio and nothing broke 😄 but that's not a very rigorous test
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well actually I took this approach from the tempo charts, both the values structure and the choice of not adding it be default. I guess this is the most flexible way of doing it, if a deployment has multiple ports you can just extend the structure and when you run a different mesh requiring a different app-protocol you can easily configure it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fair enough - consistency with tempo and flexibility with other meshes. Would have been time to be compatible by default with istio, but maybe we're not there.
The CI seems to be failing. The lint-jsonnet step is failing because the rendered kubernetes manifests for jsonnet haven't been updated. You can do that with However, lint-helm seems to be failing with some helm templating issue. I can reproduce the failure locally with running |
The CHANGELOG has just been cut to prepare for the next Mimir release. Please rebase |
@Paul424 Are you able to clean up this MR according to the requests so this is able to get merged? Having better istio support we be a great feature to have and I and I'm sure many others look forward to getting this merged in and having it available |
@nbjohnson I would love to, but I no longer have access to the dev/env I used to work on this PR. Give me some time to setup a new environment... or if someone else wants to fork and complete the PR? fine for me. |
Thank you for your contribution. This pull request has been marked as stale because it has had no activity in the last 150 days. It will be closed in 30 days if there is no further activity. If you need more time, you can add a comment to the PR. |
What this PR does
Solves networking issues when running mimir injected (istio). Following issue's are addressed:
Which issue(s) this PR fixes or relates to
Fixes #6964
Checklist
CHANGELOG.md
updated - the order of entries should be[CHANGE]
,[FEATURE]
,[ENHANCEMENT]
,[BUGFIX]
.about-versioning.md
updated with experimental features.