# k8s-aibom Cloud Shell Tutorial 15 Beginner ## Project Setup Select the Google Cloud project you want to use. This project will host your Artifact Registry and Google Kubernetes Engine (GKE) cluster. ## Enable APIs You will need the Artifact Registry API and the Google Kubernetes Engine (GKE) API enabled in your project. ```bash gcloud services enable artifactregistry.googleapis.com container.googleapis.com ``` ## Configure Authentication and Region Configure Docker to authenticate with Artifact Registry. Because Cloud Shell is ephemeral, we do this for the current session. ```bash gcloud auth configure-docker us-central1-docker.pkg.dev ``` Set the default compute region: ```bash gcloud config set compute/region us-central1 ``` ## Create a Cluster and Registry Create a GKE Autopilot cluster for testing (Note: This will take ~5-10 minutes to provision): ```bash gcloud container clusters create-auto aibom-demo --region us-central1 ``` Create an Artifact Registry repository to host your container image: ```bash gcloud artifacts repositories create aibom-repo \ --repository-format=docker \ --location=us-central1 ``` ## Build and Push the Controller Image Build the `k8s-aibom` image locally in Cloud Shell using Docker, and push it to your Artifact Registry. We define the `IMG` environment variable so the `Makefile` pushes to the correct registry location. ```bash export PROJECT_ID=$(gcloud config get-value project) export IMG=us-central1-docker.pkg.dev/${PROJECT_ID}/aibom-repo/k8s-aibom:v1.0.0 make image make docker-push ``` ## Deploy with Helm Deploy the controller to your cluster using Helm, injecting your registry path and tag: ```bash helm install k8s-aibom ./charts/k8s-aibom \ --namespace k8s-aibom-system \ --create-namespace \ --set image.repository=us-central1-docker.pkg.dev/${PROJECT_ID}/aibom-repo/k8s-aibom \ --set image.tag=v1.0.0 ``` ## Verify Installation The controller is installed cluster-wide but remains inactive until you opt in at least one namespace. Let's opt in the `default` namespace: ```bash kubectl label namespace default aibom.k8saibom.dev/enabled=true ``` Verify the controller pod is running: ```bash kubectl get pods -n k8s-aibom-system ``` ## Conclusion You have successfully deployed k8s-aibom using the Bring Your Own Image (BYOI) strategy! You can now deploy AI workloads to the `default` namespace and observe the generated AIBOM resources.