代码之家  ›  专栏  ›  技术社区  ›  radicaled

从terraform运行kubernetes构建

  •  6
  • radicaled  · 技术社区  · 7 年前

    我正在尝试做一个简单的测试,从terraform在kubernetes上构建一个简单的nginx。

    这是基本地形文件:

    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:服务器要求客户端提供凭据(post pod)

    Terraform在遇到错误时不会自动回滚。 相反,您的地形状态文件已使用任何 已成功完成的资源。请解决上面的错误 并再次应用以增量方式更改您的基础结构。

    我做错了什么?

    关于@matthew-l-daniel问题

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

    错误:应用计划时出错:

    发生1个错误:

    相反,您的地形状态文件已使用任何 已成功完成的资源。请解决上面的错误 并再次应用以增量方式更改您的基础结构。

    我忘了提到这是一个openshift安装。我不相信它最终会有任何影响,但我想我应该提一下。

    2 回复  |  直到 7 年前
        1
  •  1
  •   radicaled    7 年前

    解决方案相当简单,我使用terraform上openshift的主crt和键。 然后,我使用管理crt和openshift的键对其进行了测试,结果证明它是有效的。

        2
  •  0
  •   James G    7 年前

    official kubernetes provider documentation 仅建议证书 基本(用户/通行证)应该是必需的,这听起来像是OpenShift问题。您是否能够从OpenShift集群获取任何日志?

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

    准备好的 ,Terraform只是呈现从OpenShift传回的底层错误。

    Kubernetes GitHub ,建议调查加载到集群的证书颁发机构。