-
Notifications
You must be signed in to change notification settings - Fork 77
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
fix minikube start failure #2771
base: main
Are you sure you want to change the base?
Changes from all commits
9f23351
e34f61e
18996f6
dd9b805
bde000e
9ab90c2
75d1062
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -36,6 +36,10 @@ inputs: | |||||||||||||||||||||||||||||
description: "If minikube is not required, set this to true and set require_k3d to false" | ||||||||||||||||||||||||||||||
required: false | ||||||||||||||||||||||||||||||
default: "false" | ||||||||||||||||||||||||||||||
require_kind: | ||||||||||||||||||||||||||||||
description: "If kind is not required, set this to true and set require_k3d to false" | ||||||||||||||||||||||||||||||
required: false | ||||||||||||||||||||||||||||||
default: "false" | ||||||||||||||||||||||||||||||
ingress_port: | ||||||||||||||||||||||||||||||
description: 'If it is not "0", ingress will be exposed to the specified port' | ||||||||||||||||||||||||||||||
required: false | ||||||||||||||||||||||||||||||
|
@@ -91,6 +95,12 @@ runs: | |||||||||||||||||||||||||||||
run: | | ||||||||||||||||||||||||||||||
make minikube/install | ||||||||||||||||||||||||||||||
make minikube/start | ||||||||||||||||||||||||||||||
- name: Setup kind environment | ||||||||||||||||||||||||||||||
if: ${{ inputs.require_kind == 'true' }} | ||||||||||||||||||||||||||||||
shell: bash | ||||||||||||||||||||||||||||||
run: | | ||||||||||||||||||||||||||||||
make kind/install | ||||||||||||||||||||||||||||||
make kind/vs/start | ||||||||||||||||||||||||||||||
Comment on lines
+98
to
+103
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add error handling for kind setup The kind setup step should include error handling and verification of the cluster's readiness. Consider enhancing the step: - - name: Setup kind environment
- if: ${{ inputs.require_kind == 'true' }}
- shell: bash
- run: |
- make kind/install
- make kind/vs/start
+ - name: Setup kind environment
+ if: ${{ inputs.require_kind == 'true' }}
+ shell: bash
+ run: |
+ make kind/install || exit 1
+ make kind/vs/start || exit 1
+ # Verify cluster is ready
+ kubectl wait --for=condition=ready node --all --timeout=90s || exit 1 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||
- name: Check Kubernetes cluster | ||||||||||||||||||||||||||||||
shell: bash | ||||||||||||||||||||||||||||||
run: | | ||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -59,8 +59,8 @@ telepresence.log | |
|
||
# Generated by Cargo | ||
# will have compiled files and executables | ||
debug/ | ||
target/ | ||
rust/debug/ | ||
rust/target/ | ||
Comment on lines
+62
to
+63
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Update .gitignore to handle additional target directories The current
These directories don't contain any Rust files, suggesting they're unrelated to Rust builds, but the current Suggested changes:
🔗 Analysis chainLGTM! Verify Rust project structure alignment. The more specific paths for Rust build artifacts provide better organization. However, let's verify that these paths align with the project structure. 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Description: Verify the existence and structure of Rust directories
# Check if rust directory exists and contains expected subdirectories
if [ -d "rust" ]; then
echo "Rust directory structure:"
fd . rust -t d -d 2
# Check for any misplaced debug/target directories outside rust/
echo -e "\nChecking for misplaced Rust build directories:"
fd -t d "^(debug|target)$" -E "rust/*"
fi
Length of output: 335 Script: #!/bin/bash
# Let's check if there are any Rust-related files in the directories with debug/target
echo "Checking for Rust files in k8s/debug/:"
fd -e rs -e toml . k8s/debug/
echo -e "\nChecking for Rust files in internal/k8s/vald/mirror/target/:"
fd -e rs -e toml . internal/k8s/vald/mirror/target/
echo -e "\nChecking Rust project structure:"
fd -e rs -e toml . rust/
echo -e "\nChecking for Cargo.toml files:"
fd Cargo.toml
Length of output: 1240 |
||
|
||
# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries | ||
# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -13,11 +13,14 @@ | |||||||||||||||||||||||||||||||||||||||
# See the License for the specific language governing permissions and | ||||||||||||||||||||||||||||||||||||||||
# limitations under the License. | ||||||||||||||||||||||||||||||||||||||||
# | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
SNAPSHOTTER_VERSION=v8.2.0 | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
.PHONY: kind/install | ||||||||||||||||||||||||||||||||||||||||
## install KinD | ||||||||||||||||||||||||||||||||||||||||
kind/install: $(BINDIR)/kind | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
$(BINDIR)/kind: | ||||||||||||||||||||||||||||||||||||||||
$(BINDIR)/kind: $(BINDIR)/docker | ||||||||||||||||||||||||||||||||||||||||
mkdir -p $(BINDIR) | ||||||||||||||||||||||||||||||||||||||||
$(eval DARCH := $(subst aarch64,arm64,$(ARCH))) | ||||||||||||||||||||||||||||||||||||||||
curl -fsSL https://github.com/kubernetes-sigs/kind/releases/download/v$(KIND_VERSION)/kind-$(OS)-$(subst x86_64,amd64,$(shell echo $(DARCH) | tr '[:upper:]' '[:lower:]')) -o $(BINDIR)/kind | ||||||||||||||||||||||||||||||||||||||||
|
@@ -45,7 +48,6 @@ kind/restart: \ | |||||||||||||||||||||||||||||||||||||||
kind/stop \ | ||||||||||||||||||||||||||||||||||||||||
kind/start | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
.PHONY: kind/cluster/start | ||||||||||||||||||||||||||||||||||||||||
## start kind (kubernetes in docker) multi node cluster | ||||||||||||||||||||||||||||||||||||||||
kind/cluster/start: | ||||||||||||||||||||||||||||||||||||||||
|
@@ -54,7 +56,6 @@ kind/cluster/start: | |||||||||||||||||||||||||||||||||||||||
kubectl apply -f https://projectcontour.io/quickstart/operator.yaml | ||||||||||||||||||||||||||||||||||||||||
kubectl apply -f https://projectcontour.io/quickstart/contour-custom-resource.yaml | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
.PHONY: kind/cluster/stop | ||||||||||||||||||||||||||||||||||||||||
## stop kind (kubernetes in docker) multi node cluster | ||||||||||||||||||||||||||||||||||||||||
kind/cluster/stop: | ||||||||||||||||||||||||||||||||||||||||
|
@@ -70,3 +71,43 @@ kind/cluster/login: | |||||||||||||||||||||||||||||||||||||||
kind/cluster/restart: \ | ||||||||||||||||||||||||||||||||||||||||
kind/cluster/stop \ | ||||||||||||||||||||||||||||||||||||||||
kind/cluster/start | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
.PHONY: kind/vs/start | ||||||||||||||||||||||||||||||||||||||||
## start kind (kubernetes in docker) cluster with volume snapshot | ||||||||||||||||||||||||||||||||||||||||
kind/vs/start: | ||||||||||||||||||||||||||||||||||||||||
sed -e 's/apiServerAddress: "127.0.0.1"/apiServerAddress: "$(shell grep host.docker.internal /etc/hosts | cut -f1)"/' $(ROOTDIR)/k8s/debug/kind/e2e.yaml | kind create cluster --name $(NAME)-vs --config - | ||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Improve reliability of e2e.yaml modification. The current sed command might fail silently if:
Consider adding error checking: -sed -e 's/apiServerAddress: "127.0.0.1"/apiServerAddress: "$(shell grep host.docker.internal /etc/hosts | cut -f1)"/' $(ROOTDIR)/k8s/debug/kind/e2e.yaml | kind create cluster --name $(NAME)-vs --config -
+HOST_IP := $(shell grep host.docker.internal /etc/hosts | cut -f1)
+ifeq ($(HOST_IP),)
+ $(error host.docker.internal not found in /etc/hosts)
+endif
+sed -e 's/apiServerAddress: "127.0.0.1"/apiServerAddress: "$(HOST_IP)"/' $(ROOTDIR)/k8s/debug/kind/e2e.yaml > /tmp/e2e_modified.yaml
+test -s /tmp/e2e_modified.yaml || (echo "Failed to modify e2e.yaml" && exit 1)
+kind create cluster --name $(NAME)-vs --config /tmp/e2e_modified.yaml 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
@make kind/vs/login | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml | ||||||||||||||||||||||||||||||||||||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml | ||||||||||||||||||||||||||||||||||||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml | ||||||||||||||||||||||||||||||||||||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml | ||||||||||||||||||||||||||||||||||||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml | ||||||||||||||||||||||||||||||||||||||||
Comment on lines
+81
to
+85
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add verification for CRD and controller installation. The current implementation doesn't verify if the CRDs and controller are successfully installed. Consider adding checks: +define verify_resource
+ @echo "Verifying $$1..."
+ @kubectl wait --for=condition=established --timeout=60s crd/$$1 || (echo "Failed to install $$1" && exit 1)
+endef
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
+$(call verify_resource,volumesnapshotclasses.snapshot.storage.k8s.io)
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
+$(call verify_resource,volumesnapshotcontents.snapshot.storage.k8s.io)
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
+$(call verify_resource,volumesnapshots.snapshot.storage.k8s.io)
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/$(SNAPSHOTTER_VERSION)/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
+kubectl -n kube-system wait --for=condition=ready pod -l app=snapshot-controller --timeout=60s || (echo "Snapshot controller not ready" && exit 1) 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
mkdir -p $(TEMP_DIR)/csi-driver-hostpath \ | ||||||||||||||||||||||||||||||||||||||||
&& curl -fsSL https://github.com/kubernetes-csi/csi-driver-host-path/archive/refs/tags/v1.15.0.tar.gz | tar zxf - -C $(TEMP_DIR)/csi-driver-hostpath --strip-components 1 \ | ||||||||||||||||||||||||||||||||||||||||
&& cd $(TEMP_DIR)/csi-driver-hostpath \ | ||||||||||||||||||||||||||||||||||||||||
&& deploy/kubernetes-latest/deploy.sh \ | ||||||||||||||||||||||||||||||||||||||||
&& kubectl apply -f examples/csi-storageclass.yaml \ | ||||||||||||||||||||||||||||||||||||||||
&& kubectl apply -f examples/csi-pvc.yaml \ | ||||||||||||||||||||||||||||||||||||||||
&& rm -rf $(TEMP_DIR)/csi-driver-hostpath | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
@make k8s/metrics/metrics-server/deploy | ||||||||||||||||||||||||||||||||||||||||
helm upgrade --install --set args={--kubelet-insecure-tls} metrics-server metrics-server/metrics-server -n kube-system | ||||||||||||||||||||||||||||||||||||||||
sleep $(K8S_SLEEP_DURATION_FOR_WAIT_COMMAND) | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
Comment on lines
+95
to
+98
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Add readiness check for metrics-server The metrics-server deployment should include a readiness check. @make k8s/metrics/metrics-server/deploy
helm upgrade --install --set args={--kubelet-insecure-tls} metrics-server metrics-server/metrics-server -n kube-system
-sleep $(K8S_SLEEP_DURATION_FOR_WAIT_COMMAND)
+kubectl wait --for=condition=available deployment/metrics-server -n kube-system --timeout=60s || (echo "metrics-server not ready" && exit 1) 📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||
.PHONY: kind/vs/stop | ||||||||||||||||||||||||||||||||||||||||
## stop kind (kubernetes in docker) cluster with volume snapshot | ||||||||||||||||||||||||||||||||||||||||
kind/vs/stop: | ||||||||||||||||||||||||||||||||||||||||
kind delete cluster --name $(NAME)-vs | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
.PHONY: kind/vs/login | ||||||||||||||||||||||||||||||||||||||||
## login command for kind (kubernetes in docker) cluster with volume snapshot | ||||||||||||||||||||||||||||||||||||||||
kind/vs/login: | ||||||||||||||||||||||||||||||||||||||||
kubectl cluster-info --context kind-$(NAME)-vs | ||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
.PHONY: kind/vs/restart | ||||||||||||||||||||||||||||||||||||||||
## restart kind (kubernetes in docker) cluster with volume snapshot | ||||||||||||||||||||||||||||||||||||||||
kind/vs/restart: \ | ||||||||||||||||||||||||||||||||||||||||
kind/vs/stop \ | ||||||||||||||||||||||||||||||||||||||||
kind/vs/start |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add mutual exclusivity validation for cluster tools
The new
require_kind
parameter is well documented, but there's no validation preventing multiple cluster tools (kind, minikube, k3d) from being enabled simultaneously, which could lead to resource conflicts.Consider adding a composite run step at the beginning to validate inputs: