-
Notifications
You must be signed in to change notification settings - Fork 115
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
Add kind-dev command to start a kind dev cluster #338
base: main
Are you sure you want to change the base?
Changes from 4 commits
c936ecd
9829372
c55529e
7140ad3
177a044
7779b28
6e7926d
4c321c2
4ed9f07
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 |
---|---|---|
@@ -0,0 +1,63 @@ | ||
#!/usr/bin/env bash | ||
|
||
# ./scripts/run-dev.sh quickly setup cluster for ACK development. It | ||
# ensures that a K8s cluster is accessible, then configures the ACK CRD, RBAC | ||
# but not install the controller | ||
|
||
set -Eeo pipefail | ||
|
||
SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" | ||
ROOT_DIR="$SCRIPTS_DIR/.." | ||
|
||
AWS_SERVICE=$(echo "${AWS_SERVICE:-""}" | tr '[:upper:]' '[:lower:]') | ||
|
||
CONTROLLER_NAMESPACE=${CONTROLLER_NAMESPACE:-"ack-system"} | ||
|
||
CLUSTER_NAME="ack-dev-cluster-$AWS_SERVICE" | ||
|
||
source "$SCRIPTS_DIR/lib/aws.sh" | ||
source "$SCRIPTS_DIR/lib/common.sh" | ||
source "$SCRIPTS_DIR/lib/config.sh" | ||
source "$SCRIPTS_DIR/lib/logging.sh" | ||
|
||
source "$SCRIPTS_DIR/controller-setup.sh" | ||
source "$SCRIPTS_DIR/kind.sh" | ||
|
||
ensure_cluster() { | ||
info_msg "Creating KIND cluster ..." | ||
setup_kind_cluster "$CLUSTER_NAME" "$CONTROLLER_NAMESPACE" | ||
|
||
info_msg "Installing CRDs , common and RBAC manifest..." | ||
install_crd_and_rbac "$CONTROLLER_NAMESPACE" | ||
} | ||
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. We already have an This method also uses the config YAML to determine the name, in case the user wants to use a statically named cluster. Rather than redefining this method here, maybe you could modify that one to have a similar effect and then import and use it in this script. 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 here refactor ensure_cluster |
||
|
||
run() { | ||
ensure_aws_credentials | ||
ensure_cluster | ||
local kubeconfig_path="$ROOT_DIR/build/clusters/$CLUSTER_NAME/kubeconfig" | ||
info_msg "Before running the controller, you need kubeconfig and aws credentials." | ||
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. nit: Probably don't need this line of explanation. I think we can assume anyone using this method already knows this 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. removed |
||
info_msg "After executing the above source command to set the kubeconfig to environment, " | ||
info_msg "run the following command to start the controller from the controller repo:" | ||
echo "" | ||
echo "go run ./cmd/controller/main.go --aws-region eu-central-1 --log-level debug --enable-development-logging" | ||
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. nit: Instead of hardcoding 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. |
||
echo "" | ||
info_msg "if you run the controller from your code editor/IDE, you can set the following environment variables:" | ||
echo "KUBECONFIG=$kubeconfig_path" | ||
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. This is already called out from inside the 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. I think the source command set the kubeconfig in current terminal only, if starting the controller from goland or vscode, we have to set KUBECONFIG into them. but you're right, better to mention in document rather than here. |
||
exit $? | ||
} | ||
|
||
ensure_inputs() { | ||
[[ -z "$AWS_SERVICE" ]] && { error_msg "Expected \`AWS_SERVICE\` to be defined"; exit 1; } || : | ||
} | ||
|
||
ensure_binaries() { | ||
check_is_installed "kubectl" | ||
} | ||
|
||
ensure_inputs | ||
ensure_binaries | ||
|
||
# The purpose of the `return` subshell command in this script is to determine | ||
# whether the script was sourced, or whether it is being executed directly. | ||
# https://stackoverflow.com/a/28776166 | ||
(return 0 2>/dev/null) || run |
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.
I don't think
run-dev
is a very descriptive name for this file. Could you please rename it to something likesetup-kind-cluster
orcreate-dev-cluster
?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.
ya , renamed to
create-dev-cluster