# 4. Configure the Provider

Once you've completed steps 1-3 on the previous pages you should have all the values at hand to configure Garden's Kubernetes plugin.

In particular, you should have:

* The context for your Kubernetes cluster ([see step 1](https://docs.garden.io/acorn-0.12/kubernetes-plugins/remote-k8s/create-cluster)).
* The name(s) and namespace(s) of the ImagePullSecret(s) used by your cluster ([see step 2](https://docs.garden.io/acorn-0.12/kubernetes-plugins/remote-k8s/configure-registry)).
* The hostname for your services ([see step 3](https://docs.garden.io/acorn-0.12/kubernetes-plugins/remote-k8s/ingress-and-dns)).
* A TLS secret (optional) ([see step 3](https://docs.garden.io/acorn-0.12/kubernetes-plugins/remote-k8s/ingress-and-dns)).

Now we can finally add them to our Garden config.

## 1. Add initial config

First, add your values to the project level Garden configuration file at the root of your project:

```yaml
kind: Project

environments:
  - name: remote
    variables:
      hostname: <THE HOSTNAME FROM STEP 3>

providers:
  - name: kubernetes
    environments: [remote]
    imagePullSecrets: # You can set multiple secrets here
      - name: <THE IMAGE PULL SECRET FROM STEP 2>
        namespace: <THE IMAGE PULL SECRET NAMESPACE FROM STEP 2>
    deploymentRegistry:
      hostname: <THE REGISTRY HOSTNAME CONFIGURED IN STEP 2>
      namespace: <THE REGISTRY NAMESPACE CONFIGURED IN STEP 2>
    context: <THE KUBE CONTEXT FROM STEP 1>
    defaultHostname: <THE HOSTNAME FROM STEP 3>
```

### 2. Select build mode

Next, select a "build mode".

You can choose between building your images locally with Docker using the `local-docker` build mode or remotely, in the cluster itself.

Note that even if you choose the `local-docker` build mode, you still need to configure a container registry that Garden can push to and set an ImagePullSecret so that Kubernetes can pull your images.

In general, we recommend doing remote building with the `cluster-buildkit` build mode.

This means you don't need Docker running on your laptop and you're able to share build caches with your team and across environments.

To use the `cluster-buildkit` build mode, add the following to your configuration:

```yaml
providers:
  - name: kubernetes
    buildMode: "cluster-buildkit" # <--- Add this
    # ...
```

We also recommend taking a look at our [in-depth guide on build modes](https://docs.garden.io/acorn-0.12/kubernetes-plugins/advanced/in-cluster-building) which explains the pros and cons of different modes and how to configure them.

### 3. Initialize the plugin

Finally, initialize the plugin by running:

```
garden plugins kubernetes cluster-init
```

And that's it! Your Kubernetes plugin is now configured and you can proceed to deploying your project to Kubernetes with Garden.

Next we recommend learning more about configuring [Kubernetes modules](https://docs.garden.io/acorn-0.12/kubernetes-plugins/module-types).


---

# 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.garden.io/acorn-0.12/kubernetes-plugins/remote-k8s/configure-provider.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.
