您可以在Terraform中使用YAML定义Kubernetes Services/Pods吗?
我使用Kubernetes Provider来描述Terraform中的服务/窗格。您可以在Terraform中使用YAML定义Kubernetes Services/Pods吗?
它可以得到使用Hashicorp配置语言来定义kubernetes_pod或kubernetes_service资源,因为Kubernetes文档描述了YAML的一切,它意味着你需要把它翻译成HCL混淆。
是否可以将pod定义为YAML并将它们与kubernetes_pod
和kubernetes_service
资源一起用作模板?
虽然Terraform通常使用HCL,但这是JSON的超集(与YAML本身非常相似),因此can also read JSON。
一个可能的选择是将您已经拥有的YAML示例转换为JSON,然后在这些示例上使用Terraform。
不幸的是,这不太可能发挥作用,因为关键字可能与Terraform期待的事情有所不同,因此您需要编写一些内容来将输入YAML转换为Terraform资源JSON。此时,将HCL输出添加到转换中可能是值得的,因此如果您打算保持Terraform配置而不是仅仅一次转换并应用配置,则您输出的Terraform配置更具可读性。
做事这种方式是,你有一个可重复使用的Kubernetes配置,可以使用kubectl
或其他工具来运行,但给你Terraform的生命周期管理的能力,能够规划与非Kubernetes部分的变化和整合的好处的基础设施(例如设置实例来运行Kubernetes集群)。
我没有用它不多,但我相信Kops将让你保持POD /服务配置在典型Kubernetes YAML文件,但这时可利用Terraform来管理配置,甚至可以让你输出的Terraform配置,以便可以在Kops之外运行它。
欣赏响应。我假设没有办法做像'config = template(...)'那么...? –
不幸的不是。有一些资源支持类似的功能,包括最近添加了对使用swagger规范文件的支持的AWS API网关资源之一。因此,如果您认为它可能有用,则可能需要提出功能请求问题 – ydaetskcoR