Need help with tfk8s?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

jrhouston
152 Stars 11 Forks MIT License 30 Commits 5 Opened issues

Description

A tool for converting Kubernetes YAML manifests to Terraform HCL

Services available

!
?

Need anything else?

Contributors list

# 93,474
Go
terrafo...
Terrafo...
Kuberne...
30 commits

tfk8s

tfk8s
is a tool that makes it easier to work with the Terraform Kubernetes Provider.

If you want to copy examples from the Kubernetes documentation or migrate existing YAML manifests and use them with Terraform without having to convert YAML to HCL by hand, this tool is for you.

Demo

Features

  • Convert a YAML file containing multiple manifests
  • Strip out server side fields when piping
    kubectl get $R -o yaml | tfk8s --strip

Install

For the moment, clone this repo and run:

make install

If Go's bin directory is not in your

PATH
you will need to add it:
export PATH=$PATH:$(go env GOPATH)/bin

Usage

Creating Terraform configurations

tfk8s -f input.yaml -o output.tf

or, using pipes:

cat input.yaml | tfk8s > output.tf

input.yaml:

```yaml

apiVersion: v1 kind: ConfigMap metadata: name: test data: TEST: test ```

✨✨ magically becomes ✨✨

output.tf:

hcl
resource "kubernetes_manifest_hcl" "configmap_test" {
  manifest = {
    "apiVersion" = "v1"
    "data" = {
      "TEST" = "test"
    }
    "kind" = "ConfigMap"
    "metadata" = {
      "name" = "test"
    }
  }
}

Use with kubectl to output maps instead of YAML

kubectl get ns default -o yaml | tfk8s -M
{
  "apiVersion" = "v1"
  "kind" = "Namespace"
  "metadata" = {
    "creationTimestamp" = "2020-05-02T15:01:32Z"
    "name" = "default"
    "resourceVersion" = "147"
    "selfLink" = "/api/v1/namespaces/default"
    "uid" = "6ac3424c-07a4-4a69-86ae-cc7a4ae72be3"
  }
  "spec" = {
    "finalizers" = [
      "kubernetes",
    ]
  }
  "status" = {
    "phase" = "Active"
  }
}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.