diff --git a/charts/values-overrides/examples/gke/README.md b/charts/values-overrides/examples/gke/README.md new file mode 100644 index 00000000..9e9d3f59 --- /dev/null +++ b/charts/values-overrides/examples/gke/README.md @@ -0,0 +1,370 @@ +# Deploy a Graphistry k8s cluster using GKE +This guide provides step-by-step instructions for deploying Graphistry on Google Kubernetes Engine (GKE). The steps are based on the official documentation of [Graphistry Helm Charts](https://github.com/graphistry/graphistry-helm) and the [NVIDIA GPU Operator with Google GKE](https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/google-gke.html). + +## Prerequisites + +### gcloud +Install the `gcloud` CLI: donwload the Linux binaries from (e.g. `google-cloud-cli-477.0.0-linux-x86_64.tar.gz`): +https://cloud.google.com/sdk/docs/install + +Verify the installation using: +```bash +cloud --version +# Google Cloud SDK 477.0.0 +# beta 2024.05.17 +# bq 2.1.4 +# bundled-python3-unix 3.11.8 +# core 2024.05.17 +# gcloud-crc32c 1.0.0 +# gke-gcloud-auth-plugin 0.5.8 +# gsutil 5.29 +# kubectl 1.27.14 +``` + +### kubectl +Install `kubectl` compatible with `gcloud`: +```bash +gcloud components install kubectl +``` + +More details here: +https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl + +Verify the installation using: +```bash +kubectl version +# WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short. Use --output=yaml|json to get the full version. +# Client Version: version.Info{Major:"1", Minor:"27+", GitVersion:"v1.27.14-dispatcher", GitCommit:"643004a51a14c7a149377e6651fb926f17c06c5a", GitTreeState:"clean", BuildDate:"2024-05-15T21:18:29Z", GoVersion:"go1.21.9", Compiler:"gc", Platform:"linux/amd64"} +# Kustomize Version: v5.0.1 +``` + +### heml +Install Helm from: +https://github.com/helm/helm/releases + +Download the `linux-amd64` version and add the binaries to the prefix path: +```bash +wget https://get.helm.sh/helm-v3.15.1-linux-amd64.tar.gz +tar xvf helm-v3.15.1-linux-amd64.tar.gz +export PATH=$PATH:$PWD/linux-amd64/ +``` + +Verify the installation using: +```bash +helm version +# version.BuildInfo{Version:"v3.15.1", GitCommit:"e211f2aa62992bd72586b395de50979e31231829", GitTreeState:"clean", GoVersion:"go1.22.3"} +``` + +## Create a K8S cluster +In this example the cluster will have a single node with only 1 GPU (`nvidia-tesla-t4`): +```bash +gcloud beta container clusters create demo-cluster \ + --zone us-central1-a \ + --release-channel "regular" \ + --machine-type "n1-highmem-4" \ + --accelerator "type=nvidia-tesla-t4,count=1" \ + --image-type "UBUNTU_CONTAINERD" \ + --disk-type "pd-standard" \ + --disk-size "1000" \ + --no-enable-intra-node-visibility \ + --metadata disable-legacy-endpoints=true \ + --max-pods-per-node "110" \ + --num-nodes "1" \ + --logging=SYSTEM,WORKLOAD \ + --monitoring=SYSTEM \ + --enable-ip-alias \ + --no-enable-intra-node-visibility \ + --default-max-pods-per-node "110" \ + --no-enable-master-authorized-networks \ + --tags=nvidia-ingress-all +``` + +## Get cluster credentials +The next command should fill the credentials in `~/.kube/config`: +```bash +USE_GKE_GCLOUD_AUTH_PLUGIN=True \ + gcloud container clusters get-credentials demo-cluster --zone us-central1-a +``` + +Verify the credentials and the cluster labels: +```bash +kubectl get nodes --show-labels +cat ~/.kube/config +``` + +## Test the K8S cluster +```bash +kubectl get nodes -o wide +kubectl get all +``` + +## Setup the NVIDIA GPU Operator +```bash +kubectl create ns gpu-operator +kubectl apply -n gpu-operator -f - <