-
Notifications
You must be signed in to change notification settings - Fork 363
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
refactor: set defaults in Deployment, else k8s sets them for you, creating infinite reconciliation loop #1594
Conversation
Codecov Report
@@ Coverage Diff @@
## main #1594 +/- ##
==========================================
- Coverage 64.90% 64.82% -0.09%
==========================================
Files 83 83
Lines 11912 11924 +12
==========================================
- Hits 7732 7730 -2
- Misses 3701 3711 +10
- Partials 479 483 +4
|
Signed-off-by: qicz <[email protected]>
Signed-off-by: qicz <[email protected]>
Signed-off-by: qicz <[email protected]>
Signed-off-by: qicz <[email protected]>
@qicz can you please elaborate on the bug ? |
the gateway/internal/gatewayapi/runner/runner.go Lines 91 to 97 in 4e6786a
and the gateway/internal/infrastructure/runner/runner.go Lines 56 to 75 in 4e6786a
gateway/internal/infrastructure/kubernetes/infra_resource.go Lines 63 to 78 in 4e6786a
when creating the deployment, some filed will fill default values like gateway/internal/infrastructure/kubernetes/infra_resource.go Lines 75 to 84 in 328a7dc
gateway/internal/infrastructure/kubernetes/infra_client.go Lines 39 to 45 in 328a7dc
|
maybe we should watch the |
Signed-off-by: qicz <[email protected]>
@zirain the e2e needs review, sometime works fine on v1.27.0, or v1.25.8 or v1.26.3 but can not works fine all. |
Signed-off-by: qicz <[email protected]>
Signed-off-by: qicz <[email protected]>
should the logic be reverted back to update only the fields that EG cares about instead of updating entire object ? |
maybe needs a controller for At present, we only compare the fields that EG cares about or ignore some fields for subsequent feature development, which is easy to cause comparative logic omissions. At the same time, when the HPA is triggered, it will also be affected, for example, the original number of replicas is 2, the HPA is changed to 3, at this time we modify the |
Signed-off-by: qicz <[email protected]>
@arkodg ptal, has been updated ref offline communication |
Signed-off-by: qicz <[email protected]>
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.
LGTM thanks !
Signed-off-by: qi <[email protected]>
Signed-off-by: qicz <[email protected]>
cc @arkodg need cherrypick to release-0.5? |
/wait #1714 |
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.
Good catch and thanks for digging into the problem : )
have no idea about the fail, maybe something underlying changed? |
…ating infinite reconciliation loop (envoyproxy#1594) * fix: envoy proxy resource apply bug. Signed-off-by: qicz <[email protected]> * update pointer. Signed-off-by: qicz <[email protected]> * add comment Signed-off-by: qicz <[email protected]> * update cm cmp logic. Signed-off-by: qicz <[email protected]> * fix lint Signed-off-by: qicz <[email protected]> * add probe field default value. Signed-off-by: qicz <[email protected]> * fix uts Signed-off-by: qicz <[email protected]> * align probe Signed-off-by: qicz <[email protected]> * optimize deploy compare logic Signed-off-by: qicz <[email protected]> * add compare deploy uts Signed-off-by: qicz <[email protected]> * rm cm binarydata cmp Signed-off-by: qicz <[email protected]> * rm deploy cmp logic Signed-off-by: qicz <[email protected]> * fix ut Signed-off-by: qicz <[email protected]> * fix lint Signed-off-by: qicz <[email protected]> --------- Signed-off-by: qicz <[email protected]> Signed-off-by: qi <[email protected]> (cherry picked from commit 9ba9103)
* refactor: set defaults in Deployment, else k8s sets them for you, creating infinite reconciliation loop (#1594) * fix: envoy proxy resource apply bug. Signed-off-by: qicz <[email protected]> * update pointer. Signed-off-by: qicz <[email protected]> * add comment Signed-off-by: qicz <[email protected]> * update cm cmp logic. Signed-off-by: qicz <[email protected]> * fix lint Signed-off-by: qicz <[email protected]> * add probe field default value. Signed-off-by: qicz <[email protected]> * fix uts Signed-off-by: qicz <[email protected]> * align probe Signed-off-by: qicz <[email protected]> * optimize deploy compare logic Signed-off-by: qicz <[email protected]> * add compare deploy uts Signed-off-by: qicz <[email protected]> * rm cm binarydata cmp Signed-off-by: qicz <[email protected]> * rm deploy cmp logic Signed-off-by: qicz <[email protected]> * fix ut Signed-off-by: qicz <[email protected]> * fix lint Signed-off-by: qicz <[email protected]> --------- Signed-off-by: qicz <[email protected]> Signed-off-by: qi <[email protected]> (cherry picked from commit 9ba9103) * DeepCopy resources that require status updates (#1723) * Was seeing constant churn between provider runner publishing resources and gateway-api runner receiving them. * Tried to debug it by printing the o/p of `cmp.Diff` between current and previous values ``` diff --git a/internal/gatewayapi/runner/runner.go b/internal/gatewayapi/runner/runner.go index 050394ba..50d09f6f 100644 --- a/internal/gatewayapi/runner/runner.go +++ b/internal/gatewayapi/runner/runner.go @@ -8,6 +8,7 @@ package runner import ( "context" + "github.com/google/go-cmp/cmp" "k8s.io/apimachinery/pkg/runtime/schema" "sigs.k8s.io/gateway-api/apis/v1beta1" "sigs.k8s.io/yaml" @@ -49,6 +50,7 @@ func (r *Runner) Start(ctx context.Context) error { } func (r *Runner) subscribeAndTranslate(ctx context.Context) { + prev := &gatewayapi.Resources{} message.HandleSubscription(r.ProviderResources.GatewayAPIResources.Subscribe(ctx), func(update message.Update[string, *gatewayapi.Resources]) { val := update.Value @@ -56,6 +58,9 @@ func (r *Runner) subscribeAndTranslate(ctx context.Context) { if update.Delete || val == nil { return } + diff := cmp.Diff(prev, val) + r.Logger.WithValues("output", "diff").Info(diff) + prev = val.DeepCopy() // Translate and publish IRs. t := &gatewayapi.Translator{ ``` Here's the o/p and its empty ``` 2023-07-27T23:55:29.795Z INFO gateway-api runner/runner.go:62 {"runner": "gateway-api", "output": "diff"} ``` * Using a DeepCopy for resources that were updating the `Status` subresource seems to have solved the issue, which implies that watchable doesnt like clients to mutate the value, even though they are meant to be a `DeepCopy` Fixes: #1715 Signed-off-by: Arko Dasgupta <[email protected]> (cherry picked from commit 5b72451) * observability: add container port for metrics (#1736) container port Signed-off-by: zirain <[email protected]> (cherry picked from commit 4bba03a) * docs: Add user docs for EnvoyPatchPolicy (#1733) * Add user docs for EnvoyPatchPolicy Relates to #24 Signed-off-by: Arko Dasgupta <[email protected]> * nits Signed-off-by: Arko Dasgupta <[email protected]> * wrap up Signed-off-by: Arko Dasgupta <[email protected]> * lint Signed-off-by: Arko Dasgupta <[email protected]> * address comments && fix config Signed-off-by: Arko Dasgupta <[email protected]> --------- Signed-off-by: Arko Dasgupta <[email protected]> (cherry picked from commit 27b0939) * e2e & misc fixes for EnvoyPatchPolicy (#1738) * Add E2E for EnvoyPatchPolicy * Use LocalReplyConfig to return a custom status code `406` when there is no valid route match Signed-off-by: Arko Dasgupta <[email protected]> (cherry picked from commit a7784c5) --------- Signed-off-by: Arko Dasgupta <[email protected]> Co-authored-by: qi <[email protected]> Co-authored-by: zirain <[email protected]>
Which issue(s) this PR fixes:
fixes the envoy proxy resources update bug, the resourceProvider's provides resources have more different fields from applied.
Fixes