# Pre-requisite

You need to ensure the following before installation:

1. Kubernetes cluster (EKS/GKE/AKS/On-prem)
2. Helm. ( Refer to this [documentation](https://helm.sh/docs/) to get started)
3. [Kubernetes Gateway API](https://gateway-api.sigs.k8s.io/) CRD
4. Controller of Istio or Envoy Gateway (you can refer to the video to install Istio/Envoy Gateway controllers)

You need to install IMESH Agent to your cluster. The minimum resources you require for installing IMESH Agent are provided below:

| Items       | CPU | Memory |
| ----------- | --- | ------ |
| IMESH Agent | 50m | 128MB  |

Note: These minimum resources are as per this release only and may vary in future releases.

#### Install Gateway API CRD

Use the following command to install the Kubernetes Gateway API CRD standard channel.&#x20;

```yaml
kubectl apply -f
https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml
```

\
(refer to the Kubernetes gateway API [guide](https://gateway-api.sigs.k8s.io/guides/) to know more)

**Installing Istio as a controller for Gateway API**

You can install the Istio or Envoy Gateway controller. Here are the commands to install Istiod, which will act as the controller for managing the Kubernetes gateway. (We have used istioctl, but you can use HELM alternatively).

```yaml
istioctl install -set profile=minimal
```

(Note: we have kept the profile minimal because we need only Istio core or Istiod)

**Installing Envoy Gateway as a controller for Gateway API**

You can install Envoy Gateway as a controller by executing the following command:

```yaml
kubectl apply --server-side -f https://github.com/envoyproxy/gateway/releases/download/v1.1.0/install.yaml
```

**Create GatewayClass resource**

To create gateways, we have to make a **GatewayClass** CRD. The **GatewayClass** resource represents a class of controllers that can be instantiated. Istio automatically installs GatewayClass CRD; however, with Envoy Gateway, one must manually create and deploy GatewayClass CRD.&#x20;

To create a GatewayClass resource, you can use the following code to create a YAML file.

```yaml
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: eg
spec:
  controllerName: gateway.envoyproxy.io/gatewayclass-controller
```

You can deploy the yaml to create a GatewayClass resource.\ <br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.imesh.ai/getting-started/pre-requisite.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
