[Yandex Cloud documentation](../../index.md) > [Yandex Managed Service for Kubernetes](../index.md) > [Step-by-step guides](index.md) > Activating a Kubernetes Terraform provider

# Activating the Kubernetes Terraform provider

You can use Terraform manifests to create Kubernetes resources. To do this, activate the `kubernetes` Terraform provider. It supports Terraform resources that are mapped to YAML configuration files for various Kubernetes resources.

For more information about the provider resources, see the relevant provider reference on the [Terraform](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs) website.

## Getting started {#before-you-begin}

To activate the `kubernetes` provider, [create](kubernetes-cluster/kubernetes-cluster-create.md) a Kubernetes cluster using Terraform.

{% note warning %}

Do not delete the Terraform configuration files after creating the cluster as you will need them to activate the provider.

{% endnote %}

The `kubernetes` provider is initialized only after creating and setting up a Kubernetes cluster for the following reasons:

* The provider requires the cluster data.
* The provider is used to create Kubernetes resources. You can only create them when the cluster is ready.

## Activating the provider {#configure-provider}

1. Navigate to the working directory with Terraform files.

1. Open the `.tf` file with `yandex` provider settings you used when creating the Kubernetes cluster. It must have the following structure:

    ```hcl
    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
      }

      required_version = ">= 0.13"
    }

    provider "yandex" {
      cloud_id  = "<cloud_ID>"
      folder_id = "<folder_ID>"
      zone      = "<default_availability_zone>"
    }
    ```

1. In the file, specify the parameters required for the `kubernetes` provider:

    1. Under `required_providers`, add:

        ```hcl
        kubernetes = {
          source = "hashicorp/kubernetes"
        }
        ```

    1. Under `required_providers`, change `required_version` to `">= 0.14.8"`.

    1. Add a new section at the end of the file:

        ```hcl
        data "yandex_client_config" "client" {}

        provider "kubernetes" {
          host                   = yandex_kubernetes_cluster.<Kubernetes_cluster_name>.master[0].external_v4_endpoint
          cluster_ca_certificate = yandex_kubernetes_cluster.<Kubernetes_cluster_name>.master[0].cluster_ca_certificate
          token                  = data.yandex_client_config.client.iam_token
        }
        ```

1. Make sure the file you get has the following contents:

    ```hcl
    terraform {
      required_providers {
        yandex = {
          source = "yandex-cloud/yandex"
        }
        kubernetes = {
          source = "hashicorp/kubernetes"
        }
      }
      required_version = ">= 0.14.8"
    }

    provider "yandex" {
      cloud_id  = "<cloud_ID>"
      folder_id = "<folder_ID>"
      zone      = "<default_availability_zone>"
    }

    data "yandex_client_config" "client" {}

    provider "kubernetes" {
      host                   = yandex_kubernetes_cluster.<Kubernetes_cluster_name>.master[0].external_v4_endpoint
      cluster_ca_certificate = yandex_kubernetes_cluster.<Kubernetes_cluster_name>.master[0].cluster_ca_certificate
      token                  = data.yandex_client_config.client.iam_token
    }
    ```

1. Initialize the `kubernetes` provider:

   ```bash
   terraform init
   ```

## See also {see-also}

[Managing Kubernetes resources via the Terraform provider](../tutorials/kubernetes-terraform-provider.md)