Skip to content
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

hack/deploy-scheduler-estimator.sh support deploy estimator in the specified namespace #5511

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions artifacts/deploy/karmada-scheduler-estimator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ apiVersion: apps/v1
kind: Deployment
metadata:
name: karmada-scheduler-estimator-{{member_cluster_name}}
namespace: karmada-system
namespace: {{namespace}}
labels:
cluster: {{member_cluster_name}}
spec:
Expand Down Expand Up @@ -55,7 +55,7 @@ spec:
volumes:
- name: karmada-certs
secret:
secretName: karmada-cert-secret
secretName: {{grpc_auth_secret_name}}
zhzhuang-zju marked this conversation as resolved.
Show resolved Hide resolved
- name: member-kubeconfig
secret:
secretName: {{member_cluster_name}}-kubeconfig
Expand All @@ -64,7 +64,7 @@ apiVersion: v1
kind: Service
metadata:
name: karmada-scheduler-estimator-{{member_cluster_name}}
namespace: karmada-system
namespace: {{namespace}}
labels:
cluster: {{member_cluster_name}}
spec:
Expand Down
48 changes: 24 additions & 24 deletions hack/deploy-agent-and-estimator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,67 +20,67 @@ set -o nounset
REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
function usage() {
echo "This script will deploy karmada-agent in member cluster and karmada-scheduler-estimator of the cluster in karmada-host."
echo "Usage: hack/deploy-agent-and-estimator.sh <HOST_CLUSTER_KUBECONFIG> <HOST_CLUSTER_NAME> <KARMADA_APISERVER_KUBECONFIG> <KARMADA_APISERVER_CONTEXT_NAME> <MEMBER_CLUSTER_KUBECONFIG> <MEMBER_CLUSTER_NAME>"
echo "Example: hack/deploy-agent-and-estimator.sh ~/.kube/karmada.config karmada-host ~/.kube/karmada.config karmada-apiserver ~/.kube/members.config member1"
echo "Usage: hack/deploy-agent-and-estimator.sh <MEMBER_CLUSTER_NAME> <HOST_CLUSTER_KUBECONFIG> <HOST_CLUSTER_CONTEXT> <KARMADA_APISERVER_KUBECONFIG> <KARMADA_APISERVER_CONTEXT> <MEMBER_CLUSTER_KUBECONFIG> <MEMBER_CLUSTER_CONTEXT>"
echo "Example: hack/deploy-agent-and-estimator.sh member1 ~/.kube/karmada.config karmada-host ~/.kube/karmada.config karmada-apiserver ~/.kube/members.config member1"
}

if [[ $# -ne 6 ]]; then
if [[ $# -ne 7 ]]; then
usage
exit 1
fi

# check kube config file existence
if [[ ! -f "${1}" ]]; then
echo -e "ERROR: failed to get host kubernetes config file: '${1}', not existed.\n"
if [[ ! -f "${2}" ]]; then
echo -e "ERROR: failed to get host kubernetes config file: '${2}', not existed.\n"
usage
exit 1
fi
HOST_CLUSTER_KUBECONFIG=$1
HOST_CLUSTER_KUBECONFIG=$2

# check context existence
if ! kubectl config get-contexts "${2}" --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
if ! kubectl config get-contexts "${3}" --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
then
echo -e "ERROR: failed to get context: '${2}' not in ${HOST_CLUSTER_KUBECONFIG}. \n"
echo -e "ERROR: failed to get context: '${3}' not in ${HOST_CLUSTER_KUBECONFIG}. \n"
usage
exit 1
fi
HOST_CLUSTER_NAME=$2
HOST_CLUSTER_CONTEXT=$3


# check kube config file existence
if [[ ! -f "${3}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${3}', not existed.\n"
if [[ ! -f "${4}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${4}', not existed.\n"
usage
exit 1
fi
KARMADA_APISERVER_KUBECONFIG=$3
KARMADA_APISERVER_KUBECONFIG=$4

# check context existence
if ! kubectl config get-contexts "${4}" --kubeconfig="${KARMADA_APISERVER_KUBECONFIG}" > /dev/null 2>&1;
if ! kubectl config get-contexts "${5}" --kubeconfig="${KARMADA_APISERVER_KUBECONFIG}" > /dev/null 2>&1;
then
echo -e "ERROR: failed to get context: '${4}' not in ${KARMADA_APISERVER_KUBECONFIG}. \n"
echo -e "ERROR: failed to get context: '${5}' not in ${KARMADA_APISERVER_KUBECONFIG}. \n"
usage
exit 1
fi
KARMADA_APISERVER_CONTEXT_NAME=$4
KARMADA_APISERVER_CONTEXT=$5

# check kube config file existence
if [[ ! -f "${5}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${5}', not existed.\n"
if [[ ! -f "${6}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${6}', not existed.\n"
usage
exit 1
fi
MEMBER_CLUSTER_KUBECONFIG=$5
MEMBER_CLUSTER_KUBECONFIG=$6

# check context existence
if ! kubectl config get-contexts "${6}" --kubeconfig="${MEMBER_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
if ! kubectl config get-contexts "${7}" --kubeconfig="${MEMBER_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
then
echo -e "ERROR: failed to get context: '${6}' not in ${MEMBER_CLUSTER_KUBECONFIG}. \n"
echo -e "ERROR: failed to get context: '${7}' not in ${MEMBER_CLUSTER_KUBECONFIG}. \n"
usage
exit 1
fi
MEMBER_CLUSTER_NAME=$6
MEMBER_CLUSTER_CONTEXT=$7
MEMBER_CLUSTER_NAME=$1


"${REPO_ROOT}"/hack/deploy-scheduler-estimator.sh ${HOST_CLUSTER_KUBECONFIG} ${HOST_CLUSTER_NAME} ${MEMBER_CLUSTER_KUBECONFIG} ${MEMBER_CLUSTER_NAME}
"${REPO_ROOT}"/hack/deploy-karmada-agent.sh ${KARMADA_APISERVER_KUBECONFIG} ${KARMADA_APISERVER_CONTEXT_NAME} ${MEMBER_CLUSTER_KUBECONFIG} ${MEMBER_CLUSTER_NAME}
"${REPO_ROOT}"/hack/deploy-scheduler-estimator.sh ${MEMBER_CLUSTER_NAME} ${HOST_CLUSTER_KUBECONFIG} ${HOST_CLUSTER_CONTEXT} ${MEMBER_CLUSTER_KUBECONFIG} ${MEMBER_CLUSTER_CONTEXT}
"${REPO_ROOT}"/hack/deploy-karmada-agent.sh ${KARMADA_APISERVER_KUBECONFIG} ${KARMADA_APISERVER_CONTEXT} ${MEMBER_CLUSTER_KUBECONFIG} ${MEMBER_CLUSTER_CONTEXT}
47 changes: 27 additions & 20 deletions hack/deploy-scheduler-estimator.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,73 +20,80 @@ set -o nounset
REPO_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
function usage() {
echo "This script will deploy karmada-scheduler-estimator of a cluster."
echo "Usage: hack/deploy-scheduler-estimator.sh <HOST_CLUSTER_KUBECONFIG> <HOST_CLUSTER_NAME> <MEMBER_CLUSTER_KUBECONFIG> <MEMBER_CLUSTER_NAME>"
echo "Example: hack/deploy-scheduler-estimator.sh ~/.kube/karmada.config karmada-host ~/.kube/members.config member1"
echo "Usage: hack/deploy-scheduler-estimator.sh <MEMBER_CLUSTER_NAME> <HOST_CLUSTER_KUBECONFIG> <HOST_CLUSTER_CONTEXT> <MEMBER_CLUSTER_KUBECONFIG> <MEMBER_CLUSTER_CONTEXT>"
echo "Example: hack/deploy-scheduler-estimator.sh member1 ~/.kube/karmada.config karmada-host ~/.kube/members.config member1"
echo "Example: SCHEDULER_ESTIMATOR_NAMESPACE=test GRPC_AUTH_SECRET_NAME=karmada-demo-cert hack/deploy-scheduler-estimator.sh member1 ~/.kube/karmada.config karmada-host ~/.kube/members.config member1"
}

if [[ $# -ne 4 ]]; then
if [[ $# -ne 5 ]]; then
usage
exit 1
fi

# check kube config file existence
if [[ ! -f "${1}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${1}', not existed.\n"
if [[ ! -f "${2}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${2}', not existed.\n"
usage
exit 1
fi
HOST_CLUSTER_KUBECONFIG=$1
HOST_CLUSTER_KUBECONFIG=$2

# check context existence
if ! kubectl config get-contexts "${2}" --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
if ! kubectl config get-contexts "${3}" --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
then
echo -e "ERROR: failed to get context: '${2}' not in ${HOST_CLUSTER_KUBECONFIG}. \n"
echo -e "ERROR: failed to get context: '${3}' not in ${HOST_CLUSTER_KUBECONFIG}. \n"
usage
exit 1
fi
HOST_CLUSTER_NAME=$2
HOST_CLUSTER_CONTEXT=$3

# check kube config file existence
if [[ ! -f "${3}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${3}', not existed.\n"
if [[ ! -f "${4}" ]]; then
echo -e "ERROR: failed to get kubernetes config file: '${4}', not existed.\n"
usage
exit 1
fi
MEMBER_CLUSTER_KUBECONFIG=$3
MEMBER_CLUSTER_KUBECONFIG=$4

# check context existence
if ! kubectl config get-contexts "${4}" --kubeconfig="${MEMBER_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
if ! kubectl config get-contexts "${5}" --kubeconfig="${MEMBER_CLUSTER_KUBECONFIG}" > /dev/null 2>&1;
then
echo -e "ERROR: failed to get context: '${4}' not in ${MEMBER_CLUSTER_KUBECONFIG}. \n"
echo -e "ERROR: failed to get context: '${5}' not in ${MEMBER_CLUSTER_KUBECONFIG}. \n"
usage
exit 1
fi
MEMBER_CLUSTER_NAME=$4
MEMBER_CLUSTER_CONTEXT=$5

MEMBER_CLUSTER_NAME=$1
SCHEDULER_ESTIMATOR_NAMESPACE=${SCHEDULER_ESTIMATOR_NAMESPACE:-"karmada-system"}
GRPC_AUTH_SECRET_NAME=${GRPC_AUTH_SECRET_NAME:-"karmada-cert-secret"}

TEMP_PATH="$(mktemp -d)"
MEMBER_CLUSTER_KUBECONFIG_NAME="$(basename "${MEMBER_CLUSTER_KUBECONFIG}")"
# --context & --minify will generate minified kubeconfig file with required context
# --flatten will embed certificate
kubectl config view --kubeconfig "${MEMBER_CLUSTER_KUBECONFIG}" \
--context "${MEMBER_CLUSTER_NAME}" --minify --flatten \
--context "${MEMBER_CLUSTER_CONTEXT}" --minify --flatten \
> "${TEMP_PATH}/${MEMBER_CLUSTER_KUBECONFIG_NAME}"

# check whether the kubeconfig secret has been created before
if ! kubectl --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" --context="${HOST_CLUSTER_NAME}" get secrets -n karmada-system | grep "${MEMBER_CLUSTER_NAME}-kubeconfig"; then
if ! kubectl --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" --context="${HOST_CLUSTER_CONTEXT}" get secrets -n ${SCHEDULER_ESTIMATOR_NAMESPACE} | grep "${MEMBER_CLUSTER_NAME}-kubeconfig"; then
# create secret
kubectl --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" --context="${HOST_CLUSTER_NAME}" \
kubectl --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" --context="${HOST_CLUSTER_CONTEXT}" \
create secret generic "${MEMBER_CLUSTER_NAME}-kubeconfig" \
"--from-file=${MEMBER_CLUSTER_NAME}-kubeconfig=${TEMP_PATH}/${MEMBER_CLUSTER_KUBECONFIG_NAME}" \
-n "karmada-system"
-n ${SCHEDULER_ESTIMATOR_NAMESPACE}
fi
rm -rf "${TEMP_PATH}"

# deploy scheduler estimator
TEMP_PATH=$(mktemp -d)
cp "${REPO_ROOT}"/artifacts/deploy/karmada-scheduler-estimator.yaml "${TEMP_PATH}"/karmada-scheduler-estimator.yaml
sed -i'' -e "s/{{grpc_auth_secret_name}}/${GRPC_AUTH_SECRET_NAME}/g" "${TEMP_PATH}"/karmada-scheduler-estimator.yaml
sed -i'' -e "s/{{namespace}}/${SCHEDULER_ESTIMATOR_NAMESPACE}/g" "${TEMP_PATH}"/karmada-scheduler-estimator.yaml
sed -i'' -e "s/{{member_cluster_name}}/${MEMBER_CLUSTER_NAME}/g" "${TEMP_PATH}"/karmada-scheduler-estimator.yaml
echo -e "Apply dynamic rendered deployment in ${TEMP_PATH}/karmada-scheduler-estimator.yaml\n"
kubectl --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" --context="${HOST_CLUSTER_NAME}" apply -f "${TEMP_PATH}"/karmada-scheduler-estimator.yaml
kubectl --kubeconfig="${HOST_CLUSTER_KUBECONFIG}" --context="${HOST_CLUSTER_CONTEXT}" apply -f "${TEMP_PATH}"/karmada-scheduler-estimator.yaml
rm -rf "${TEMP_PATH}"

function print_success() {
Expand Down
6 changes: 3 additions & 3 deletions hack/local-up-karmada.sh
Original file line number Diff line number Diff line change
Expand Up @@ -184,9 +184,9 @@ echo "cluster networks connected"
#join push mode member clusters
export KUBECONFIG="${MAIN_KUBECONFIG}"
${KARMADACTL_BIN} join --karmada-context="${KARMADA_APISERVER_CLUSTER_NAME}" ${MEMBER_CLUSTER_1_NAME} --cluster-kubeconfig="${MEMBER_CLUSTER_1_TMP_CONFIG}" --cluster-context="${MEMBER_CLUSTER_1_NAME}"
"${REPO_ROOT}"/hack/deploy-scheduler-estimator.sh "${MAIN_KUBECONFIG}" "${HOST_CLUSTER_NAME}" "${MEMBER_CLUSTER_1_TMP_CONFIG}" "${MEMBER_CLUSTER_1_NAME}"
"${REPO_ROOT}"/hack/deploy-scheduler-estimator.sh "${MEMBER_CLUSTER_1_NAME}" "${MAIN_KUBECONFIG}" "${HOST_CLUSTER_NAME}" "${MEMBER_CLUSTER_1_TMP_CONFIG}" "${MEMBER_CLUSTER_1_NAME}"
${KARMADACTL_BIN} join --karmada-context="${KARMADA_APISERVER_CLUSTER_NAME}" ${MEMBER_CLUSTER_2_NAME} --cluster-kubeconfig="${MEMBER_CLUSTER_2_TMP_CONFIG}" --cluster-context="${MEMBER_CLUSTER_2_NAME}"
"${REPO_ROOT}"/hack/deploy-scheduler-estimator.sh "${MAIN_KUBECONFIG}" "${HOST_CLUSTER_NAME}" "${MEMBER_CLUSTER_2_TMP_CONFIG}" "${MEMBER_CLUSTER_2_NAME}"
"${REPO_ROOT}"/hack/deploy-scheduler-estimator.sh "${MEMBER_CLUSTER_2_NAME}" "${MAIN_KUBECONFIG}" "${HOST_CLUSTER_NAME}" "${MEMBER_CLUSTER_2_TMP_CONFIG}" "${MEMBER_CLUSTER_2_NAME}"

# wait until the pull mode cluster ready
util::check_clusters_ready "${PULL_MODE_CLUSTER_TMP_CONFIG}" "${PULL_MODE_CLUSTER_NAME}"
Expand All @@ -195,7 +195,7 @@ if [[ "${BUILD_FROM_SOURCE}" == "true" ]]; then
fi

#step7. deploy karmada agent in pull mode member clusters
"${REPO_ROOT}"/hack/deploy-agent-and-estimator.sh "${MAIN_KUBECONFIG}" "${HOST_CLUSTER_NAME}" "${MAIN_KUBECONFIG}" "${KARMADA_APISERVER_CLUSTER_NAME}" "${PULL_MODE_CLUSTER_TMP_CONFIG}" "${PULL_MODE_CLUSTER_NAME}"
"${REPO_ROOT}"/hack/deploy-agent-and-estimator.sh "${PULL_MODE_CLUSTER_NAME}" "${MAIN_KUBECONFIG}" "${HOST_CLUSTER_NAME}" "${MAIN_KUBECONFIG}" "${KARMADA_APISERVER_CLUSTER_NAME}" "${PULL_MODE_CLUSTER_TMP_CONFIG}" "${PULL_MODE_CLUSTER_NAME}"

#step8. deploy metrics-server in member clusters
"${REPO_ROOT}"/hack/deploy-k8s-metrics-server.sh "${MEMBER_CLUSTER_1_TMP_CONFIG}" "${MEMBER_CLUSTER_1_NAME}"
Expand Down
Loading