首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform Kubernetes provisioner "local-exec“kubectl在Windows上应用-f -<<EOF

Terraform Kubernetes provisioner "local-exec“kubectl在Windows上应用-f -<<EOF
EN

Stack Overflow用户
提问于 2020-07-03 12:55:14
回答 2查看 4.6K关注 0票数 3

我试图通过Terrraform`s的.yaml创建/应用这个kubectl文件https://github.com/Azure/aad-pod-identity/blob/master/deploy/infra/deployment.yaml到AKS,以安装Azure AD标识。它需要部署Azure网关入口控制器。与VS代码一起使用Windows 10

main.tf:

代码语言:javascript
复制
data "template_file" "aad_pod" {
  template = "${file("${path.module}/templates/aad_pod.yaml")}"
}

resource "null_resource" "aad_pod_deploy" {
  triggers = {
    manifest_sha1 = "${sha1("${data.template_file.aad_pod.rendered}")}"
  }

  provisioner "local-exec" {
    command = "kubectl apply -f -<<EOF\n${data.template_file.aad_pod.rendered}\nEOF"
  }
}

在terraform应用之后,我有以下错误:

代码语言:javascript
复制
Error: Error running command 'kubectl apply -f -<<EOF
'cutted listing of yaml file'
EOF': exit status 1. Output: << was unexpected at this time.

如有任何帮助,将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-07-06 19:41:21

由于类Unix操作系统与Windows之间的差异,除非用例非常简单,否则很少可能以可移植的方式使用local-exec。这是供给者是最后的手段的原因之一。

我认为最便携的答案是使用官方的Kubernetes供应商与库伯奈特进行交互。或者,如果使用kubectl的输入格式对您所做的工作特别重要,则可以使用提供程序

代码语言:javascript
复制
resource "kubectl_manifest" "example" {
  yaml_body = data.template_file.aad_pod.rendered
}

如果您有充分的理由使用local-exec提供程序而不是本机Terraform提供程序,那么您需要找到一种方法来编写一个命令,该命令可以由Unix样式的shell和Windows的命令行约定以兼容的方式解释。我希望先将文件写入磁盘并将文件名传递给kubectl,这样会更容易实现这一点,因为这避免了使用shell的任何特殊特性的需要,并允许由kubectl本身处理所有内容:

代码语言:javascript
复制
resource "local_file" "aad_pod_deploy" {
  filename = "${path.module}/aad_pod.yaml"
  content  = data.template_file.aad_pod.rendered

  provisioner "local-exec" {
    command = "kubectl apply -f ${self.filename}"
  }
}

这种方法仍有一些需要注意的注意事项。例如,如果您在包含空格的目录路径下运行Terraform,那么self.filename将包含空格,因此可能不会按您的需要由Unix或kubectl Windows可执行文件进行解析。

票数 7
EN

Stack Overflow用户

发布于 2020-07-07 12:54:41

谢谢你的评论。我找到了解决办法。我正在使用地形中的helm_release资源。只需用必要的模板创建您的舵图,并将其与helm_release一起使用。我为AAD的身份做了一个头盔图,这就是我的工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62715905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档