Skip to content
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

Workaround controller-runtime webhook upsert bug #1337

Merged
merged 1 commit into from
Jul 23, 2019

Conversation

pebrc
Copy link
Collaborator

@pebrc pebrc commented Jul 22, 2019

Fixes #1335

  • deletes the webhook service on controller startup so that controller-runtime can recreate it correctly
  • not v happy with this solution, side effect in registration function, pretty hacky
  • alternatives:
    • do it in manager/main.go which is cleaner but need to reconstruct a lot of context there: are we actually trying to install webhooks (autoinstall flag set, operator has the webhook role)?,
    • don't fix it just document it?

@pebrc pebrc requested review from thbkrkr, anyasabo and sebgl July 22, 2019 21:28
@pebrc pebrc marked this pull request as ready for review July 23, 2019 07:14
@thbkrkr
Copy link
Contributor

thbkrkr commented Jul 23, 2019

I prefer this solution rather than documenting the removal of the webhook before the operator upgrade.

Why can not we reconcile this resource and the associated service like any other?

@pebrc
Copy link
Collaborator Author

pebrc commented Jul 23, 2019

Why can not we reconcile this resource and the associated service like any other?

Because we are using the webhook bootstrapping code built into controller-runtime. The long term solution is to remove that all together, but I wonder if we should do this as a temporary fix.

@pebrc pebrc added >bug Something isn't working v1.0.0-beta1 v0.9.0 labels Jul 23, 2019
@pebrc pebrc requested a review from barkbay July 23, 2019 14:27
Copy link
Contributor

@thbkrkr thbkrkr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I support this hack-ish change to ease the operator upgrade. I hope we will remove it as soon as we upgrade kube-builder.

@pebrc pebrc merged commit 0319605 into elastic:master Jul 23, 2019
pebrc added a commit to pebrc/cloud-on-k8s that referenced this pull request Jul 23, 2019
pebrc added a commit to pebrc/cloud-on-k8s that referenced this pull request Jul 23, 2019
sebgl added a commit that referenced this pull request Jul 24, 2019
* Use the setvmmaxmapcount initcontainer by default in E2E tests (#1300)

Let's keep our default defaults :)

The setting is disabled explicitly for E2E tests where we enable a
restricted security context.

* Add docs for plugins, custom configuration files and secure settings (#1298)

* Allow license secret webhook to fail (#1301)

Webhooks on core k8s objects are just too debilitating in case our
webhook service fails. This sets the failure policy for the secret
webhook to ignore to strike a balance between UX (immediate feedback)
and keeping the users k8s cluster in a working state. Also we have an
additional validation run on controller level so this does not allow
circumventing our validation logic.

* Revert "Use the setvmmaxmapcount initcontainer by default in E2E tests (#1300)" (#1302)

This reverts commit fff1526.
This commit is breaking our E2E tests chain, which deploy a
PodSecurityPolicy by default. Any privileged init container will not
work.

I'll open an issue for a longer-term fix to properly handle this.

* Update quickstart (#1307)

* Update the name of the secret for the elastic user
* Bump the Elastic Stack version from 7.1.0 to 7.2.0

* Change Kibana readiness endpoint to return a 200 OK (#1309)

The previous endpoint returned an http code 302. While this is fine for
Kubernetes, some derived systems like GCP LoadBalancers mimic the
container readiness check for their own readiness check. Except GCP
Loadbalancers only work with status 200.

It's not up to us to adapt GCP LoadBalancers to K8s, but this is a
fairly trivial fix.

* Fix pod_forwarder to support two part DNS names, adjust e2e http_client (#1297)

* Fix pod_forwarder to support two part DNS names, adjust e2e http_client url

* Revert removing .svc in e2e http_client

* [DOC] Resources management and volume claim template (#1252)

* Add resources and persistent volume templates documentation

* Ignore resources reconciled by older controllers (#1286)

* Document PodDisruptionBudget section of the ES spec (#1306)

* Document PodDisruptionBudget section of the ES spec

I suspect this might slightly change in the feature depending on how we
handle the readiness check, so I'm keeping this doc minimal for now:

* what is a PDB, briefly (with a link)
* default PDB we apply
* how to set a different PDB
* how to disable the default PDB

* Move version out from Makefile (#1312)

* Add release note generation tool (#1314)

* no external dependencies
* inspects PRs by version label
* generates structured release notes in asciidoc grouped by type label

* Add console output to standalone apm sample (#1321)

* Update Quickstart to 0.9.0 (#1317)

* Update doc (#1319)

* Update persistent storage section
* Update kibana localhost url to use https
* Update k8s resources names in accessing-services doc
* Mention SSL browser warning
* Fix bulleted list

* Add CI job for nightly builds (#1248)

* Move version to a file

* Add CI implementation

* Update VERSION

* Depend on another PR for moving out version from Makefile

* Update Jenkinsfile

* Don't build and push operator image in bootstrap-gke (#1332)

We don't need to do that anymore, since we don't use an init container
based on the operator image.

* Remove Docker image publishing from devops-ci (#1339)

* Suppress output of certain commands from Makefile (#1342)

* Document how to disable TLS (#1341)

* Use new credentials for Docker registry (#1346)

* Workaround controller-runtime webhook upsert bug (#1337)

* Fix docs build on PR job (#1351)

* Fix docs build on PR job

* Cleanup workspace before doing other steps

* APM: remove "output" element and add elasticsearchRef (#1345)

* Don't rely on buggy metaObject Kind (#1324)

* Don't rely on buggy metaObject Kind

A bug in our client implementation may clear the object's Kind on
certain scenarios. See
kubernetes-sigs/controller-runtime#406.

Let's avoid that by fixing a constant Kind returned by a method call on
the resource.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
>bug Something isn't working v0.9.0 v1.0.0-beta1
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Webhook validation fails after upgrade from 0.8 to 0.9
2 participants