Commit Graph

29 Commits

Author SHA1 Message Date
Julian V. Modesto
e4368eb67e Implement server-side apply upgrade & downgrade.
- Allow client-side to server-side apply upgrade.

  Ensure that a user can change management of an object from client-side apply to
  server-side apply without conflicts.

- Allow server-side apply to client-side downgrade.

  For an object managed with client-side apply, a user may upgrade to
  managing the object with server-side apply, then decide to downgrade.

  We can support this downgrade by keeping the last-applied-configuration
  annotation for client-side apply updated with server-side apply.
2020-07-08 19:14:03 -04:00
Kubernetes Prow Robot
83f343011f
Merge pull request #91308 from julianvmodesto/remove-deprecated-server-dry-run-flag
Remove deprecated --server-dry-run from kubectl apply
2020-05-29 01:05:35 -07:00
Julian V. Modesto
3e93f99262 Remove deprecated --server-dry-run.
For the beta server-side dry-run feature, `kubectl apply` provided the
`--server-dry-run` flag.

As of 1.18, this flag was deprecated and marked to be removed after 1
release.
2020-05-20 16:53:53 -04:00
Julian V. Modesto
f0eb68c0cf Make client-side apply safer
- Remove the ServerDryRun field and delegate it entirely to the resource.Helper
- Use resource.Helper for deletions (as in `kubectl apply --force`)
instead of using the pruner's method that uses a dynamic client
- Reduce the resource.Helpers and times we check for server-side dry-run
in apply
2020-05-19 17:01:47 -04:00
Julian V. Modesto
360c348d0e Set kubectl field manager names 2020-05-09 13:24:39 -04:00
Kubernetes Prow Robot
b0806d0c02
Merge pull request #90165 from ScrapCodes/fix_flake_run_apply
Fixed flaky test by changing get_object_assert -> wait_object_assert.
2020-04-16 08:38:59 -07:00
Prashant Sharma
5a765b1e15 Changed get_object_assert -> wait_object_assert, to fix the flaky test. 2020-04-16 10:01:18 +05:30
Tatsuhiro Tsujikawa
7af3b01f24 Restore the ability to kubectl apply --prune without -n flag
Before https://github.com/kubernetes/kubernetes/pull/83084, `kubectl
apply --prune` can prune resources in all namespaces specified in
config files.  After that PR got merged, only a single namespace is
considered for pruning.  It is OK if namespace is explicitly specified
by --namespace option, but what the PR does is use the default
namespace (or from kubeconfig) if not overridden by command line flag.
That breaks the existing usage of `kubectl apply --prune` without
--namespace option.  If --namespace is not used, there is no error,
and no one notices this issue unless they actually check that pruning
happens.  This issue also prevents resources in multiple namespaces in
config file from being pruned.

kubectl 1.16 does not have this bug.  Let's see the difference between
kubectl 1.16 and kubectl 1.17.  Suppose the following config file:

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: foo
  namespace: a
  labels:
    pl: foo
data:
  foo: bar
---
apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: bar
  namespace: a
  labels:
    pl: foo
data:
  foo: bar
```

Apply it with `kubectl apply -f file`.  Then comment out ConfigMap foo
in this file.  kubectl 1.16 prunes ConfigMap foo with the following
command:

$ kubectl-1.16 apply -f file -l pl=foo --prune
configmap/bar configured
configmap/foo pruned

But kubectl 1.17 does not prune ConfigMap foo with the same command:

$ kubectl-1.17 apply -f file -l pl=foo --prune
configmap/bar configured

With this patch, kubectl once again can prune the resource as before.
2020-04-09 02:54:10 +00:00
Sean R. Sullivan
748ad74245 Even with build error, kubectl apply should apply all valid resources 2020-04-04 15:48:31 -07:00
Prashant Sharma
3ff54eb10c
Fixes a flaky test, by adding kubectl wait for delete deployment in apply.sh (#89725)
* Add kubectl wait for delete deployment.

* Even better to wait for all pods deleted.

* get_object_assert -> wait_object_assert
2020-04-04 00:07:47 -07:00
Sean R. Sullivan
4ca2d5a9da Fixes kubectl apply tests to run; updates broken tests 2020-03-30 17:04:10 -07:00
Sean R. Sullivan
1083c0fe05 Adds integration test for apply failures when applying multiple resources 2020-03-26 22:33:04 -07:00
Julian V. Modesto
13b80b48cd Use --dry-run=client,server in kubectl.
- Support --dry-run=server for subcommands apply, run, create, annotate,
expose, patch, label, autoscale, apply set-last-applied, drain, rollout undo
- Support --dry-run=server for set subcommands
  - image
  - resources
  - serviceaccount
  - selector
  - env
  - subject
- Support --dry-run=server for create subcommands.
  - clusterrole
  - clusterrolebinding
  - configmap
  - cronjob
  - job
  - deployment
  - namespace
  - poddisruptionbudget
  - priorityclass
  - quota
  - role
  - rolebinding
  - service
  - secret
  - serviceaccount
- Remove GetClientSideDryRun
2020-02-12 20:46:54 -05:00
Odin Ugedal
6a73c0899a
Fix shellcheck failures SC2251
https://github.com/koalaman/shellcheck/wiki/SC2251

This may be masking some test failures.

We have a bunch of test code like this:

set -o errexit
[...]
! kubectl get pod wrong-pod
[...]

This test will succeed no matter what the result (return code) of kubectl is.
2019-10-23 22:47:47 +02:00
Ted Yu
88e2f8e04f Prune should respect namespace 2019-09-25 16:43:08 -07:00
Antoine Pelisse
a3f4e6e933 Rename --experimental-* flags to --* for server-side apply 2019-08-28 15:03:41 -07:00
Xiangyang Chu
7a385bf2ea Fix wrong pipe in grep -q 2019-04-26 14:23:53 +08:00
Xiangyang Chu
906058bf7b Update grep -q usage to avoid closed pipe 2019-04-26 11:39:11 +08:00
Xiangyang Chu
2260cc29b9 Make test/cmd/a*.sh pass shellcheck 2019-04-26 11:39:11 +08:00
Antoine Pelisse
eb904d8fa8 Add "fieldManager" to flag to PATCH/CREATE/UPDATE
And add a corresponding flag in kubectl (for apply), even though the
value is defaulted in kubectl with "kubectl".

The flag is required for Apply patch-type, and optional for other PATCH,
CREATE and UPDATE (in which case we fallback on the user-agent).
2019-03-08 16:03:03 -08:00
Kubernetes Prow Robot
81e6407393
Merge pull request #74140 from Liujingfang1/kflag
add -k flag in cli-runtime and kubectl to process kustomization directories
2019-02-26 19:40:16 -08:00
Jingfang Liu
127c2f1e74 address comments 2019-02-26 14:12:58 -08:00
Jingfang Liu
beacc87ebf add cmdline tests for -k 2019-02-25 16:31:03 -08:00
Katharine Berry
dd4f1c1990 Turn off command echoing to avoid illegal bytes in XML. 2019-02-21 09:30:41 -08:00
Antoine Pelisse
308c981633 Add basic server-side apply test to test-cmd 2019-02-08 16:51:29 -08:00
Antoine Pelisse
d3d4d268ac Add test for CRD server-dry-run and fix bug
Add a new test to make sure we can server-dry-run CRDs and also fix a
typo now that we have a test, we could notice that it doesn't work.
2018-11-12 11:06:27 -08:00
Antoine Pelisse
967280b58e Add --server-dry-run flag to kubectl apply 2018-09-02 13:13:46 -07:00
Di Xu
0af6faed09 kubectl: recreating resources for immutable fields when force is applied 2018-08-09 22:59:02 +08:00
David Eads
aa8110044d straight split of test-cmd 2018-07-05 11:38:26 -04:00