Comments (6)
from cli-utils.
Some context: kubectl apply
should "ContinueOnError", which is the default behavior. The current version of kubectl
included in cli-utils does not, but that is a bug. Upgrading to using kubectl
>= 1.18 should fix the bug.
from cli-utils.
For kpt, I think we need to consider "FailOnError" as a feature, not as a bug. No matter what the original intention, it has never actually continued on error. I agree though that upgrading the kubectl libraries is a good idea, but we need to support both continue-on-error and fail-on-error.
from cli-utils.
@seans3 Thanks for sharing the "ContinueOnError" in 1.18 kubectl. I'll take a look at that. @mortent In the kpt library, we need to provide an option for the apply behavior on error. By that option, the CLI will fail-on-error and the consumer of that library can choose continue-on-error.
from cli-utils.
Per offline discussion, we decided the apply process to be continue-on-error by default. The process has the following steps:
- (optional) Create the namespace for the inventory object if it doesn't exist
- update the inventory object with the union of last applied objects and current objects
- apply current objects
- prune last applied objects
- update the inventory object to remove the last applied objects from the inventory list
step 1 and step 2
- If it fails to create the namespace, the process exists with an error.
- If it fails to update the inventory object, the process exits with an error.
Once the inventory object is updated, the process should be continued to the last step of updating the inventory object even if some error occurs when applying/pruning an object.
step 3
For every resource being applied, it sends out an event.
- If the resource is successfully applied, send out an ApplyEvent without error
- If the resource is failed to be applied, send out an ApplyEvent with an error
step4
For every resource being pruned, it sends out an event.
- If the resource is successfully pruned, send out a PruneEvent without error
- If the resource is failed to be pruned, send out a PruneEvent with an error
step5
In the final step of updating the inventory object, the inventory list includes the union of the current set of objects and the previous objects that are failed to be pruned.
from cli-utils.
Fixed via #286
from cli-utils.
Related Issues (20)
- Bug: Destroyer should retain inventory if any objects failed to delete or reconcile HOT 4
- Bug: kstatus/status returns incorrect "Current" result immediately after DaemonSet apply HOT 2
- Bug: InventoryManager.SetObjectStatus doesn't actually update the object status
- Chore: refactor Filters to take TaskContext HOT 3
- Bug: Inventory updates should tolerate drift (and overwrite it) HOT 4
- Feature Request: Expose skip operation reasons HOT 3
- Bug: event printer only prints reconcile summary once (should be 1 for apply wait & 1 for prune wait) HOT 3
- Provide the possibility to override condition functions for resources HOT 10
- ObjectMetadata fieldSeparator is set to underscore, breaking Gitlab Kubernetes Agent and Crossplane. HOT 2
- kapply panic when the inventory object is missing HOT 5
- kstatus does not accept booleans for conditions HOT 7
- Table view as in `kpt live apply` is hard to read on slow terminals HOT 4
- Bug: objects flagged by CurrentUIDFilter should be removed from the inventory
- Watch for client-go deployments HOT 5
- Fix or reduce frequency or switch off perma-failing jobs HOT 6
- safely consuming kstatus collector updates HOT 6
- Feature Request: Optionally skip waiting for reconciliation HOT 9
- kstatus: defaults to fail open when no `status` field is available HOT 5
- Archive the repository? HOT 2
- Feature Request: Apply roles before bindings HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cli-utils.