These were the steps I took : # make a bin folder to contain the kfctl mkdir ~/bin # download kfctl from the releases page wget -P /tmp https://github.com/kubeflow/kfctl/releases/download/v1.0/kfctl_v1.0-0-g94c35cf_linux.tar.gz # unzip to the bin folder tar -xvf /tmp/kfctl_v1.0-0-g94c35cf_linux.tar.gz -C ~/bin # add the kfctl binary to the PATH export PATH=$PATH:~/bin ## Configure gcloud default values for zone and project: # Set your GCP project ID and the zone where you want to create # the Kubeflow deployment: export PROJECT=<your GCP project ID> export ZONE=<your GCP zone> gcloud config set project ${PROJECT} gcloud config set compute/zone ${ZONE} Step 6: Select the KFDef spec to use as the basis for your deployment export CONFIG_URI="https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_gcp_iap.v1.0.0.yaml" Step 7: Create environment variables containing the OAuth client ID and secret that you created earlier export CLIENT_ID=<CLIENT_ID from OAuth page> export CLIENT_SECRET=<CLIENT_SECRET from OAuth page> Step 8: Pick names for your Kubeflow deployment and directory for your configuration: export KF_NAME=<your choice of name for the Kubeflow deployment> export BASE_DIR=<path to a base directory> export KF_DIR=${BASE_DIR}/${KF_NAME} Deploy Kubeflow with Customization Step 1: Download the KFDef file to your local directory to allow modification: export CONFIG_FILE="kfdef.yaml" mkdir -p ${KF_DIR} cd ${KF_DIR} curl -L -o ${CONFIG_FILE} https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_gcp_iap.v1.0.0.yaml Step 2: Edit the KFDef spec in the yaml file. The following commands shows you how to set values in the configuration file using yq: yq w -i ${CONFIG_FILE} 'spec.plugins[0].spec.project' ${PROJECT} yq w -i ${CONFIG_FILE} 'spec.plugins[0].spec.zone' ${ZONE} yq w -i ${CONFIG_FILE} 'metadata.name' ${KF_NAME} Step 3: Run the kfctl build command to generate kustomize and GCP deployment manager configuration files for your deployment: cd ${KF_DIR} kfctl build -V -f ${CONFIG_FILE} # run the kfctl apply command to deploy Kubeflow: cd ${KF_DIR} kfctl apply -V -f ${CONFIG_FILE} # So, when I run the last command, I get the following errors below: ERRO[0034] Updating new-deployment error: &{Code:RESOURCE_ERROR Location:/deployments/new-deployment/resources/new-deployment Message:{"ResourceType":"gcp-types/container-v1 beta1:projects.locations.clusters","ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"Insufficient project quota to satisfy request: resource \"CPUS_ALL _REGIONS\": request requires '16.0' and is short '4.0'. project has a quota of '12.0' with '12.0' available. View and manage quotas at https://console.cloud.google.com/iam-a dmin/quotas?usage=USED&project=my-kubeflow-deployment.","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://container.googleapis.com/v1beta1/proj ects/my-kubeflow-deployment/locations/us-central1-a/clusters","httpMethod":"POST"}} ForceSendFields:[] NullFields:[]} filename="gcp/gcp.go:386" Error: failed to apply: (kubeflow.error): Code 500 with message: coordinator Apply failed for gcp: (kubeflow.error): Code 400 with message: gcp apply could not update depl oyment manager Error could not update deployment manager entries; Updating new-deployment error(400): BAD REQUEST Usage: kfctl apply -f ${CONFIG} [flags] Flags: -f, --file string Static config file to use. Can be either a local path: export CONFIG=./kfctl_gcp_iap.yaml or a URL: export CONFIG=https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_gcp_iap.v1.0.0.yaml export CONFIG=https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_istio_dex.v1.0.0.yaml export CONFIG=https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_aws.v1.0.0.yaml export CONFIG=https://raw.githubusercontent.com/kubeflow/manifests/v1.0-branch/kfdef/kfctl_k8s_istio.v1.0.0.yaml kfctl apply -V --file=${CONFIG} -h, --help help for apply -V, --verbose verbose output default is false failed to apply: (kubeflow.error): Code 500 with message: coordinator Apply failed for gcp: (kubeflow.error): Code 400 with message: gcp apply could not update deployment manager Error could not update deployment manager entries; Updating new-deployment error(400): BAD REQUEST