云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

CDN_blood韩剧百度云_是什么

小七 141 0

使用HashiCorp Terraform的新Kubernetes提供程序部署任何资源

我们很高兴地宣布HashiCorp Terraform的Kubernetes提供者的新版本的alpha发布。kubernetesalpha提供程序允许您使用HashiCorp配置语言(HCL)打包、部署和管理所有kubernetes资源,包括自定义资源定义。通过添加kubernetesalpha提供程序,您现在可以使用Terraform管理kubernetes的整个生命周期及其工作负载。所有Kubernetes资源都可以通过这个新的提供者访问。除了完全覆盖当前的Kubernetes资源外,提供者还使用了一个名为serversideapply(SSA)的Kubernetes特性。SSA是kubernetes1.16中引入的一种新的合并算法。它将成为Kubernetes未来版本中的默认交互模型。在启用SSA的情况下,提供者遵从kubernetesapi来检测属性的差异,并处理Terraform规划和应用的冲突检测。现在为SSA属性分配了一个管理器,API跟踪更改了该属性的客户机。资源元数据中保存了更改日志,因此用户可以轻松确定哪些属性已被Terraform作为管理器修改。通过利用SSA,Terraform提供的用户体验更接近Kubernetes用户所熟悉的以及kubectl等本地工具的期望。»使用此提供程序是实验性的,暂时无法从Terraform提供程序注册表安装它。要试用此提供程序,您需要从github存储库下载最新版本。请下载源代码以及适合您的体系结构的二进制文件。我们将假设已经安装了Go,并且$GOPATH和$GOBIN变量被适当填充。我们还假设您可以使用Kubernetes测试环境。请确保您选择的Kubernetes集群满足最低版本要求(1.17或更高版本)。本例将使用通过minikube或kind创建的集群。通过将提供程序二进制文件复制到Terraform插件文件夹来安装它。$cp terraform提供者kubernetes alpha~/.terraform.d/plugins/terraform-provider-kubernetes-alpha在本文中,我们将介绍存储库中可用的几个示例之一的用法。此示例将使用新提供程序中可用的kubernetes_清单资源安装自定义资源定义(CRD)。为了尝试这个例子,将目录切换到前面下载的kubernetesalpha源代码的"examples/crd"文件夹中。我们还将检查是否安装了Terraform的最新版本。$cd示例/crd$terraform版本在crd文件夹中,您应该看到一个文件-主.tf其内容如下:供应商"kubernetes alpha"{服务器端计划=真}资源"kubernetes_manifest""测试crd"{提供商=kubernetes alpha清单={apiVersion="apiextensions.k8s.io/v1"kind="客户资源定义"元数据={名称="testcrds.hashicorp.com网站"标签={app="测试"}}规格={组="hashicorp.com网站"名称={kind="测试CRD"复数="testcrd"}scope="命名空间"版本=[{name="v1"服务=正确存储=真架构={OpenAPIV3模式={type="对象"属性={数据={type="字符串"}参考文献={type="数字"}}}}}]}}}请注意,kubernetes_manifest资源包含provider属性和manifest属性,这是YAML清单的HCL表示。在下一节中,我们将介绍如何简化将YAML清单转换为该资源所需的HCL输入的过程。为了演示提供者的行为,我们假设您已经设置了Kubernetes测试环境,并且kubeconfig配置为使用该环境。您将使用Terraform将示例CRD应用于Kubernetes集群,并确保Terraform是用alpha提供者初始化的。首先,初始化Terraform并检查当前安装了哪些crd。$terraform初始化$kubectl获取CRD然后,在主.tf在群集中创建测试CRD的文件。与kubectl的快速检查表明CRD已成功应用。$地形平面图=crds.tf计划$terraform应用crds.tf计划$kubectl获取CRD最后,通过Terraform摧毁CRD进行清理。随后进行最终检查,以确保CRD已正确移除。$地形破坏$kubectl获取CRD此屏幕广播演示了所描述的步骤和结果输出。正如这个和kubernetesalpha存储库中的其他示例所示,新的kubernetesalpha提供者可以通过将YAML清单转换为HCL表示来将任何资源部署到kubernetes集群。我们很高兴这家供应商带来的可能性,我们期待听到您的反馈。»将YAML转化为HCL我们建议您将YAML清单转换为静态HCL,以利用Terraform将值插入资源属性的能力。有几个选项可供您自动执行此转换。1地形内置功能您可以使用Terraform中提供的内置yamldecode()函数以及YAML清单文件的路径来一次性转换到HCL。$echo'yamlcode(文件("我的清单-文件.yaml")")地形控制台注意,这个方法要求每个清单只有一个YAML文档。2外部设施或者,您可以使用一个实验性的实用程序,它允许您将YAML清单作为命令行输入传递并生成结果HCL。对于包含多个文档的YAML清单,我们建议在Terraform配置中为每个文档创建唯一的kubernetes_清单资源。一般来说,我们建议将此过程作为一次性转换步骤,然后直接在Terraform中管理HCL资源。»用例Kubernetes资源的干运行变化,并用地形图对其进行评估使用Terraform部署Kubernetes自定义资源和自定义资源定义打包并分发多个Kubernetes资源,比如Kubernetes操作符,作为Terraform模块»当前限制此提供程序是实验性的。它依赖于terraformv0.12中引入的新特性,例如用于资源属性的富类型系统。当我们在Terraform中使用这些新特性时,我们希望在Kubernetes提供程序中构建尽可能最好的用户体验。然而,这是我们第一次这样做,我们希望用户意识到它仍然是一个移动的目标。我们要求您试用此提供程序并向我们提供反馈,但请记住,此提供程序尚未为生产工作负载做好准备。在这个阶段,提供者实现和用户体验的完全重写仍然在范围之内。下面列出了我们目前正在调查的有关此提供程序已知限制的一些详细信息。仅支持Kubernetes 1.17及更高版本提供程序使用了kubernetes1.16中引入的服务器端apply特性,但在该版本中不稳定。建议的最低版本是1.17。使用本地规划时的一些限制如果更新产生在资源创建时不存在的其他资源属性,则更新可能无法按预期工作。使用服务器端计划时的一些限制当Kubernetes资源正在从另一个Kubernetes资源获取其任何属性值时,该资源在当前操作之前不在集群中。»结论有关新Kubernetes提供程序的更多信息,请参阅Github存储库。要发现使用Terraform管理Kubernetes的其他方法,请查看我们的HashiCorp Learn指南。我们很乐意听到您的反馈意见,并扩大这个项目!通过在hashicorp/terraform提供程序kubernetesalpha上打开一个问题,发布关于kubernetesalpha提供程序的bug和特性请求!