从Terraform运行Kubernetes构建

时间:2018-11-24 02:04:12

标签: kubernetes terraform

我正在尝试进行一个简单的测试,以从terraform的kubernetes上构建一个简单的nginx。 这是第一次使用地形。

这是基本的Terraform文件:

provider "kubernetes" {
  host = "https://xxx.xxx.xxx.xxx:8443"

  client_certificate     = "${file("~/.kube/master.server.crt")}"
  client_key             = "${file("~/.kube/master.server.key")}"
  cluster_ca_certificate = "${file("~/.kube/ca.crt")}"

  username = "xxxxxx"
  password = "xxxxxx"

}

resource "kubernetes_service" "nginx" {
  metadata {
    name = "nginx-example"
  }
  spec {
    selector {
      App = "${kubernetes_pod.nginx.metadata.0.labels.App}"
    }
    port {
      port = 80
      target_port = 80
    }

    type = "LoadBalancer"
  }
}

resource "kubernetes_pod" "nginx" {
  metadata {
    name = "nginx-example"
    labels {
      App = "nginx"
    }
  }

  spec {
    container {
      image = "nginx:1.7.8"
      name  = "example"

      port {
        container_port = 80
      }
    }
  }
}

运行Terraform应用后出现以下错误。

  

错误:应用计划时出错:

     

发生1个错误:

     
      
  • kubernetes_pod.nginx:发生1个错误:

  •   
  • kubernetes_pod.nginx:服务器已要求客户端提供凭据(帖子窗格)

  •   
     

面对错误,Terraform不会自动回滚。   相反,您的Terraform状态文件已部分更新为   成功完成的资源。请解决以上错误   并再次应用以逐步更改您的基础架构。

我对kubernetes拥有管理员权限,并且一切正常。 但是由于某种原因,我遇到了这个错误。

我做错了什么?

谢谢

关于@ matthew-l-daniel问题

当我仅使用用户名/密码时,出现此错误:

  

错误:应用计划时出错:

     

发生1个错误:

           

面对错误,Terraform不会自动回滚。   相反,您的Terraform状态文件已部分更新为   成功完成的资源。请解决以上错误   并再次应用以逐步更改您的基础架构。

我尝试使用服务器名称或服务器ip,每次都遇到相同的错误。

使用证书时,我从原始帖子中得到了关于“凭证”的错误

我忘了提到这是openshift安装。我认为最终不会产生任何影响,但是我想我应该提一下。

2 个答案:

答案 0 :(得分:1)

解决方案非常简单,我在terraform上使用了openshift的master crt和key。 然后我使用admin crt和openshift的密钥对其进行了测试,并且可以正常工作。

答案 1 :(得分:0)

除了official kubernetes provider documentation建议只需要证书基本(用户/密码)外,这听起来像是OpenShift问题。您是否能够从OpenShift集群获取任何日志?

某些搜索将您看到的消息链接到Kubernetes中的一些不稳定错误,其中重启后kubelet无法正确注册。在尝试进行部署之前,我将手动确认节点在OpenShift中显示为Ready,因为直到发生这种情况,Terraform将无法与其进行交互。

如果实际上节点不是Ready,则Terraform只是处理从OpenShift返回的基础错误。

另外,尝试使用纯证书参数进行身份验证时看到的错误表明配置错误。在Kubernetes GitHub上提出了类似的问题,并且建议调查加载到群集上的证书颁发机构。