使用 Istio 模块销毁 Terraform

Posted

技术标签:

【中文标题】使用 Istio 模块销毁 Terraform【英文标题】:Terraform Destroy with Istio module 【发布时间】:2021-12-03 17:32:53 【问题描述】:

我们在一个实现 Istio 模块的项目中使用 Terraform。 每当我们运行 terraform destroy 命令时,Istio 模块都会运行 rm -rf 命令。

这在 Mac 机器上运行良好,在 Windows 机器上这会导致错误。

作为参考,该命令在 istio 模块内部调用,在我们的代码库之外。

module "istio" 
  source  = "combinator-ml/istio/k8s"

有人遇到这个问题并有解决方法吗?

【问题讨论】:

您可以将此作为错误提交给模块的问题跟踪器。如果该模块未维护,那么您可以分叉它并在那里开发修复程序。 您提到:“在 Windows 机器上,这会导致错误”。哪些错误?请将此信息添加到问题中。 rm 在 windows 机器上根本不存在,但我们在联系开发人员后找到了解决方法 请粘贴您的解决方法作为答案。 我们选择在我们的 Windows 机器上使用 bash 终端来运行我们的 terraform 命令,例如,即使是 git bash 终端也可以工作 【参考方案1】:

istio 模块运行 rm -rf 命令。 这在 Mac 机器上运行良好,在 windows 机器上这会导致错误。

这按预期工作。 macOS 是基于 UNIX 的系统,rm -rf 命令有效。 Windows (powershell) 没有这个命令。

PowerShell 上正确的等效命令是:

rm C:\path\to\delete -r -fo

看看this question。这种情况有一个很好的解释。

回到你的问题。如果您使用的是 Windows (Powershell),则需要创建自定义解决方案(Powershell 脚本)以使用 Powershell 命令删除相应的文件。

【讨论】:

【参考方案2】:

我们最终在 Windows 机器上使用 git bash 作为解决方法

【讨论】:

以上是关于使用 Istio 模块销毁 Terraform的主要内容,如果未能解决你的问题,请参考以下文章

容器云技术:容器化微服务,Istio占C位出道

如何销毁由 terraform transit-gateway 模块创建的附加 tgw 路由表

在模块加载/卸载时在外部 C++ 模块中构造/销毁对象

Service Mesh vs SideCar

在 Openmp (C++) 中销毁线程

istio-ingress-gateway