when i add CONTROLLER_INGRESS_CLASS = kong-internal as env of ingress-control
and then i add “ kong-internal” as annotaion of Kongingress , I found it do affect on the route (if i do not add the annotation i will never affect on route ), but i also found that the kind of kongPlugin exception ,mean that ,it will also affect on plugin if i donot add the annotation to the kongplugin e.g:
kind: KongPlugin
name: echo-rate-limiting
second: 10
minute: 11
plugin: rate-limiting

so ,whether this annotaion just affect on kongingress and ingress?
For KongPlugin will be detected by kong-ingress-control no matter whether “ kong-internal” added

tl;dr what does and does not require the ingress.class annotation isn’t properly defined or implemented correctly yet. We’re working to fix that, but for the time being, adding it to any resource (including KongPlugins and other non-Ingress resources) may help to work around some of the known bugs.

We recognize that the way we use the ingress.class annotation is a point of confusion and that the existing behavior is less than ideal; we’re working on revamping that to try and make it more coherent:

Currently, the ingress.class can be used on virtually all resources that the controller interacts with, and if you use a custom class (your kong-internal), it expects that resources will have that annotation even when they shouldn’t strictly need it. That’s part of what we’re working to address in that PR, to better delineate when ingress.class is required and to handle its absence when it isn’t.

If you’re having trouble, adding appropriate ingress.class annotations to resources should never hurt them, even if they aren’t actually Ingresses: KongPlugin in particular has known issues around updates not being honored if a KongPlugin resource has no ingress.class annotation, though it shouldn’t require them, and actually won’t in upcoming releases.