We export a few environment variables before proceeding:
export CLUSTER_NAME=****
export REGION=us-west-2
export ACCOUNT_ID==****
export CLUSTER_REGION=us-west-2
Note: For this deployment, a VPC (with public subnets only) is created manually and then used for the cluster.
envsubst < 00_cluster.yaml | eksctl create cluster -f -
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
curl -Lo aws-iam-authenticator https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v0.5.9/aws-iam-authenticator_0.5.9_linux_amd64
chmod +x ./aws-iam-authenticator
sudo cp ./aws-iam-authenticator /usr/local/bin
eksctl create iamserviceaccount \
--name ebs-csi-controller-sa \
--namespace kube-system \
--cluster ${CLUSTER_NAME} \
--role-name AmazonEKS_EBS_CSI_DriverRole \
--role-only \
--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
--approve \
--region ${REGION}
eksctl create addon --name aws-ebs-csi-driver --cluster ${CLUSTER_NAME} --service-account-role-arn arn:aws:iam::${ACCOUNT_ID}:role/AmazonEKS_EBS_CSI_DriverRole --region ${REGION} --force
export KUBEFLOW_RELEASE_VERSION=v1.7.0
export AWS_RELEASE_VERSION=v1.7.0-aws-b1.0.3
git clone https://github.com/awslabs/kubeflow-manifests.git && cd kubeflow-manifests
git checkout ${AWS_RELEASE_VERSION}
git clone --branch ${KUBEFLOW_RELEASE_VERSION} https://github.com/kubeflow/manifests.git upstream
edit the following section in Makefile
install-helm:
wget <https://get.helm.sh/helm-v3.12.2-linux-amd64.tar.gz>
tar -zxvf helm-v3.12.2-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
helm version
make install-tools
make deploy-kubeflow INSTALLATION_OPTION=helm DEPLOYMENT_OPTION=vanilla
kubectl apply -f 01_minio_secret.yaml -n kubeflow-user-example-com
We update the Knative domain that is used for the KServe routes.
Example guides including the ones here and here
kubectl patch cm config-domain --patch '{"data":{"emlo.mmg":""}}' -n knative-serving