Skip to content
forked from jrhouston/tfk8s

A tool for converting Kubernetes YAML manifests to Terraform HCL

License

Notifications You must be signed in to change notification settings

suru-forks/tfk8s

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

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

✨✨ magically becomes ✨✨

output.tf:

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"
  }
}

About

A tool for converting Kubernetes YAML manifests to Terraform HCL

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 85.2%
  • Makefile 14.8%