tfk8s:基于 Terraform Kubernetes Provider 的 YAML 转 HCL 工具项目

A tool for converting Kubernetes YAML manifests to Terraform HCL

分支14Tags10
文件最后提交记录最后更新时间
3 年前
3 年前
6 年前
3 年前
3 年前
6 年前
3 年前
6 年前
3 年前
3 年前
3 年前
3 年前
3 年前
3 年前

tfk8s Go Report Card tests


tfk8s是一款工具,它可以简化使用Terraform Kubernetes Provider的操作。

如果您想复制Kubernetes文档中的示例或迁移现有的YAML清单,并与Terraform一起使用,而无需手动将YAML转换为HCL,那么这款工具就是您的不二之选。

演示

功能

  • 转换包含多个清单的YAML文件
  • 当使用管道kubectl get $R -o yaml | tfk8s --strip时,去除服务器端字段

安装

go install github.com/jrhouston/tfk8s@latest

或者,克隆此存储库并运行:

make install

如果你的 PATH 中没有 Go 的 bin 目录,你需要添加它。

export PATH=$PATH:$(go env GOPATH)/bin

或者,您可以通过以下方式在 macOS/Linux 上安装: brew :

brew install tfk8s

在 macOS 上,您也可以通过 MacPorts 安装:

sudo port install tfk8s

用法

Usage of tfk8s:
  -f, --file string         Input file containing Kubernetes YAML manifests (default "-")
  -M, --map-only            Output only an HCL map structure
  -o, --output string       Output file to write Terraform config (default "-")
  -p, --provider provider   Provider alias to populate the provider attribute
  -s, --strip               Strip out server side fields - use if you are piping from kubectl get
  -Q, --strip-key-quotes    Strip out quotes from HCL map keys unless they are required.
  -V, --version             Show tool version

示例

从 YAML 文件创建 Terraform 配置文件

tfk8s -f input.yaml -o output.tf

或者,使用管道:

cat input.yaml | tfk8s > output.tf

输入.yaml:

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

✨✨ 神奇地变成了 ✨✨

output.tf:

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

与 kubectl 结合使用以输出地图而不是 YAML

kubectl get ns default -o yaml | tfk8s -M

好的,请给我文本内容,我会尽力将它翻译成通俗、专业、优雅且流畅的中文,并保持原始的 Markdown 格式。

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

将 Helm 图表转换为 Terraform

您可以使用 helm template 从图表生成清单,然后将其管道传递给 tfk8s:

helm template ./chart-path -f values.yaml | tfk8s

将清单目录树转换为 Terraform

您可以使用 tfk8sfind 结合,递归地转换整个目录:

find dirname/ -name '*.yaml' -type f -exec sh -c 'tfk8s -f {} -o $(echo {} | sed "s/\.[^.]*$//").tf' \;

好的,请提供您要翻译的文本。我会尽力将它翻译成通俗、专业、优雅且流畅的中文,并保持原始的 Markdown 格式。

项目介绍

一款将Kubernetes YAML清单转换为Terraform HCL的工具【此简介由AI生成】

定制我的领域
51.06 K64访问 GitHub