【问题标题】:using terraform with helm on minikube gives error在 minikube 上使用带有 helm 的 terraform 会出错
【发布时间】:2021-09-10 09:13:09
【问题描述】:

我有以下 .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" "local" {

【问题讨论】:

标签: terraform kubernetes-helm minikube


【解决方案1】:

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

第 2 步:可以使用其命名空间和名称导入 Helm Release 资源 例如terraform import helm_release.example default/example-name 由于 helm 不会将 repository 属性作为元数据继续,因此默认情况下不会将其设置为任何值。所有其他提供程序特定的属性都将设置为其默认值,并且可以在使用资源定义配置运行 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

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 2021-09-10
    • 2019-11-13
    • 2019-08-24
    • 2020-09-18
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多