【发布时间】:2019-04-26 12:46:47
【问题描述】:
我正在尝试进行一个简单的测试,以在 terraform 的 kubernetes 上构建一个简单的 nginx。 这是第一次使用 terraform。
这是基本的 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 apply 后出现以下错误。
错误:应用计划时出错:
发生了 1 个错误:
kubernetes_pod.nginx:发生 1 个错误:
kubernetes_pod.nginx:服务器已要求客户端提供凭据(发布 pod)
Terraform 在遇到错误时不会自动回滚。 相反,您的 Terraform 状态文件已部分更新为任何 成功完成的资源。请解决上面的错误 并再次申请以逐步更改您的基础架构。
我拥有 kubernetes 的管理员权限,并且一切正常。 但由于某种原因,我收到了这个错误。
我做错了什么?
谢谢
关于@matthew-l-daniel 的问题
当我只使用用户名/密码时,我收到此错误:
错误:应用计划时出错:
发生了 1 个错误:
kubernetes_pod.nginx:发生 1 个错误:
kubernetes_pod.nginx:发布https://xxx.xxx.xxx.xxx:8443/api/v1/namespaces/default/pods: x509: 未知权威签署的证书
Terraform 在遇到错误时不会自动回滚。 相反,您的 Terraform 状态文件已部分更新为任何 成功完成的资源。请解决上面的错误 并再次申请以逐步更改您的基础架构。
我尝试使用服务器名称或服务器 ip 并且每次都得到相同的错误。
使用证书时,我从原始帖子中收到了关于“凭据”的错误
我忘了说这是一个 openshift 安装。我不相信它最终会产生任何影响,但我认为我应该提及它。
【问题讨论】:
-
同时拥有 TLS 身份验证和 HTTP 基本“用户名”和“密码”非常非常奇怪;您是否为您的集群配置了任何此类身份验证,您希望用户名+密码可以执行某些操作?
-
为什么不用
helm-charts来部署nginx呢?似乎比terraform容易得多?
标签: kubernetes terraform