-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Hot Reloading: Kubernetes Component hot reloading #7260
Hot Reloading: Kubernetes Component hot reloading #7260
Commits on Dec 27, 2023
-
Hot Reloading: SelfHosted Componenthot reloading
Part of dapr#1172 Adds hot reloading functionality to Daprd, which is gated behind the HotReload preview feature. If enabled, Daprd in Selfhosted mode will watch for resource updates from watching the resource directory(s). If a resource is detected as changed (spec is different to what is currently loaded), then Dapr will close/create/update the resource. Supports Component _except_ HTTP middlware which requires further changes to the HTTP server handler machinery. A warning is thrown if hot reloading is enabled and a HTTP middleware is updated. The hot reloader reconciler is made generic to enable other resource types to be added in future. --- When running in standalone mode, the disk loader watches the directories passed by --resources-path for updates to yaml files containing Components. When an event occurs, the reconciler and differ are responsible for determining whether any resources have been created, updated, or deleted, by comparing the local store specs with that of the remote. If any have changed, the resource is closed (if it exists), and then re-initialized (if it exists). A resource will only be closed if it has been deleted, only initialized if it has been created, and closed & initialized if it has been updated. We consider a resource to have changed generally if anything apart from its Kubernetes metadata or type meta object meta has changed, and therefore needs some kind of reloading. --- Currently, if a reloading component errors and `spec.ignoreErrors=false` then Daprd will gracefully close, like a component loaded at startup today. It is intended that in future the component will be re-inited on a backoff queue in future in the case of errors, even if `spec.ignoreErros=true`. HTTP middleware component hot reloading is not supported as it requires further changes to the HTTP server handler machinery, and I didn't want to grow this PR further. To use the HotReloading feature, which is currently only available as an alpha feature in Selfhosted mode, users need to add the following Configuration to the target Daprd; ```yaml apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: hotreloading spec: features: - name: HotReload enabled: true ``` Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for dcc4c02 - Browse repository at this point
Copy the full SHA dcc4c02View commit details -
Adds app ready checks for subscribed input bindings and pubsub
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for c807097 - Browse repository at this point
Copy the full SHA c807097View commit details -
Configuration menu - View commit details
-
Copy full SHA for bb6b06d - Browse repository at this point
Copy the full SHA bb6b06dView commit details -
Configuration menu - View commit details
-
Copy full SHA for e824506 - Browse repository at this point
Copy the full SHA e824506View commit details -
Updates reconciler to wait for processor queue to be empty after
each event Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for cc2243f - Browse repository at this point
Copy the full SHA cc2243fView commit details -
Revert processor pending resource queue to 0 channel
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for c3a773c - Browse repository at this point
Copy the full SHA c3a773cView commit details -
Configuration menu - View commit details
-
Copy full SHA for b808b4d - Browse repository at this point
Copy the full SHA b808b4dView commit details -
Configuration menu - View commit details
-
Copy full SHA for c8efb48 - Browse repository at this point
Copy the full SHA c8efb48View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2ce1d59 - Browse repository at this point
Copy the full SHA 2ce1d59View commit details -
Configuration menu - View commit details
-
Copy full SHA for 81cd03b - Browse repository at this point
Copy the full SHA 81cd03bView commit details -
Hot Reloading: SelfHosted Componenthot reloading
Part of dapr#1172 Adds hot reloading functionality to Daprd, which is gated behind the HotReload preview feature. If enabled, Daprd in Selfhosted mode will watch for resource updates from watching the resource directory(s). If a resource is detected as changed (spec is different to what is currently loaded), then Dapr will close/create/update the resource. Supports Component _except_ HTTP middlware which requires further changes to the HTTP server handler machinery. A warning is thrown if hot reloading is enabled and a HTTP middleware is updated. The hot reloader reconciler is made generic to enable other resource types to be added in future. --- When running in standalone mode, the disk loader watches the directories passed by --resources-path for updates to yaml files containing Components. When an event occurs, the reconciler and differ are responsible for determining whether any resources have been created, updated, or deleted, by comparing the local store specs with that of the remote. If any have changed, the resource is closed (if it exists), and then re-initialized (if it exists). A resource will only be closed if it has been deleted, only initialized if it has been created, and closed & initialized if it has been updated. We consider a resource to have changed generally if anything apart from its Kubernetes metadata or type meta object meta has changed, and therefore needs some kind of reloading. --- Currently, if a reloading component errors and `spec.ignoreErrors=false` then Daprd will gracefully close, like a component loaded at startup today. It is intended that in future the component will be re-inited on a backoff queue in future in the case of errors, even if `spec.ignoreErros=true`. HTTP middleware component hot reloading is not supported as it requires further changes to the HTTP server handler machinery, and I didn't want to grow this PR further. To use the HotReloading feature, which is currently only available as an alpha feature in Selfhosted mode, users need to add the following Configuration to the target Daprd; ```yaml apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: hotreloading spec: features: - name: HotReload enabled: true ``` Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for eabeee6 - Browse repository at this point
Copy the full SHA eabeee6View commit details -
Adds app ready checks for subscribed input bindings and pubsub
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for af2b64e - Browse repository at this point
Copy the full SHA af2b64eView commit details -
Hot Reloading: Operator Componenthot reloading
Branched from dapr#7239 Part of dapr#1172 Adds hot reloading functionality to Daprd, which is gated behind the HotReload preview feature. If enabled, Daprd in Kubernetes mode will watch for Component resource updates from the Operator. If a resource is detected as changed (spec is different to what is currently loaded), then Dapr will close/create/update the resource. Supports Component _except_ HTTP middlware which requires further changes to the HTTP server handler machinery. A warning is thrown if hot reloading is enabled and a HTTP middleware is updated. --- When running in Kubernetes mode, the operator loader streams updates from the Operator API. When an event occurs, the event type will trigger the resource to be created, updated, or deleted. Updated components will be closed, and then re-initialized. We consider a resource to have changed generally if anything apart from its Kubernetes metadata or type meta object meta has changed, and therefore needs some kind of reloading. --- Currently, if a reloading component errors and `spec.ignoreErrors=false` then Daprd will gracefully close, like a component loaded at startup today. It is intended that in future the component will be re-inited on a backoff queue in future in the case of errors, even if `spec.ignoreErros=true`. HTTP middleware component hot reloading is not supported as it requires further changes to the HTTP server handler machinery, and I didn't want to grow this PR further. To use the HotReloading feature, which is currently only available as an alpha feature in Selfhosted mode, users need to add the following Configuration to the target Daprd; ```yaml apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: hotreloading spec: features: - name: HotReload enabled: true ``` Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for 29d3746 - Browse repository at this point
Copy the full SHA 29d3746View commit details -
Configuration menu - View commit details
-
Copy full SHA for de78797 - Browse repository at this point
Copy the full SHA de78797View commit details -
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for f464bcf - Browse repository at this point
Copy the full SHA f464bcfView commit details -
Use correct URL endpoints for hotreloading e2e save
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for be0b495 - Browse repository at this point
Copy the full SHA be0b495View commit details -
Revert integration test case timeout to 180 seconds
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for 68e449b - Browse repository at this point
Copy the full SHA 68e449bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 56a6bdf - Browse repository at this point
Copy the full SHA 56a6bdfView commit details -
Use correct external URL target
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for e65e961 - Browse repository at this point
Copy the full SHA e65e961View commit details -
Configuration menu - View commit details
-
Copy full SHA for 54a25b4 - Browse repository at this point
Copy the full SHA 54a25b4View commit details -
Hot Reloading: SelfHosted Componenthot reloading
Part of dapr#1172 Adds hot reloading functionality to Daprd, which is gated behind the HotReload preview feature. If enabled, Daprd in Selfhosted mode will watch for resource updates from watching the resource directory(s). If a resource is detected as changed (spec is different to what is currently loaded), then Dapr will close/create/update the resource. Supports Component _except_ HTTP middlware which requires further changes to the HTTP server handler machinery. A warning is thrown if hot reloading is enabled and a HTTP middleware is updated. The hot reloader reconciler is made generic to enable other resource types to be added in future. --- When running in standalone mode, the disk loader watches the directories passed by --resources-path for updates to yaml files containing Components. When an event occurs, the reconciler and differ are responsible for determining whether any resources have been created, updated, or deleted, by comparing the local store specs with that of the remote. If any have changed, the resource is closed (if it exists), and then re-initialized (if it exists). A resource will only be closed if it has been deleted, only initialized if it has been created, and closed & initialized if it has been updated. We consider a resource to have changed generally if anything apart from its Kubernetes metadata or type meta object meta has changed, and therefore needs some kind of reloading. --- Currently, if a reloading component errors and `spec.ignoreErrors=false` then Daprd will gracefully close, like a component loaded at startup today. It is intended that in future the component will be re-inited on a backoff queue in future in the case of errors, even if `spec.ignoreErros=true`. HTTP middleware component hot reloading is not supported as it requires further changes to the HTTP server handler machinery, and I didn't want to grow this PR further. To use the HotReloading feature, which is currently only available as an alpha feature in Selfhosted mode, users need to add the following Configuration to the target Daprd; ```yaml apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: hotreloading spec: features: - name: HotReload enabled: true ``` Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for d5d7be9 - Browse repository at this point
Copy the full SHA d5d7be9View commit details -
Adds app ready checks for subscribed input bindings and pubsub
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for d62e8d9 - Browse repository at this point
Copy the full SHA d62e8d9View commit details -
Configuration menu - View commit details
-
Copy full SHA for f824261 - Browse repository at this point
Copy the full SHA f824261View commit details -
Configuration menu - View commit details
-
Copy full SHA for ddc528b - Browse repository at this point
Copy the full SHA ddc528bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 40fff23 - Browse repository at this point
Copy the full SHA 40fff23View commit details -
Configuration menu - View commit details
-
Copy full SHA for 4b2cbd8 - Browse repository at this point
Copy the full SHA 4b2cbd8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 19eb5ea - Browse repository at this point
Copy the full SHA 19eb5eaView commit details -
Configuration menu - View commit details
-
Copy full SHA for f3e5d60 - Browse repository at this point
Copy the full SHA f3e5d60View commit details
Commits on Jan 2, 2024
-
Configuration menu - View commit details
-
Copy full SHA for e483e9e - Browse repository at this point
Copy the full SHA e483e9eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 83562fb - Browse repository at this point
Copy the full SHA 83562fbView commit details -
Set eventually in crypto test to 5 secs
Signed-off-by: joshvanl <me@joshvanl.dev>
Configuration menu - View commit details
-
Copy full SHA for f2d34c4 - Browse repository at this point
Copy the full SHA f2d34c4View commit details
Commits on Jan 4, 2024
-
Configuration menu - View commit details
-
Copy full SHA for 49f7c97 - Browse repository at this point
Copy the full SHA 49f7c97View commit details -
Configuration menu - View commit details
-
Copy full SHA for b76e6ac - Browse repository at this point
Copy the full SHA b76e6acView commit details