在 minikube 上使用带掌舵的 terraform 会出错

时间:2021-06-28 02:54:06

标签: terraform kubernetes-helm minikube

我有以下 .tf 文件

provider "kubernetes" {
  config_context_cluster = "minikube"
}

resource "kubernetes_namespace" "user-namespace" {
   metadata {
     name = "user-namespace"
   }
}

provider "helm" {
  kubernetes {
    config_context_cluster = "minikube"
  }
}

resource "helm_release" "local" {
  name  = "user-server-chart"
  chart = "./user-server"
}

运行 terraform apply 时出现以下错误

kubernetes_namespace.brw-user-namespace:正在创建... helm_release.local:正在创建...

错误代码解释:501 = 服务器不支持此操作。\n") 已阻止请求成功(发布命名空​​间) │ │ 与 kubernetes_namespace.user-namespace, │ 在 main.tf 第 5 行,在资源“kubernetes_namespace”“user-namespace”中: │ 5: 资源 "kubernetes_namespace" "user-namespace" { │ ╵

Kubernetes 集群无法访问:无效配置:未提供任何配置,请尝试设置 KUBERNETES_MASTER 环境变量 │ │ 与 helm_release.local, │ 在 main.tf 第 17 行,在资源“helm_release”“local”中: │ 17:资源“helm_release”“本地”{

1 个答案:

答案 0 :(得分:0)

第 1 步:kubeconfig 没有正确的上下文,并在您的 ~/.bashrc 文件中添加一行 kubeconfig kubectl config set-context ~/.kube/kubeconfig1.yml kubectl config use-context ~/.kube/kubeconfig1.yml导出 KUBECONFIG=~/.kube/.yml

第 2 步:可以使用其命名空间和名称导入 Helm Release 资源 例如terraform import helm_release.example default/example-name 由于存储库属性不会被 helm 继续作为元数据,因此默认情况下不会将其设置为任何值。所有其他提供者特定属性将设置为其默认值,并且可以在使用资源定义配置运行 apply 后覆盖它们。

您可以参考文档 [1] [2] 了解更多信息。 [1] https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release [2] https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs