-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
multus: allow node profiles in validation test
Add the ability to specify node profiles in the multus validation test. This addresses a few points of early feedback on the validation tool. Statements below critique the tool's behavior before this patch. 1. The tool assumes all daemons are on public and cluster network, which means users who have a significantly smaller cluster net (a design choice) cannot run a single test to determine if Rook is likely to install correctly. 2. The tool does not have placement options to select only a subset of Kubernetes nodes to run validation on. 3. Users of multus seem to have a dedicated pool of storage nodes more often than the average Rook install. This makes sense for security- and perforance-minded users. The tool cannot run a single test to verify storage-only and general-workload nodes at one time. These points are addressed by allowing users to specify configurations for different "NodeTypes." Each NodeType config has options for selecting the number of OSDs as well as the number of other (non-OSD) Ceph daemons. This limits the unnecessary exhaustion of cluster network addresses from critique 1. Each NodeType config has its own placement (critique 2). Users can define as many NodeTypes as needed to test the network for their planned CephCluster. Specifically, this allows the tool to test storage-only nodes and generalized-workload nodes at the same time. An arbitrary number of NodeTypes are allowed to support even more highly specialized cluster setups, such as multiple tiers of storage nodes where some storage-only nodes may run more OSDs than others. Signed-off-by: Blaine Gardner <[email protected]>
- Loading branch information
Showing
24 changed files
with
1,024 additions
and
152 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -45,16 +45,12 @@ jobs: | |
uses: helm/[email protected] | ||
with: | ||
config: tests/scripts/multus/kind-config.yaml | ||
cluster_name: rook-multus-e2e | ||
cluster_name: kind | ||
|
||
- name: Start tmate | ||
if: runner.debug || contains(github.event.pull_request.labels.*.name, 'debug-ci') | ||
run: | | ||
kubectl apply -f tests/scripts/tmate-pod.yaml | ||
sleep 3 # sometimes the next command errors b/c k8s hasn't had time to schedule the pod yet | ||
kubectl -n tmate wait --for=condition=ready -l app=tmate pod --timeout=300s | ||
sleep 1 # just in case tmate hasn't output its web/ssh links yet | ||
kubectl -n tmate logs deploy/tmate | ||
- name: consider debugging | ||
uses: ./.github/workflows/tmate_debug | ||
with: | ||
use-tmate: ${{ secrets.USE_TMATE }} | ||
|
||
- name: Setup multus | ||
run: ./tests/scripts/multus/setup-multus.sh | ||
|
@@ -63,14 +59,47 @@ jobs: | |
run: kubectl create -f tests/scripts/multus/default-public-cluster-nads.yaml | ||
|
||
- name: Quickly build Rook binary | ||
id: build | ||
run: go build -o rook cmd/rook/*.go | ||
|
||
- name: Run multus validation test | ||
run: | | ||
export KUBECONFIG="/home/runner/.kube/config" | ||
kubectl create namespace rook-ceph | ||
./rook --log-level debug multus validation run \ | ||
--namespace rook-ceph \ | ||
--public-network default/public-net \ | ||
--cluster-network default/cluster-net \ | ||
--daemons-per-node 2 | ||
- name: Run CLI validation test | ||
run: ./tests/scripts/multus/test-110-cli.sh | ||
|
||
- name: Label kind nodes for stretch cluster tests | ||
id: label | ||
# tests that require labels are independent from previous tests | ||
if: steps.build.outcome == 'success' && !cancelled() | ||
run: ./tests/scripts/multus/test-200-stretch-label-nodes.sh | ||
# nodes are purposefully not tainted yet for overlap test | ||
|
||
- name: Run stretch cluster overlap test | ||
id: overlap | ||
# independent from other tests as long as nodes are labeled | ||
if: steps.label.outcome == 'success' && !cancelled() | ||
run: ./tests/scripts/multus/test-210-stretch-overlap.sh | ||
|
||
- name: Run cleanup test | ||
# cleanup relies on overlap test to be successful | ||
if: steps.overlap.outcome == 'success' && !cancelled() | ||
run: ./tests/scripts/multus/test-211-stretch-cleanup.sh | ||
|
||
- name: Taint kind nodes for remaining stretch cluster tests | ||
id: taint | ||
# tests that require taints+labels are independent from previous tests | ||
if: steps.label.outcome == 'success' && !cancelled() | ||
run: ./tests/scripts/multus/test-200-stretch-taint-nodes.sh | ||
|
||
- name: Run stretch cluster test with public and cluster networks | ||
# independent from other tests as long as nodes are tainted and labeled | ||
if: steps.taint.outcome == 'success' && !cancelled() | ||
run: ./tests/scripts/multus/test-220-stretch-pub-and-cluster.sh | ||
|
||
- name: Run stretch cluster test with public network only | ||
# independent from other tests as long as nodes are tainted and labeled | ||
if: steps.taint.outcome == 'success' && !cancelled() | ||
run: ./tests/scripts/multus/test-230-stretch-pub-only.sh | ||
|
||
- name: Run stretch cluster test with cluster network only | ||
# independent from other tests as long as nodes are tainted and labeled | ||
if: steps.taint.outcome == 'success' && !cancelled() | ||
run: ./tests/scripts/multus/test-240-stretch-cluster-only.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.