@@ -17,12 +17,12 @@ set -o errexit
1717set -o nounset
1818set -o pipefail
1919
20- # This script is used to create a blank cluster for karmadactl init e2e testing.
20+ # This script is used in workflow to set up a local karmadactl init e2e testing environment .
2121# It creates a host cluster and build the relevant images, CRDs, Karmadactl, etc. for the subsequent e2e testing..
2222# 1. Used by developers to test karmadactl init with custom control plane setup
2323
2424function usage() {
25- echo " This script is used to create a blank cluster for karmadactl init e2e testing."
25+ echo " This script is used in workflow to set up a local karmadactl init e2e testing environment ."
2626 echo " It creates a host cluster and build the relevant images, CRDs, Karmadactl, etc. for the subsequent e2e testing.."
2727 echo " Used by developers to test karmadactl init with custom control plane setup"
2828 echo " Usage:"
@@ -45,129 +45,24 @@ done
4545
4646REPO_ROOT=$( dirname " ${BASH_SOURCE[0]} " ) /..
4747source " ${REPO_ROOT} " /hack/util.sh
48+ KARMADA_SYSTEM_NAMESPACE=" karmada-system"
4849
4950# variable define
50- KUBECONFIG_PATH=${KUBECONFIG_PATH:- " ${HOME} /.kube" }
51- MAIN_KUBECONFIG=${MAIN_KUBECONFIG:- " ${KUBECONFIG_PATH} /karmada-init.config" }
52- HOST_CLUSTER_NAME=${HOST_CLUSTER_NAME:- " karmada-init" }
53- HOST_IPADDRESS=${HOST_IPADDRESS:- }
54- BUILD_FROM_SOURCE=${BUILD_FROM_SOURCE:- " true" }
55- EXTRA_IMAGES_LOAD_TO_HOST_CLUSTER=${EXTRA_IMAGES_LOAD_TO_HOST_CLUSTER:- " " }
51+ export KUBECONFIG_PATH=${KUBECONFIG_PATH:- " ${HOME} /.kube" }
52+ export MAIN_KUBECONFIG=${MAIN_KUBECONFIG:- " ${KUBECONFIG_PATH} /karmada.config" }
53+ export HOST_CLUSTER_NAME=${HOST_CLUSTER_NAME:- " karmada-host" }
5654
57- CLUSTER_VERSION=${CLUSTER_VERSION:- " ${DEFAULT_CLUSTER_VERSION} " }
58- KIND_LOG_FILE=${KIND_LOG_FILE:- " /tmp/karmada" }
55+ # step1. set up a base development environment
56+ " ${REPO_ROOT} " /hack/setup-dev-base.sh
57+ export KUBECONFIG=" ${MAIN_KUBECONFIG} "
5958
60- # step0: prepare
61- # proxy setting in China mainland
62- if [[ -n ${CHINA_MAINLAND:- } ]]; then
63- util::set_mirror_registry_for_china_mainland ${REPO_ROOT}
64- fi
65-
66- # make sure go exists and the go version is a viable version.
67- util::cmd_must_exist " go"
68- util::verify_go_version
69-
70- # make sure docker exists
71- util::cmd_must_exist " docker"
72-
73- # install kind and kubectl
74- echo -n " Preparing: 'kind' existence check - "
75- if util::cmd_exist kind; then
76- echo " passed"
77- else
78- echo " not pass"
79- # Install kind using the version defined in util.sh
80- util::install_tools " sigs.k8s.io/kind" " ${KIND_VERSION} "
81- fi
82-
83- BS_ARCH=$( go env GOARCH)
84- BS_OS=$( go env GOOS)
85- # check arch and os name before installing
86- util::install_environment_check " ${BS_ARCH} " " ${BS_OS} "
87- echo -n " Preparing: 'kubectl' existence check - "
88- if util::cmd_exist kubectl; then
89- echo " passed"
90- else
91- echo " not pass"
92- util::install_kubectl " " " ${BS_ARCH} " " ${BS_OS} "
93- fi
94-
95- # step1. create host cluster
96- # host IP address: script parameter ahead of WSL2 or macOS IP
97- if [[ -z " ${HOST_IPADDRESS} " ]]; then
98- if util::is_wsl2; then
99- util::get_wsl2_ipaddress # adapt for WSL2
100- HOST_IPADDRESS=${WSL2_HOST_IP_ADDRESS:- }
101- else
102- util::get_macos_ipaddress # Adapt for macOS
103- HOST_IPADDRESS=${MAC_NIC_IPADDRESS:- }
104- fi
105- fi
106-
107- # prepare for kindClusterConfig
108- TEMP_PATH=$( mktemp -d)
109- trap ' { rm -rf ${TEMP_PATH}; }' EXIT
110- echo -e " Preparing kindClusterConfig in path: ${TEMP_PATH} "
111-
112- util::delete_necessary_resources " ${MAIN_KUBECONFIG} " " ${HOST_CLUSTER_NAME} " " ${KIND_LOG_FILE} "
113-
114- if [[ -n " ${HOST_IPADDRESS} " ]]; then # If bind the port of clusters(karmada-host) to the host IP
115- util::verify_ip_address " ${HOST_IPADDRESS} "
116- cp -rf " ${REPO_ROOT} " /artifacts/kindClusterConfig/karmada-host.yaml " ${TEMP_PATH} " /karmada-host.yaml
117- sed -i' ' -e " s/{{host_ipaddress}}/${HOST_IPADDRESS} /g" " ${TEMP_PATH} " /karmada-host.yaml
118- util::create_cluster " ${HOST_CLUSTER_NAME} " " ${MAIN_KUBECONFIG} " " ${CLUSTER_VERSION} " " ${KIND_LOG_FILE} " " ${TEMP_PATH} " /karmada-host.yaml
119- else
120- util::create_cluster " ${HOST_CLUSTER_NAME} " " ${MAIN_KUBECONFIG} " " ${CLUSTER_VERSION} " " ${KIND_LOG_FILE} "
121- fi
122-
123- # step2. make images and get karmadactl
124- export VERSION=${VERSION:- " latest" }
125- export REGISTRY=${REGISTRY:- " docker.io/karmada" }
126- if [[ " ${BUILD_FROM_SOURCE} " == " true" ]]; then
127- export KARMADA_IMAGE_LABEL_VALUE=" May_be_pruned_in_local_up_environment"
128- export DOCKER_BUILD_ARGS=" ${DOCKER_BUILD_ARGS:- } --label=image.karmada.io=${KARMADA_IMAGE_LABEL_VALUE} "
129- make images GOOS=" linux" --directory=" ${REPO_ROOT} "
130- # clean up dangling images
131- docker image prune --force --filter " label=image.karmada.io=${KARMADA_IMAGE_LABEL_VALUE} "
132- fi
133- GO111MODULE=on go install " github.com/karmada-io/karmada/cmd/karmadactl"
134-
135- # step3. wait until clusters ready
136- echo " Waiting for the clusters to be ready..."
137- util::check_clusters_ready " ${MAIN_KUBECONFIG} " " ${HOST_CLUSTER_NAME} "
138-
139-
140- # step4. load components images to kind cluster
141- if [[ " ${BUILD_FROM_SOURCE} " == " true" ]]; then
142- # host cluster
143- kind load docker-image " ${REGISTRY} /karmada-controller-manager:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
144- kind load docker-image " ${REGISTRY} /karmada-scheduler:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
145- kind load docker-image " ${REGISTRY} /karmada-descheduler:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
146- kind load docker-image " ${REGISTRY} /karmada-webhook:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
147- kind load docker-image " ${REGISTRY} /karmada-scheduler-estimator:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
148- kind load docker-image " ${REGISTRY} /karmada-aggregated-apiserver:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
149- kind load docker-image " ${REGISTRY} /karmada-search:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
150- kind load docker-image " ${REGISTRY} /karmada-metrics-adapter:${VERSION} " --name=" ${HOST_CLUSTER_NAME} "
151- for img in ${EXTRA_IMAGES_LOAD_TO_HOST_CLUSTER// ,/ } ; do
152- kind load docker-image " $img " --name=" ${HOST_CLUSTER_NAME} "
153- done
154- fi
155-
156- # step5: prepare and copy the newest crds for karmadactl init
157- # step5.1: prepare the newest crds for karmadactl init
158- echo " Prepare the newest crds for karmadactl init"
159- cd charts/karmada/
59+ # step2 prepare the local crds
60+ echo " Prepare the local crds"
61+ cd ${REPO_ROOT} /charts/karmada/
16062cp -r _crds crds
16163tar -zcvf ../../crds.tar.gz crds
16264cd -
16365
164- # step5.2: Verify CRDs package is created successfully
165- if [ ! -f " ./crds.tar.gz" ]; then
166- echo " ERROR: Failed to create CRDs package at ./crds.tar.gz"
167- exit 1
168- fi
169- echo " CRDs package created successfully: ./crds.tar.gz"
170-
17166# step5.3: Copy the local crds.tar.gz file to the specified path
17267DATA_DIR=" ${HOME} /karmada-data"
17368mkdir -p " ${DATA_DIR} "
0 commit comments