【问题标题】:Terraform and Helm3: Error: Kubernetes cluster unreachableTerraform 和 Helm3:错误:Kubernetes 集群无法访问
【发布时间】:2020-06-19 11:21:51
【问题描述】:

所以,我正在尝试将带有 helm3 的图表安装到 kubernetes 集群(EKS)。 我在下面有一个 terraform 配置。实际集群处于活动状态且可见

variable "aws_access_key" {}
variable "aws_secret_key" {}

locals {
  cluster_name = "some-my-cluster"
}

provider "aws" {
  region = "eu-central-1"
  access_key = var.aws_access_key
  secret_key = var.aws_secret_key
}


data "aws_eks_cluster" "cluster" {
  name = local.cluster_name
}

data "aws_eks_cluster_auth" "cluster" {
  name = data.aws_eks_cluster.cluster.name
}

output "endpoint" {
  value = data.aws_eks_cluster.cluster.endpoint
}

output "kubeconfig-certificate-authority-data" {
  value = data.aws_eks_cluster.cluster.certificate_authority.0.data
}

output "identity-oidc-issuer" {
  value = "${data.aws_eks_cluster.cluster.identity.0.oidc.0.issuer}"
}

provider "kubernetes" {
  version                = "~>1.10.0"
  host                   = data.aws_eks_cluster.cluster.endpoint
  cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
  token                  = data.aws_eks_cluster_auth.cluster.token
  load_config_file       = false
}

provider "helm" {
  version                = "~>1.0.0"
  debug = true
  alias = "my_helm"

  kubernetes {
    host = data.aws_eks_cluster.cluster.endpoint
    token = data.aws_eks_cluster_auth.cluster.token
    cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
    load_config_file = false
  }
}

data "helm_repository" "stable" {
  name = "stable"
  url  = "https://kubernetes-charts.storage.googleapis.com"
}

resource "helm_release" "mydatabase" {
  provider  = helm.my_helm
  name  = "mydatabase"
  chart = "stable/mariadb"
  namespace = "default"

  set {
    name  = "mariadbUser"
    value = "foo"
  }

  set {
    name  = "mariadbPassword"
    value = "qux"
  }
}

当我运行terraform apply 时,我看到error: Error: Kubernetes cluster unreachable

有什么想法吗?还将感谢一些如何调试问题的想法 - 调试选项不起作用。

可以确认它适用于新创建的cluster

【问题讨论】:

  • 你找到解决办法了吗?
  • 我没有。我刚刚重新创建了集群,它可以工作。你可以试试这个配置github.com/kharandziuk/eks-getting-started-helm3 所以,这可能是政策或类似的问题。我建议你自己运行 helm,甚至尝试为 k8s 手动创建模板。它会给你一个调试问题的机会
  • 在 AWS 上删除 terraform state S3 存储桶解决了我的问题。我有类似的问题和相同的错误消息:stackoverflow.com/questions/66427129/…
  • 事实上,我可以通过terraform refresh 解决这个问题,我猜想在某个地方缓存了一个过期的令牌,没有正确刷新。

标签: kubernetes kubernetes-helm amazon-eks


【解决方案1】:

这个问题的解决方案与 kubectl 提供者有关。我能找到的唯一解决方法是将令牌请求替换为我在下面放置的请求

provider "kubernetes" {
    version                = "~>1.10.0"
    host                   = data.aws_eks_cluster.cluster.endpoint
    cluster_ca_certificate = base64decode(data.aws_eks_cluster.cluster.certificate_authority.0.data)
    exec {
        api_version = "client.authentication.k8s.io/v1alpha1"
        args        = ["eks", "get-token", "--cluster-name", data.aws_eks_cluster.cluster.name]
        command     = "aws"
     }
     load_config_file       = false
}

【讨论】:

    猜你喜欢
    • 2021-05-31
    • 1970-01-01
    • 2023-03-09
    • 2020-09-14
    • 2022-01-26
    • 2020-09-10
    • 2019-01-26
    • 1970-01-01
    • 2022-08-12
    相关资源
    最近更新 更多