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
 | 
					      fi
 | 
				
			||||||
 | 
					      authorizer_args+=(
 | 
				
			||||||
 | 
					        "--authorization-webhook-config-file=${AUTHORIZATION_WEBHOOK_CONFIG_FILE}"
 | 
				
			||||||
 | 
					        "--authentication-token-webhook-config-file=${AUTHENTICATION_WEBHOOK_CONFIG_FILE}"
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
 | 
					    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