-
Notifications
You must be signed in to change notification settings - Fork 117
Description
We've been using your tooling for a while, thanks for making it open-source <3 Appreciate all the work you put into it!
We recently went through the full update path from kubernetes-deploy in 0.25.0 and wanted to update to the newest krane, but this bug is preventing us from updating beyond major version 1.
Bug report
When using calico as the network provider, NetworkPolicy resources are no longer pre-deployed.
Expected behavior: NetworkPolicy resources are pre-deployed as priority.
Actual behavior: NetworkPolicy resources are being deployed with non-priority resources.
Version(s) affected:
This has been introduced when bumping to major 2, in #735
Steps to Reproduce
You can test it in minikube using your test suite, after starting it with calico as the network provider
$ minikube start --network-plugin=cni --cni=calico
$ bundle exec rake test TEST=test/integration/krane_deploy_test.rb TESTOPTS="--name=test_network_policies_are_deployed_first -v"
Preparing test cluster... Done.
# Running tests with run options --name=test_network_policies_are_deployed_first -v --seed 3651:
F
Finished tests in 8.788226s, 0.1138 tests/s, 0.1138 assertions/s.
Failure:
KraneDeployTest#test_network_policies_are_deployed_first [/Users/alicjaraszkowska/Documents/Repos/krane/test/integration/krane_deploy_test.rb:1385]
Minitest::Assertion: 'Predeploying priority resources' not found in the expected sequence in the following logs:
[INFO][2020-12-14 19:02:12 -0800]
[INFO][2020-12-14 19:02:12 -0800] ------------------------------------Phase 1: Initializing deploy------------------------------------
[INFO][2020-12-14 19:02:13 -0800] All required parameters and files are present
[INFO][2020-12-14 19:02:13 -0800] Discovering resources:
[INFO][2020-12-14 19:02:15 -0800] - NetworkPolicy/allow-all-network-policy
[INFO][2020-12-14 19:02:16 -0800]
[INFO][2020-12-14 19:02:16 -0800] ----------------------------Phase 2: Checking initial resource statuses-----------------------------
[INFO][2020-12-14 19:02:16 -0800] NetworkPolicy/allow-all-network-policy Not Found
[INFO][2020-12-14 19:02:16 -0800]
[INFO][2020-12-14 19:02:16 -0800] ----------------------------------Phase 3: Deploying all resources----------------------------------
[INFO][2020-12-14 19:02:17 -0800] Deploying NetworkPolicy/allow-all-network-policy (timeout: 30s)
[INFO][2020-12-14 19:02:21 -0800] Successfully deployed in 3.7s: NetworkPolicy/allow-all-network-policy
[INFO][2020-12-14 19:02:21 -0800]
[INFO][2020-12-14 19:02:21 -0800] ------------------------------------------Result: SUCCESS-------------------------------------------
[INFO][2020-12-14 19:02:21 -0800] Successfully deployed 1 resource
[INFO][2020-12-14 19:02:21 -0800]
[INFO][2020-12-14 19:02:21 -0800] Successful resources
[INFO][2020-12-14 19:02:21 -0800] NetworkPolicy/allow-all-network-policy Created
Slowest tests:
8.719095s test_network_policies_are_deployed_first#KraneDeployTest
Feature request
- If the maintainers agree with the feature as described here, I intend to submit a Pull Request myself.1
Proposal:
Changing the way resources are being prioritized. I'd prefer to go with approach 1, since it would make it more flexible, but I may not have enough context and maybe making a strong assumption about NetworkPolicy resources proposed in approach 2 is sufficient.
-
Make predeploy sequence configurable
Since the change that introduced this issue has been implemented to address a request for a reverse priority order (i.e. custom resource over core, Service deployed in priority resources phase #728), it seems like having a strong assumption on which resources should be prioritized written directly in code could potentially not fit all the use cases.Providing a configurable way for the user to define which resources should be predeployed would allow for allowing any use cases they need.
-
Ensure
NetworkPolicyresources are always predeployed
Filter outNetworkPolicyresources from this hash:crs = cluster_resource_discoverer.crds.select(&:predeployed?).map { |cr| [cr.kind, { group: cr.group }] }
1 This is the quickest way to get a new feature! We reserve the right to close feature requests, even ones we like, if the proposer does not intend to contribute to the feature and it doesn't fit in our current roadmap.