A tool for converting Kubernetes YAML manifests to Terraform HCL
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 3 年前 | ||
| 6 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 6 年前 | ||
| 3 年前 | ||
| 6 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 3 年前 |
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈

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
您可以使用 tfk8s 与 find 结合,递归地转换整个目录:
find dirname/ -name '*.yaml' -type f -exec sh -c 'tfk8s -f {} -o $(echo {} | sed "s/\.[^.]*$//").tf' \;
好的,请提供您要翻译的文本。我会尽力将它翻译成通俗、专业、优雅且流畅的中文,并保持原始的 Markdown 格式。