mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-16 14:45:28 +00:00
Add support for authorization-config to local-up-cluster
This commit is contained in:
@@ -99,8 +99,6 @@ ENABLE_TRACING=${ENABLE_TRACING:-false}
|
|||||||
# enable Kubernetes-CSI snapshotter
|
# enable Kubernetes-CSI snapshotter
|
||||||
ENABLE_CSI_SNAPSHOTTER=${ENABLE_CSI_SNAPSHOTTER:-false}
|
ENABLE_CSI_SNAPSHOTTER=${ENABLE_CSI_SNAPSHOTTER:-false}
|
||||||
|
|
||||||
# RBAC Mode options
|
|
||||||
AUTHORIZATION_MODE=${AUTHORIZATION_MODE:-"Node,RBAC"}
|
|
||||||
KUBECONFIG_TOKEN=${KUBECONFIG_TOKEN:-""}
|
KUBECONFIG_TOKEN=${KUBECONFIG_TOKEN:-""}
|
||||||
AUTH_ARGS=${AUTH_ARGS:-""}
|
AUTH_ARGS=${AUTH_ARGS:-""}
|
||||||
|
|
||||||
@@ -494,10 +492,19 @@ function start_apiserver {
|
|||||||
# Append security_admission plugin
|
# Append security_admission plugin
|
||||||
ENABLE_ADMISSION_PLUGINS="${ENABLE_ADMISSION_PLUGINS}${security_admission}"
|
ENABLE_ADMISSION_PLUGINS="${ENABLE_ADMISSION_PLUGINS}${security_admission}"
|
||||||
|
|
||||||
authorizer_arg=""
|
authorizer_args=()
|
||||||
if [[ -n "${AUTHORIZATION_MODE}" ]]; then
|
if [[ -n "${AUTHORIZATION_CONFIG:-}" ]]; then
|
||||||
authorizer_arg="--authorization-mode=${AUTHORIZATION_MODE}"
|
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
|
fi
|
||||||
|
|
||||||
priv_arg=""
|
priv_arg=""
|
||||||
if [[ -n "${ALLOW_PRIVILEGED}" ]]; then
|
if [[ -n "${ALLOW_PRIVILEGED}" ]]; then
|
||||||
priv_arg="--allow-privileged=${ALLOW_PRIVILEGED}"
|
priv_arg="--allow-privileged=${ALLOW_PRIVILEGED}"
|
||||||
@@ -570,7 +577,7 @@ EOF
|
|||||||
|
|
||||||
APISERVER_LOG=${LOG_DIR}/kube-apiserver.log
|
APISERVER_LOG=${LOG_DIR}/kube-apiserver.log
|
||||||
# shellcheck disable=SC2086
|
# 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} \
|
${cloud_config_arg} \
|
||||||
"${advertise_address}" \
|
"${advertise_address}" \
|
||||||
"${node_port_range}" \
|
"${node_port_range}" \
|
||||||
@@ -578,8 +585,6 @@ EOF
|
|||||||
--vmodule="${LOG_SPEC}" \
|
--vmodule="${LOG_SPEC}" \
|
||||||
--audit-policy-file="${AUDIT_POLICY_FILE}" \
|
--audit-policy-file="${AUDIT_POLICY_FILE}" \
|
||||||
--audit-log-path="${LOG_DIR}/kube-apiserver-audit.log" \
|
--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}" \
|
--cert-dir="${CERT_DIR}" \
|
||||||
--egress-selector-config-file="${EGRESS_SELECTOR_CONFIG_FILE:-}" \
|
--egress-selector-config-file="${EGRESS_SELECTOR_CONFIG_FILE:-}" \
|
||||||
--client-ca-file="${CERT_DIR}/client-ca.crt" \
|
--client-ca-file="${CERT_DIR}/client-ca.crt" \
|
||||||
@@ -613,14 +618,15 @@ EOF
|
|||||||
--cors-allowed-origins="${API_CORS_ALLOWED_ORIGINS}" >"${APISERVER_LOG}" 2>&1 &
|
--cors-allowed-origins="${API_CORS_ALLOWED_ORIGINS}" >"${APISERVER_LOG}" 2>&1 &
|
||||||
APISERVER_PID=$!
|
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.
|
# Wait for kube-apiserver to come up before launching the rest of the components.
|
||||||
echo "Waiting for apiserver to come up"
|
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}" \
|
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 ; }
|
|| { 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}" controller
|
||||||
kube::util::write_client_kubeconfig "${CONTROLPLANE_SUDO}" "${CERT_DIR}" "${ROOT_CA_FILE}" "${API_HOST}" "${API_SECURE_PORT}" scheduler
|
kube::util::write_client_kubeconfig "${CONTROLPLANE_SUDO}" "${CERT_DIR}" "${ROOT_CA_FILE}" "${API_HOST}" "${API_SECURE_PORT}" scheduler
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user