这是我的第一个问题,所以可能有一些不清楚的地方。我会尽力提供所有信息。
我是 TerraForm 新手。我想使用 Grafana 和 Prometheus 监控我的资源。为此,我在系统上本地使用 Kubernetes (k3s)。我已经创建了 kubernetes 清单,当我使用手动部署时,使用 kubectl apply -f xyz.yml,资源已启动并运行良好。
现在我想使用 IAC,为此我正在使用 TerraForm。我想通过使用 TerraForm 获得相同的结果,但在这样做时遇到了一些错误。
这是我在初始化和计划之后使用“terraform apply -auto-approve”命令时遇到的错误:
错误:无法创建部署:服务器找不到请求的资源(部署后.apps)
with kubernetes_deployment.grafana, on grafana.tf line 1, in resource "kubernetes_deployment" "grafana": 1: resource "kubernetes_deployment" "grafana" {
错误:无法创建部署:服务器找不到请求的资源(部署后.apps)
with kubernetes_deployment.prometheus, on prometheus.tf line 1, in resource "kubernetes_deployment" "prometheus": 1: resource "kubernetes_deployment" "prometheus" {
这是我的提供商.tf:
terraform {
required_version = ">= 0.13"
required_providers {
kubernetes = {
source = "hashicorp/kubernetes"
version = ">= 2.0.0"
}
}
我将 .tf 中的资源定义为
resource "kubernetes_deployment" "grafana" {
metadata {
name = "grafana"
labels = {
app = "grafana"
}
}
spec {
replicas = 1
selector {
match_labels = {
app = "grafana"
}
}
...
我也尝试过与 gavinbunney 的 kubectl 提供程序相同的方法:
terraform {
required_version = ">= 0.13"
required_providers {
kubectl = {
source = "gavinbunney/kubectl"
version = ">= 1.14.0"
}
}
}
但没有运气。正在生成相同的错误。
我假设问题出在provider.tf中的某个地方。
您正在查看的有关 Terraform 和 Kubernetes 的网页的要点是:
provider.tf
配置,该配置指定所需的 Terraform 版本和 Kubernetes 提供程序。kubectl apply -f xyz.yml
的手动部署和使用Terraform的IAC部署,后者会导致错误。用户似乎怀疑问题可能出在
provider.tf
文件上,并正在寻求帮助来解决部署错误。
部署到 Kubernetes (k3s) 时使用 Terraform 遇到的“无法创建部署”错误可能是由于多种原因造成的。以下是一些可能的原因:
apiVersion
文件中指定的 .tf
与您的 k3s 集群支持的版本匹配。grafana.tf
和 prometheus.tf
文件中是否存在语法错误或缺少必填字段。provider.tf
中的提供程序配置是否正确,并且 Terraform 已通过 Kubernetes 集群正确进行身份验证。这些是常见问题,可能会导致您看到错误。查看 Terraform 和 Kubernetes 文档以了解任何其他故障排除步骤也是一个很好的做法。如果问题仍然存在,请考虑向 Terraform 社区寻求帮助或检查其他用户报告的类似问题。