diff --git a/hack/local-up-cluster.sh b/hack/local-up-cluster.sh index 59550623b13..83bdd694290 100755 --- a/hack/local-up-cluster.sh +++ b/hack/local-up-cluster.sh @@ -99,8 +99,6 @@ ENABLE_TRACING=${ENABLE_TRACING:-false} # enable Kubernetes-CSI snapshotter ENABLE_CSI_SNAPSHOTTER=${ENABLE_CSI_SNAPSHOTTER:-false} -# RBAC Mode options -AUTHORIZATION_MODE=${AUTHORIZATION_MODE:-"Node,RBAC"} KUBECONFIG_TOKEN=${KUBECONFIG_TOKEN:-""} AUTH_ARGS=${AUTH_ARGS:-""} @@ -494,10 +492,19 @@ function start_apiserver { # Append security_admission plugin ENABLE_ADMISSION_PLUGINS="${ENABLE_ADMISSION_PLUGINS}${security_admission}" - authorizer_arg="" - if [[ -n "${AUTHORIZATION_MODE}" ]]; then - authorizer_arg="--authorization-mode=${AUTHORIZATION_MODE}" + authorizer_args=() + if [[ -n "${AUTHORIZATION_CONFIG:-}" ]]; then + authorizer_args+=("--authorization-config=${AUTHORIZATION_CONFIG}") + else + if [[ -n "${AUTHORIZATION_MODE:-Node,RBAC}" ]]; then + authorizer_args+=("--authorization-mode=${AUTHORIZATION_MODE:-Node,RBAC}") + fi + authorizer_args+=( + "--authorization-webhook-config-file=${AUTHORIZATION_WEBHOOK_CONFIG_FILE}" + "--authentication-token-webhook-config-file=${AUTHENTICATION_WEBHOOK_CONFIG_FILE}" + ) fi + priv_arg="" if [[ -n "${ALLOW_PRIVILEGED}" ]]; then priv_arg="--allow-privileged=${ALLOW_PRIVILEGED}" @@ -570,7 +577,7 @@ EOF APISERVER_LOG=${LOG_DIR}/kube-apiserver.log # shellcheck disable=SC2086 - ${CONTROLPLANE_SUDO} "${GO_OUT}/kube-apiserver" "${authorizer_arg}" "${priv_arg}" ${runtime_config} \ + ${CONTROLPLANE_SUDO} "${GO_OUT}/kube-apiserver" "${authorizer_args[@]}" "${priv_arg}" ${runtime_config} \ ${cloud_config_arg} \ "${advertise_address}" \ "${node_port_range}" \ @@ -578,8 +585,6 @@ EOF --vmodule="${LOG_SPEC}" \ --audit-policy-file="${AUDIT_POLICY_FILE}" \ --audit-log-path="${LOG_DIR}/kube-apiserver-audit.log" \ - --authorization-webhook-config-file="${AUTHORIZATION_WEBHOOK_CONFIG_FILE}" \ - --authentication-token-webhook-config-file="${AUTHENTICATION_WEBHOOK_CONFIG_FILE}" \ --cert-dir="${CERT_DIR}" \ --egress-selector-config-file="${EGRESS_SELECTOR_CONFIG_FILE:-}" \ --client-ca-file="${CERT_DIR}/client-ca.crt" \ @@ -613,14 +618,15 @@ EOF --cors-allowed-origins="${API_CORS_ALLOWED_ORIGINS}" >"${APISERVER_LOG}" 2>&1 & APISERVER_PID=$! + # Create kubeconfigs for all components, using client certs + kube::util::write_client_kubeconfig "${CONTROLPLANE_SUDO}" "${CERT_DIR}" "${ROOT_CA_FILE}" "${API_HOST}" "${API_SECURE_PORT}" admin + ${CONTROLPLANE_SUDO} chown "${USER}" "${CERT_DIR}/client-admin.key" # make readable for kubectl + # Wait for kube-apiserver to come up before launching the rest of the components. echo "Waiting for apiserver to come up" kube::util::wait_for_url "https://${API_HOST_IP}:${API_SECURE_PORT}/healthz" "apiserver: " 1 "${WAIT_FOR_URL_API_SERVER}" "${MAX_TIME_FOR_URL_API_SERVER}" \ || { echo "check apiserver logs: ${APISERVER_LOG}" ; exit 1 ; } - # Create kubeconfigs for all components, using client certs - kube::util::write_client_kubeconfig "${CONTROLPLANE_SUDO}" "${CERT_DIR}" "${ROOT_CA_FILE}" "${API_HOST}" "${API_SECURE_PORT}" admin - ${CONTROLPLANE_SUDO} chown "${USER}" "${CERT_DIR}/client-admin.key" # make readable for kubectl kube::util::write_client_kubeconfig "${CONTROLPLANE_SUDO}" "${CERT_DIR}" "${ROOT_CA_FILE}" "${API_HOST}" "${API_SECURE_PORT}" controller kube::util::write_client_kubeconfig "${CONTROLPLANE_SUDO}" "${CERT_DIR}" "${ROOT_CA_FILE}" "${API_HOST}" "${API_SECURE_PORT}" scheduler