Skip to content

Breaking change introduced: Gateway API CRD installation fails on Kubernetes v1.30 with CEL rule isIP (cloud-provider-kind fails to start) #381

@anshulkumar-tmf

Description

@anshulkumar-tmf

We are encountering a failure when running cloud-provider-kind on a Kind cluster using Kubernetes v1.30.0.

During startup, cloud-provider-kind attempts to install Gateway API CRDs from the standard channel. However, installation fails when creating the CRD:

tlsroutes.gateway.networking.k8s.io

The failure is caused by a CEL validation rule referencing isIP, which the Kubernetes API server rejects.

As a result:
• cloud-provider-kind exits during startup
• the LoadBalancer controller never starts
• LoadBalancer services in the cluster never receive an external IP

This effectively breaks CI environments that rely on cloud-provider-kind to provide LoadBalancer functionality in Kind clusters.

Error Logs

`Failed to install Gateway API CRDs

error processing embedded CRDs from crds/standard: failed to create CRD "tlsroutes.gateway.networking.k8s.io"

CustomResourceDefinition.apiextensions.k8s.io "tlsroutes.gateway.networking.k8s.io" is invalid:

spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[hostnames].x-kubernetes-validations[0].rule:
Invalid value: apiextensions.ValidationRule{Rule:"self.all(h, !isIP(h))"}

compilation failed: ERROR: :1:18: undeclared reference to 'isIP'
| self.all(h, !isIP(h))
| .................^`

After this error:

Failed to start cloud controller Unable to sync caches Shutting down service controller

Environment

Kind cluster:
kind v0.xx.x
node image: kindest/node:v1.30.0

Kubernetes:
Client Version: v1.30.0
Server Version: v1.30.0

cloud-provider-kind:
built from repository (main branch)

Workaround

Running cloud-provider-kind with Gateway API disabled works:
bin/cloud-provider-kind --gateway-channel=disabled

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions