Repository: microsoft/AIOpsLab
Pull request #27: Fix AIOpsLab Deployment for WSL2 & Ubuntu 24.04 – Updated Installation Guide
Author: login: Flemington8
Created: 2025-02-22T08:59:05Z | Merged: 2025-03-03T20:44:13Z

**Problem:**  
The original AIOpsLab deployment instructions **do not work on WSL2 (Windows) or local Ubuntu setups**, as they were primarily designed for **macOS or cloud servers**. Users attempting to deploy on **Ubuntu 24.04 or WSL2** face issues such as:  
- Docker image **architecture incompatibility** (`jacksonarthurclark/aiopslab-kind:latest` is built for macOS arm64).  
- **Permission issues** with Prometheus persistent storage.  
- **Missing dependencies** (kind, kubectl, Helm, Lua, Luarocks and Luasocket).  

**Solution:**  
This PR updates the **README** with verified **step-by-step deployment instructions** for:  
✅ **WSL2 (Windows Subsystem for Linux)**  
✅ **Ubuntu 24.04 LTS**  

**Key Fixes & Additions:**  
- 🛠 **Build a custom KIND image** to fix `x86_64` compatibility issues.  
- 📦 **Correct package installations** for Ubuntu (Docker, kind, kubectl, Helm, Lua).  
- 🔧 **Persistent storage setup** for Prometheus.  
- 🔍 **Troubleshooting section** for common deployment issues in WSL2/Ubuntu.  
- ✅ **Tested on:**  
  - **WSL2 Ubuntu 5.15.167.4-microsoft-standard-WSL2**  
  - **Ubuntu 24.04 LTS 6.8.0-52-generic**  

**Impact:**  
This PR ensures **seamless deployment on local Linux environments** without requiring **macOS or cloud servers**. It expands accessibility for more users in the **AIOpsLab community**.  


Diff:
diff --git a/.gitignore b/.gitignore
index 8cd68524..ddac56ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -324,6 +324,8 @@ cython_debug/
 #  option (not recommended) you can uncomment the following to ignore the entire idea folder.
 #.idea/
 
+# Visual Studio Code
+.vscode/
 
 # Project specific
 cache_dir
diff --git a/README.md b/README.md
index d03e442c..c78543ec 100644
--- a/README.md
+++ b/README.md
@@ -40,7 +40,7 @@ We recommend [Poetry](https://python-poetry.org/docs/) for managing dependencies
 git clone --recurse-submodules <CLONE_PATH_TO_THE_REPO>
 cd AIOpsLab
 poetry env use python3.11
-export PATH="HOME/.local/bin:HOME/.local/bin:PATH" # export poetry to PATH if needed
+export PATH="$HOME/.local/bin:$PATH" # export poetry to PATH if needed
 poetry install # -vvv for verbose output
 poetry self add poetry-plugin-shell # installs poetry shell plugin
 poetry shell
@@ -52,16 +52,17 @@ poetry shell
 Choose either a) or b) to set up your cluster and then proceed to the next steps.
 
 ### a) Local simulated cluster
-AIOpsLab can be run on a local simulated cluster using [kind](https://kind.sigs.k8s.io/). Please follow their setup instructions then proceed to the following steps.
+AIOpsLab can be run on a local simulated cluster using [kind](https://kind.sigs.k8s.io/) on your local machine.
 
 ```bash
-# Make sure current directory is set to AIOpsLab.
-kind create cluster --config kind-config.yaml
+# For x86 machines
+kind create cluster --config kind/kind-config-x86.yaml
+
+# For ARM machines
+kind create cluster --config kind/kind-config-arm.yaml
 ```
 
-If your the installation is very slow on your MacOS (Apple Silicon), you can try to check the Settings of the Docker Desktop's dashboard and enable:
-1) Use containerd for pulling and storing images
-2) Use Rosetta for x86/amd64 emulation on Apple Silicon
+If you're running into issues, consider building a Docker image for your machine by following this [README](kind/README.md). Please also open an issue.
 
 After finishing cluster creation, proceed to the next "Update `config.yml`" step.
 
