我正在尝试进行一个简单的测试,以从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个错误:
kubernetes_pod.nginx:发生1个错误:
kubernetes_pod.nginx:发表https://xxx.xxx.xxx.xxx:8443/api/v1/namespaces/default/pods: x509:证书由未知授权机构签名
面对错误,Terraform不会自动回滚。 相反,您的Terraform状态文件已部分更新为 成功完成的资源。请解决以上错误 并再次应用以逐步更改您的基础架构。
我尝试使用服务器名称或服务器ip,每次都遇到相同的错误。
使用证书时,我从原始帖子中得到了关于“凭证”的错误
我忘了提到这是openshift安装。我认为最终不会产生任何影响,但是我想我应该提一下。
答案 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上提出了类似的问题,并且建议调查加载到群集上的证书颁发机构。