使用 terraform 部署 kubernetes ingress

Mih*_*dov 1 kubernetes terraform

我正在尝试使用 terraform 部署 kubernetes ingress。\n如此处所述链接和我自己的变体:

\n
resource "kubernetes_ingress" "node" {\n  metadata {\n    name = "node"\n  }\n  spec {\n    ingress_class_name = "nginx"\n    rule {\n      host = "backend.io"\n      http {\n        path {\n          path = "/"\n          backend {\n            service_name = kubernetes_service.node.metadata.0.name\n            service_port = 3000\n          }\n        }\n      }\n    }\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

错误:

\n
\xe2\x95\xb7\n\xe2\x94\x82 Error: Failed to create Ingress \'default/node\' because: the server could not find the requested resource (post ingresses.extensions)\n\xe2\x94\x82 \n\xe2\x94\x82   with kubernetes_ingress.node,\n\xe2\x94\x82   on node.tf line 86, in resource "kubernetes_ingress" "node":\n\xe2\x94\x82   86: resource "kubernetes_ingress" "node" {\n\xe2\x94\x82 \n\xe2\x95\xb5\n
Run Code Online (Sandbox Code Playgroud)\n

有用:

\n

kubectl apply -f file_below.yaml

\n
apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: node\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: backend.io\n    http:\n      paths:\n      - path: /\n        pathType: ImplementationSpecific\n        backend:\n            service:\n              name: node\n              port:\n               number: 3000\n
Run Code Online (Sandbox Code Playgroud)\n

需要一些关于如何使用 terraform 部署 kubernetes ingress 的想法。

\n

Mar*_*o E 6

这里的问题是,YML 中的示例使用了正确的 API 版本,即 ,networking.k8s.io/v1因此它可以工作,因为您可能拥有高于 1.19 的 K8s 版本。从该版本开始它就可用了,extensions/v1beta1Ingress 是其一部分,networking.k8s.io/v1在 1.22 中已被弃用,您可以在此处阅读。在这种情况下,您当前的 Terraform 代码正在使用旧的 K8s API 版本进行 Ingress。您可以在文档菜单的左侧看到:

扩展 v1beta1

如果您进一步查看文档,您将在资源部分networking/v1中看到和。更改 Terraform 中的代码以使用 Ingress 中的代码,它变为: kubernetes_ingress_v1networking.k8s.io/v1

resource "kubernetes_ingress_v1" "node" {
  metadata {
    name = "node"
  }

  spec {
    ingress_class_name = "nginx"
    rule {
      host = "backend.io"
      http {
        path {
          path = "/*"
          path_type = "ImplementationSpecific"
          backend {
            service {
              name = kubernetes_service.node.metadata.0.name
              port {
                number = 3000
              }
            }
          }
        }
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)