user1747547
user1747547

Reputation: 91

kubernetes_ingress kubernetes v2.6.1 - Failed to create Ingress

I try to create an ingress resource over terraform. I receive the following error message

Error: Failed to create Ingress 'jenkins/jenkins-ingress' because: the server could not find the requested resource (post ingresses.extensions) │ │ with kubernetes_ingress.jenkins-ingress, │ on main.tf line 160, in resource "kubernetes_ingress" "jenkins-ingress": │ 160: resource "kubernetes_ingress" "jenkins-ingress" {

My terraform resource looks like this:

resource "kubernetes_ingress" "jenkins-ingress" {
    metadata {
        name = "${var.name}-ingress"
        namespace = var.namespace
        annotations = {
            "ingress.kubernetes.io/rewrite-target" = "/"
            "kubernetes.io/ingress.class" = "nginx"
        }
    }
    spec {
        rule {
            host = "domain.com"
            http {
                path {
                    path = "/"
                    backend {
                        service_name = var.name
                        service_port = 8080
                    }
                }
            }
        }
   }
}

If I create the ingress over a yaml it works:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: jenkins-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: domain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: jenkins
            port:
              number: 8080

What strikes me is the difference between rule (see kubernetes_ingress) and rules in the terraform script and in the yaml. Ideas?

Upvotes: 0

Views: 1504

Answers (1)

Sjouke
Sjouke

Reputation: 329

I was getting the same error.

Try using kubernetes_ingress_v1 instead of kubernetes_ingress which uses networking.k8s.io/v1 instead of networking.k8s.io/v1beta1.

Upvotes: 2

Related Questions