Mih*_*dov 1 kubernetes terraform
我正在尝试使用 terraform 部署 kubernetes ingress。\n如此处所述链接和我自己的变体:
\nresource "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}\nRun 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\nRun Code Online (Sandbox Code Playgroud)\n有用:
\nkubectl apply -f file_below.yaml
\napiVersion: 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\nRun Code Online (Sandbox Code Playgroud)\n需要一些关于如何使用 terraform 部署 kubernetes ingress 的想法。
\n这里的问题是,YML 中的示例使用了正确的 API 版本,即 ,networking.k8s.io/v1因此它可以工作,因为您可能拥有高于 1.19 的 K8s 版本。从该版本开始它就可用了,extensions/v1beta1Ingress 是其一部分,networking.k8s.io/v1在 1.22 中已被弃用,您可以在此处阅读。在这种情况下,您当前的 Terraform 代码正在使用旧的 K8s API 版本进行 Ingress。您可以在文档菜单的左侧看到:
如果您进一步查看文档,您将在资源部分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)
| 归档时间: |
|
| 查看次数: |
3499 次 |
| 最近记录: |