diff --git a/kind/README.md b/kind/README.md
index 93e40358..102714cb 100644
--- a/kind/README.md
+++ b/kind/README.md
@@ -1,15 +1,153 @@
-# AIOpsLab Kind
-This is the dockerfile of our custom kind image used by `kind-config.yaml`.
+# Building your own image
 
-It's currently published on [Dockerhub](https://hub.docker.com/repository/docker/jacksonarthurclark/aiopslab-kind/general).
-The image is used in `kind-config.yaml` so if you publish your own image, be sure to update that file.
+This document provides detailed, step-by-step instructions for building your own kind image to deploy AIOpsLab.
+
+---
+
+## Table of Contents
+
+- [Overview](#overview)
+- [System Compatibility](#system-compatibility)
+- [Prerequisites](#prerequisites)
+  - [WSL2 and Ubuntu Setup](#wsl2-and-ubuntu-setup)
+  - [Install Docker](#install-docker)
+  - [Install kind](#install-kind)
+  - [Install kubectl](#install-kubectl)
+  - [Install Helm](#install-helm)
+- [Deployment Steps](#deployment-steps)
+  - [1. Build the Custom KIND Image](#1-build-the-custom-kind-image)
+  - [2. (Optional) Push the Image to Dockerhub](#2-optional-push-the-image-to-dockerhub)
+  - [3. Create a kind Kubernetes Cluster](#4-create-a-kind-kubernetes-cluster)
+- [Troubleshooting](#troubleshooting)
+- [Conclusion](#conclusion)
+
+---
+
+## **Overview**
+AIOpsLab is deployed using **containerized components** and Kubernetes manifests. This guide provides a step-by-step deployment process, covering:
+
+- Setting up **WSL2 (Windows Subsystem for Linux) or native Ubuntu 24.04**.
+- Installing **Docker, kind, kubectl, Helm, Lua, Luarocks, and Luasocket**.
+- Building a custom **kind image** and deploying AIOpsLab into a **local Kubernetes cluster**.
+
+---
+
+## **System Compatibility**
+This setup has been successfully verified on the following environments:
+1. **WSL2 Ubuntu**  
+   ```
+   Linux Warrens-Laptop 5.15.167.4-microsoft-standard-WSL2 #1 SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 GNU/Linux
+   ```
+2. **Ubuntu 24.04 LTS (Cloud/Local Machine)**  
+   ```
+   Linux ubuntu-s-4vcpu-8gb-sfo3-01 6.8.0-52-generic #53-Ubuntu SMP PREEMPT_DYNAMIC Sat Jan 11 00:06:25 UTC 2025 x86_64 GNU/Linux
+   ```
+
+---
+
+## **Prerequisites**
+
+### **WSL2 and Ubuntu Setup**
+Ensure that WSL2 is enabled on Windows and Ubuntu is installed. Follow the official [Microsoft WSL guide](https://learn.microsoft.com/en-us/windows/wsl/install).
+
+
+### **Install Docker**
+Docker is required to run Kubernetes and containers. Install Docker Desktop for WSL2 if using WSL2 Ubuntu, follow the [official Docker WSL documentation](https://docs.docker.com/desktop/wsl/).
+
+For native Ubuntu, install Docker using the following commands, follow the [official Docker installation guide](https://docs.docker.com/engine/install/ubuntu/).
+
+### **Install kind**
+Install kind (Kubernetes IN Docker) to create a local Kubernetes cluster:
+```bash
+curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64
+chmod +x ./kind
+sudo mv ./kind /usr/local/bin/kind
+```
+
+For more installation options and documentation, see [kind documentation](https://kind.sigs.k8s.io/docs/user/quick-start/).
+### **Install kubectl**
+Install **kubectl** to interact with Kubernetes clusters:
+```bash
+sudo apt-get update
+# apt-transport-https may be a dummy package; if so, you can skip that package
+sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
+
+# If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
+# sudo mkdir -p -m 755 /etc/apt/keyrings
+curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
+sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring
+
+# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
+echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
+sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list   # helps tools such as command-not-found to work correctly
+
+sudo apt-get update
+sudo apt-get install -y kubectl
+```
+
+For further guidance, refer to [kubectl linux installation docs](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/).
+
+### Install Helm
+
+Install Helm to manage Kubernetes applications:
 
-Build:
 ```bash
-docker build -t jacksonarthurclark/aiopslab-kind:latest .
+curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
+sudo apt-get install apt-transport-https --yes
+echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
+sudo apt-get update
+sudo apt-get install helm
 ```
 
-Push:
+For more information, see the [Helm installation guide](https://helm.sh/docs/intro/install/).
+
+---
+
+## Deployment Steps
+
+### 1. Build the Custom KIND Image
+
+The Dockerfile in this directory is designed specifically for Ubuntu running under WSL2 (amd64). **Please refer to this Dockerfile** to build an image that is compatible with your own machine 
+
+Build the custom image using:
+
 ```bash
-docker push jacksonarthurclark/aiopslab-kind:latest
-```
\ No newline at end of file
+docker build -t your_dockerhub_username/aiopslab-kind:latest -f kind/Dockerfile .
+```
+> **Note:** Replace `your_dockerhub_username` with your Docker Hub account if pushing the image.
+
+### 2. (Optional) Push the Image to Dockerhub
+
+If you wish to publish your custom image and have it referenced by the kind configuration file, push it to Docker Hub:
+
+```bash
+docker push your_dockerhub_username/aiopslab-kind:latest
+```
+
+Remember to update the `kind-config.yaml` file with your image name if you are using your own published image.
+
+
+After finishing cluster creation, proceed to the next "Update config.yml" step.
+
+---
+
+## **Troubleshooting**
+
+- **Docker Issues:**  
+  Ensure Docker is running within your WSL2 environment. Verify with `docker ps` to list running containers.
+
+- **Cluster Creation Failures:**  
+  Check that Docker is correctly installed and that your system has enough resources (CPU, memory). Examine the output of `kind export logs <cluster-name>` for details.
+
+- **Deployment Problems:**  
+  Use `kubectl logs <pod-name>` to view pod logs and diagnose application issues. Make sure that your `kind-config.yaml` file references the correct image.
+
+- **Resource Allocation:**  
+  WSL2 may require additional resources. Adjust the WSL2 settings in your `.wslconfig` file on Windows if you encounter performance issues.
+
+---
+
+## **Conclusion**
+This guide covers deploying **AIOpsLab** on **both WSL2 and Ubuntu 24.04**, ensuring compatibility across different environments. By following these steps, you can successfully set up **Docker, kind, and Kubernetes** and deploy the AIOpsLab application.
+
+For advanced configurations, refer to the [AIOpsLab documentation](https://github.com/Flemington8/AIOpsLab). 🚀
diff --git a/kind-config.yaml b/kind/kind-config-arm.yaml
similarity index 69%
rename from kind-config.yaml
rename to kind/kind-config-arm.yaml
index ad5b9dd3..d6cc2f82 100644
--- a/kind-config.yaml
+++ b/kind/kind-config-arm.yaml
@@ -2,12 +2,12 @@ kind: Cluster
 apiVersion: kind.x-k8s.io/v1alpha4
 nodes:
   - role: control-plane
-    image: jacksonarthurclark/aiopslab-kind:latest
+    image: jacksonarthurclark/aiopslab-kind-arm:latest
     extraMounts:
       - hostPath: /run/udev
         containerPath: /run/udev
   - role: worker
-    image: jacksonarthurclark/aiopslab-kind:latest
+    image: jacksonarthurclark/aiopslab-kind-arm:latest
     extraMounts:
       - hostPath: /run/udev
         containerPath: /run/udev
\ No newline at end of file
diff --git a/kind/kind-config-x86.yaml b/kind/kind-config-x86.yaml
new file mode 100644
index 00000000..e9645d57
--- /dev/null
+++ b/kind/kind-config-x86.yaml
@@ -0,0 +1,13 @@
+kind: Cluster
+apiVersion: kind.x-k8s.io/v1alpha4
+nodes:
+  - role: control-plane
+    image: jacksonarthurclark/aiopslab-kind-x86:latest
+    extraMounts:
+      - hostPath: /run/udev
+        containerPath: /run/udev
+  - role: worker
+    image: jacksonarthurclark/aiopslab-kind-x86:latest
+    extraMounts:
+      - hostPath: /run/udev
+        containerPath: /run/udev
\ No newline at end of file


Reviews:
user: login: yinfangchen
body: Leave my comments here. The rest LGTM. Great work!
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-03T20:32:25Z

Review comments:
diff_hunk: @@ -1,15 +1,198 @@
-# AIOpsLab Kind
-This is the dockerfile of our custom kind image used by `kind-config.yaml`.
+# AIOpsLab Deployment on WSL2 (Ubuntu) or native Ubuntu 24.04
 
-It's currently published on [Dockerhub](https://hub.docker.com/repository/docker/jacksonarthurclark/aiopslab-kind/general).
-The image is used in `kind-config.yaml` so if you publish your own image, be sure to update that file.
+This document provides detailed, step-by-step instructions for deploying AIOpsLab in an Ubuntu environment running on WSL2 or native Ubuntu 24.04. It covers all prerequisites (installing Docker, kind, kubectl, Lua, Luarocks, and Luasocket), building the custom KIND image, creating a local Kubernetes cluster with kind, and deploying the AIOpsLab application.
+
+---
+
+## Table of Contents
+
+- [Overview](#overview)
+- [System Compatibility](#system-compatibility)
+- [Prerequisites](#prerequisites)
+  - [WSL2 and Ubuntu Setup](#wsl2-and-ubuntu-setup)
+  - [Install Docker](#install-docker)
+  - [Install kind](#install-kind)
+  - [Install kubectl](#install-kubectl)
+  - [Install Helm](#install-helm)
+  - [Install Lua, Luarocks, and Luasocket](#install-lua-luarocks-and-luasocket)
+- [Deployment Steps](#deployment-steps)
+  - [1. Build the Custom KIND Image](#1-build-the-custom-kind-image)
+  - [2. (Optional) Push the Image to Dockerhub](#2-optional-push-the-image-to-dockerhub)
+  - [3. Create persistent directories for Prometheus data](#3-create-persistent-directories-for-prometheus-data)
+  - [4. Create a KIND Kubernetes Cluster](#4-create-a-kind-kubernetes-cluster)
+- [Troubleshooting](#troubleshooting)
+- [Conclusion](#conclusion)
+
+---
+
+## **Overview**
+AIOpsLab is deployed using **containerized components** and Kubernetes manifests. This guide provides a step-by-step deployment process, covering:
+
+- Setting up **WSL2 (Windows Subsystem for Linux) or native Ubuntu 24.04**.
+- Installing **Docker, kind, kubectl, Helm, Lua, Luarocks, and Luasocket**.
+- Building a custom **KIND image** and deploying AIOpsLab into a **local Kubernetes cluster**.
+
+---
+
+## **System Compatibility**
+This setup has been successfully verified on the following environments:
+1. **WSL2 Ubuntu**  
+   ```
+   Linux Warrens-Laptop 5.15.167.4-microsoft-standard-WSL2 #1 SMP Tue Nov 5 00:21:55 UTC 2024 x86_64 GNU/Linux
+   ```
+2. **Ubuntu 24.04 LTS (Cloud/Local Machine)**  
+   ```
+   Linux ubuntu-s-4vcpu-8gb-sfo3-01 6.8.0-52-generic #53-Ubuntu SMP PREEMPT_DYNAMIC Sat Jan 11 00:06:25 UTC 2025 x86_64 GNU/Linux
+   ```
+
+---
+
+## **Prerequisites**
+
+### **WSL2 and Ubuntu Setup**
+Ensure that WSL2 is enabled on Windows and Ubuntu is installed. Follow the official [Microsoft WSL guide](https://learn.microsoft.com/en-us/windows/wsl/install).
+
+
+### **Install Docker**
+Docker is required to run Kubernetes and containers. Install Docker Desktop for WSL2 if using WSL2 Ubuntu, follow the [official Docker WSL documentation](https://docs.docker.com/desktop/wsl/).
+
+For native Ubuntu, install Docker using the following commands, follow the [official Docker installation guide](https://docs.docker.com/engine/install/ubuntu/).
+
+### **Install kind**
+Install kind (Kubernetes IN Docker) to create a local Kubernetes cluster:
+```bash
+curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-linux-amd64
+chmod +x ./kind
+sudo mv ./kind /usr/local/bin/kind
+```
+
+For more installation options and documentation, see [kind documentation](https://kind.sigs.k8s.io/docs/user/quick-start/).
+### **Install kubectl**
+Install **kubectl** to interact with Kubernetes clusters:
+```bash
+sudo apt-get update
+# apt-transport-https may be a dummy package; if so, you can skip that package
+sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
+
+# If the folder `/etc/apt/keyrings` does not exist, it should be created before the curl command, read the note below.
+# sudo mkdir -p -m 755 /etc/apt/keyrings
+curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
+sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg # allow unprivileged APT programs to read this keyring
+
+# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list
+echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
+sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list   # helps tools such as command-not-found to work correctly
+
+sudo apt-get update
+sudo apt-get install -y kubectl
+```
+
+For further guidance, refer to [kubectl linux installation docs](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/).
+
+### Install Helm
+
+Install Helm to manage Kubernetes applications:
+
+```bash
+curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
+sudo apt-get install apt-transport-https --yes
+echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
+sudo apt-get update
+sudo apt-get install helm
+```
+
+For more information, see the [Helm installation guide](https://helm.sh/docs/intro/install/).
+
+### Install lua, luarocks, and luasocket
+
+Install lua, luarocks, and luasocket to run the AIOpsLab application:
+
+Install Lua:
+```bash
+sudo apt install build-essential libreadline-dev unzip
+curl -L -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
+tar zxf lua-5.3.5.tar.gz
+cd lua-5.3.5
+make linux test
+sudo make install
+```
+
+Install LuaRocks and LuaSocket:
+```bash
+wget https://luarocks.org/releases/luarocks-3.11.1.tar.gz
+tar zxpf luarocks-3.11.1.tar.gz
+cd luarocks-3.11.1
+./configure --with-lua-include=/usr/local/include && make && sudo make install
+sudo luarocks install luasocket
+```
+
+For more information, see the [Lua installation guide](https://www.lua.org/download.html) and the [LuaRocks installation guide](https://github.com/luarocks/luarocks/blob/master/docs/index.md).
+
+---
+
+## Deployment Steps
+
+### 1. Build the Custom KIND Image
+
+The Dockerfile in this directory is designed specifically for Ubuntu running under WSL2 (amd64). **Please refer to this Dockerfile** to build an image that is compatible with your own machine —this is critical because the published AIOpsLab image
+```jacksonarthurclark/aiopslab-kind:latest``` is built for macOS (arm64) and will not work on Ubuntu (amd64).
+
+Build the custom image using:
+
+```bash
+docker build -t your_dockerhub_username/aiopslab-kind:latest -f kind/Dockerfile .
+```
+> **Note:** Replace `your_dockerhub_username` with your Docker Hub account if pushing the image.
+
+### 2. (Optional) Push the Image to Dockerhub
+
+If you wish to publish your custom image and have it referenced by the kind configuration file, push it to Docker Hub:
+
+```bash
+docker push your_dockerhub_username/aiopslab-kind:latest
+```
+
+Remember to update the `kind-config.yaml` file with your image name if you are using your own published image.
+
+### 3. Create persistent directories for Prometheus data
path: kind/README.md
user: login: yinfangchen
body: I believe we do not need this step anymore. Could you @JacksonArthurClark help improve the README here? e.g., consider removing this section 3.
created_at: 2025-03-03T20:31:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,4 +1,4 @@
-FROM kindest/node:v1.32.1
+FROM kindest/node:v1.32.0
path: kind/Dockerfile
user: login: yinfangchen
body: @Flemington8 any reason for downgrading to the previous version? 
created_at: 2025-03-03T20:32:01Z
author_association: CONTRIBUTOR

PR comments:
user: login: Flemington8
created_at: 2025-02-22T09:09:36Z
body: > @Flemington8 please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
> 
> ```
> @microsoft-github-policy-service agree [company="{your company}"]
> ```
> 
> > Options:
> > 
> > * (default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
> > 
> > ```
> > @microsoft-github-policy-service agree
> > ```
> > 
> > 
> >     
> >       
> >     
> > 
> >       
> >     
> > 
> >     
> >   
> > 
> > * (when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.
> > 
> > ```
> > @microsoft-github-policy-service agree company="Microsoft"
> > ```
> 
> Contributor License Agreement
> ### Contribution License Agreement
> This Contribution License Agreement (**“Agreement”**) is agreed to by the party signing below (**“You”**), and conveys certain license rights to Microsoft Corporation and its affiliates (“Microsoft”) for Your contributions to Microsoft open source projects. This Agreement is effective as of the latest signature date below.
> 
> 1. **Definitions**.
>    **“Code”** means the computer software code, whether in human-readable or machine-executable form,
>    that is delivered by You to Microsoft under this Agreement.
>    **“Project”** means any of the projects owned or managed by Microsoft and offered under a license
>    approved by the Open Source Initiative ([www.opensource.org](http://www.opensource.org)).
>    **“Submit”** is the act of uploading, submitting, transmitting, or distributing code or other content to any
>    Project, including but not limited to communication on electronic mailing lists, source code control
>    systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
>    discussing and improving that Project, but excluding communication that is conspicuously marked or
>    otherwise designated in writing by You as “Not a Submission.”
>    **“Submission”** means the Code and any other copyrightable material Submitted by You, including any
>    associated comments and documentation.
> 2. **Your Submission**. You must agree to the terms of this Agreement before making a Submission to any
>    Project. This Agreement covers any and all Submissions that You, now or in the future (except as
>    described in Section 4 below), Submit to any Project.
> 3. **Originality of Work**. You represent that each of Your Submissions is entirely Your original work.
>    Should You wish to Submit materials that are not Your original work, You may Submit them separately
>    to the Project if You (a) retain all copyright and license information that was in the materials as You
>    received them, (b) in the description accompanying Your Submission, include the phrase “Submission
>    containing materials of a third party:” followed by the names of the third party and any licenses or other
>    restrictions of which You are aware, and (c) follow any other instructions in the Project’s written
>    guidelines concerning Submissions.
> 4. **Your Employer**. References to “employer” in this Agreement include Your employer or anyone else
>    for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
>    Submission is made in the course of Your work for an employer or Your employer has intellectual
>    property rights in Your Submission by contract or applicable law, You must secure permission from Your
>    employer to make the Submission before signing this Agreement. In that case, the term “You” in this
>    Agreement will refer to You and the employer collectively. If You change employers in the future and
>    desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
>    and secure permission from the new employer before Submitting those Submissions.
> 5. **Licenses**.
> 
> * **Copyright License**. You grant Microsoft, and those who receive the Submission directly or
>   indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license in the
>   Submission to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute
>   the Submission and such derivative works, and to sublicense any or all of the foregoing rights to third
>   parties.
> * **Patent License**. You grant Microsoft, and those who receive the Submission directly or
>   indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under
>   Your patent claims that are necessarily infringed by the Submission or the combination of the
>   Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
>   import or otherwise dispose of the Submission alone or with the Project.
> * **Other Rights Reserved**. Each party reserves all rights not expressly granted in this Agreement.
>   No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
>   granted by implication, exhaustion, estoppel or otherwise.
> 
> 6. **Representations and Warranties**. You represent that You are legally entitled to grant the above
>    licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
>    have disclosed under Section 3). You represent that You have secured permission from Your employer to
>    make the Submission in cases where Your Submission is made in the course of Your work for Your
>    employer or Your employer has intellectual property rights in Your Submission by contract or applicable
>    law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
>    have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
>    You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
>    REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
>    EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
>    PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
>    NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
> 7. **Notice to Microsoft**. You agree to notify Microsoft in writing of any facts or circumstances of which
>    You later become aware that would make Your representations in this Agreement inaccurate in any
>    respect.
> 8. **Information about Submissions**. You agree that contributions to Projects and information about
>    contributions may be maintained indefinitely and disclosed publicly, including Your name and other
>    information that You submit with Your Submission.
> 9. **Governing Law/Jurisdiction**. This Agreement is governed by the laws of the State of Washington, and
>    the parties consent to exclusive jurisdiction and venue in the federal courts sitting in King County,
>    Washington, unless no federal subject matter jurisdiction exists, in which case the parties consent to
>    exclusive jurisdiction and venue in the Superior Court of King County, Washington. The parties waive all
>    defenses of lack of personal jurisdiction and forum non-conveniens.
> 10. **Entire Agreement/Assignment**. This Agreement is the entire agreement between the parties, and
>     supersedes any and all prior agreements, understandings or communications, written or oral, between
>     the parties relating to the subject matter hereof. This Agreement may be assigned by Microsoft.

@microsoft-github-policy-service agree company="Microsoft"
author_association: CONTRIBUTOR
user: login: HacksonClark
created_at: 2025-02-22T19:34:15Z
body: I'll get started working on the review, great work though! From a first pass it's looking very good :)
author_association: COLLABORATOR
user: login: yinfangchen
created_at: 2025-02-26T23:10:22Z
body: Could you try this PR @daklqw on Linux?
author_association: CONTRIBUTOR
user: login: yinfangchen
created_at: 2025-02-26T23:11:52Z
body: This PR contains two kind-config.yaml - I guess one should be deleted.
author_association: CONTRIBUTOR
user: login: wuyifan18
created_at: 2025-02-27T06:53:42Z
body: I successfully deployed AIOpsLab on WSL2 using this PR. 😃
author_association: CONTRIBUTOR
user: login: Flemington8
created_at: 2025-02-28T10:46:29Z
body: > This PR contains two kind-config.yaml - I guess one should be deleted.

Oh, the kind-config.yaml under kind directory in my PR is the Ubuntu version which suit for amd64 arch, and I retain the outer kind-config.yaml which is MacOS version, and I try this version to create cluster but failed due to it is suit for arm64 arch. I think both of this two version of kind-config.yaml need to be retain? But I don't know U guys' principle of structure this repo and naming convention, so I leave these two file. Sry for the inconvenient that I made, it's my first time to participate open source project! And I follow your instruction, and update README.md and dir structure to better instruct the creation of local simulated cluster for diverse arch type.
author_association: CONTRIBUTOR
user: login: HacksonClark
created_at: 2025-02-28T20:13:53Z
body: > Sry for the inconvenient that I made, it's my first time to participate open source project! And I follow your instruction, and update README.md and dir structure to better instruct the creation of local simulated cluster for diverse arch type.

Don't worry about it, this is a great contribution! For a first open source contribution it is outstanding, great work! I hope you continue to participate in the project.

Sorry it's taken me a long time to review, been very busy this week. Hopefully I can finish your review today or sometime over this weekend.
author_association: COLLABORATOR
user: login: Flemington8
created_at: 2025-03-01T16:14:17Z
body: > > Sry for the inconvenient that I made, it's my first time to participate open source project! And I follow your instruction, and update README.md and dir structure to better instruct the creation of local simulated cluster for diverse arch type.
> 
> Don't worry about it, this is a great contribution! For a first open source contribution it is outstanding, great work! I hope you continue to participate in the project.
> 
> Sorry it's taken me a long time to review, been very busy this week. Hopefully I can finish your review today or sometime over this weekend.

Yeah, I'm also appreciate your time! If there any problem, just contact me in Slack!
author_association: CONTRIBUTOR
user: login: HacksonClark
created_at: 2025-03-03T20:41:38Z
body: @yinfangchen Can you review my latest changes? I've tested on both Ubuntu and my Mac, and the new images are working great for both. I also updated the READMEs since we just want users to build their own image in case it doesn't work (though they should open an issue for this).

I also updated the config files, since we don't want to use datadrive since we use openebs.
author_association: COLLABORATOR