Kong Operator: Como Funciona, Recursos e Diagrama de Dependências

O Kong Operator (KO) é a forma nativa em Kubernetes de implantar e gerenciar o Kong. Ele permite configurar o Kong Gateway de forma declarativa usando a Gateway API ou CRDs específicos do Kong (Konnect). Este artigo resume o funcionamento do operator, lista os recursos que podem ser criados (a partir de kubectl api-resources e kubectl api-versions) e traz um diagrama de dependências entre os objetos.


O que é o Kong Operator?

O Kong Operator é um operator Kubernetes que:

  • Implanta e gerencia instâncias do Kong Gateway (DataPlane) no cluster.
  • Reconcilia recursos da Gateway API (como Gateway, HTTPRoute) e CRDs do Kong, gerando configuração no Kong.
  • Suporta Konnect (control plane em nuvem) e modo standalone (tudo no cluster).
  • Oferece managed gateways: ao criar um Gateway, o operator cria automaticamente um ControlPlane e um DataPlane para esse Gateway.

Referência: Kong Operator – Documentação oficial.


Como funciona: Managed Gateways

O Kong Operator trata o recurso Gateway (Gateway API) de forma diferente do Kong Ingress Controller. Essa abordagem é chamada de managed gateways (Managed Gateways).

  1. Você cria um Gateway (recurso da Gateway API) que referencia um GatewayClass implementado pelo Kong.
  2. O operator detecta o novo Gateway e cria automaticamente:
    • ControlPlane: uma instância em memória do Kong Ingress Controller que reconcilia apenas esse Gateway.
    • DataPlane: um deployment do Kong Gateway que recebe o tráfego.
  3. Cada ControlPlane reconcilia exatamente um Gateway.
  4. Configuração dinâmica: o operator ajusta o DataPlane com base nos listeners do Gateway. Por exemplo:
    • Gateway com listener HTTP na porta 80 → o serviço de ingress do DataPlane expõe só a porta 80.
    • Se você adicionar um listener HTTPS na 443, o operator atualiza o DataPlane para expor também a 443.

Ou seja: você declara listeners no Gateway, e o Kong Operator cuida de criar e configurar ControlPlane + DataPlane de acordo.


Fluxo de reconciliação (resumo)

  • Gateway (usuário) → referência a GatewayClass (Kong).
  • Kong Operator observa Gateway e cria ControlPlane + DataPlane.
  • ControlPlane lê Gateway API (HTTPRoute, GRPCRoute, etc.) e CRDs Kong (KongPlugin, KongConsumer, etc.) e sincroniza a configuração para o DataPlane (Kong Admin API / declaração em DB).
  • DataPlane (Kong Gateway) recebe o tráfego e aplica rotas, plugins e políticas.

Para Konnect, o operator ainda sincroniza entidades (consumers, plugins, etc.) com o control plane na nuvem. Detalhes: Reconciliation loop.


Documentação oficial relevante

TópicoLink
Kong Operator (visão geral)developer.konghq.com/operator
Índice da documentação do Operatordocs.konghq.com – Operator
Managed GatewaysManaged Gateways
Gateway ConfigurationGateway configuration
CRDs (referência)Custom resource definitions
Reconciliation loop (Konnect)Reconciliation loop
Instalação via Gateway APIInstall – Gateway API
Instalação via Konnect CRDsInstall – Konnect CRDs

Recursos disponíveis (kubectl api-resources e api-versions)

Os recursos abaixo foram obtidos com kubectl api-resources e kubectl api-versions em um cluster com Kong Operator instalado. Eles estão agrupados por API group e incluem a função de cada recurso.

Versões da API do Kong Operator

1
2
3
gateway-operator.konghq.com/v1alpha1
gateway-operator.konghq.com/v1beta1
gateway-operator.konghq.com/v2beta1

gateway-operator.konghq.com (Kong Operator – core)

RecursoNome curtoAPI VersionEscopoFunção
ControlPlanekocpv2beta1namespacedInstância do Kong Ingress Controller que reconcilia um Gateway e envia configuração para o DataPlane. Criado automaticamente pelo operator quando um Gateway é criado.
DataPlanekodpv1beta1namespacedDeployment do Kong Gateway que recebe o tráfego. O operator cria e atualiza o DataPlane com base no Gateway (listeners, etc.).
GatewayConfigurationkogcv2beta1namespacedConfiguração compartilhada para DataPlane/ControlPlane (imagem, plugins, opções). Pode ser referenciada pelo Gateway para customizar o Kong.
DataPlaneMetricsExtensionv1alpha1namespacedExtensão de métricas do DataPlane. Anexada ao ControlPlane via spec.extensions; configura métricas no DataPlane e expõe métricas para autoscaling no Kubernetes.
KongPluginInstallationkpiv1alpha1namespacedInstala plugin Kong customizado (imagem de container). Pode ser associado a GatewayConfiguration ou DataPlane para disponibilizar o plugin e configurá-lo via KongPlugin.
WatchNamespaceGrantv1alpha1namespacedConcede a um namespace “confiável” permissão para observar recursos no namespace onde o grant está definido (útil para limitar quais namespaces o ControlPlane enxerga).
AIGatewayv1alpha1namespacedGateway especial para AI/LLM: cria e gerencia um Gateway + DataPlane + consumers e plugins (ai-proxy, ai-prompt-guard, etc.) para expor modelos (ex.: LLMs) via Kong.

gateway.networking.k8s.io (Gateway API – padrão Kubernetes)

RecursoNome curtoAPI VersionEscopoFunção
Gatewaygtwv1namespacedRecurso principal que representa um gateway de rede. Ao usar um GatewayClass do Kong, o Kong Operator cria ControlPlane + DataPlane para esse Gateway.
GatewayClassgcv1clusterDefine a “classe” do gateway (implementação). O Kong Operator registra um GatewayClass; Gateways que o referenciam são gerenciados pelo Kong.
HTTPRoutev1namespacedDefine rotas HTTP associadas a um Gateway (hostnames, paths, backends). O ControlPlane traduz para configuração Kong.
GRPCRoutev1namespacedDefine rotas gRPC associadas a um Gateway.
ReferenceGrantrefgrantv1beta1namespacedPermite referências cross-namespace (ex.: HTTPRoute no ns A referenciar Service no ns B). Necessário para backends em outros namespaces.
BackendTLSPolicybtlspolicyv1namespacedPolítica TLS para backends (ex.: certificados para comunicação com serviços upstream).

configuration.konghq.com (configuração Kong)

RecursoAPI VersionEscopoFunção
KongPluginv1namespacedDefine configuração de um plugin Kong. Pode ser anotado em Ingress/Service/HTTPRoute ou referenciado por KongPluginBinding.
KongClusterPluginv1clusterPlugin em escopo de cluster; pode ser global (label global). Diferença principal: cluster-scoped e uso como plugin global.
KongConsumerv1namespacedRepresenta um consumer no Kong (autenticação, ACL, etc.). Pode referenciar credenciais (Secrets).
KongConsumerGroupv1beta1namespacedAgrupa consumers; usado para políticas e plugins por grupo.
KongUpstreamPolicyv1beta1namespacedPolítica de upstream (load balancing, health checks) aplicável a serviços.
IngressClassParametersv1alpha1namespacedParâmetros da IngressClass (ex.: serviceUpstream, legacy regex).
KongCACertificatev1alpha1namespacedCertificado CA no Kong (ex.: para validação de client certificates ou upstreams).
KongCertificatev1alpha1namespacedCertificado TLS no Kong (ex.: para terminación TLS).
KongCredentialACLv1alpha1namespacedCredencial ACL associada a um consumer.
KongCredentialAPIKeyv1alpha1namespacedCredencial de API Key para um consumer.
KongCredentialBasicAuthv1alpha1namespacedCredencial Basic Auth para um consumer.
KongCredentialHMACv1alpha1namespacedCredencial HMAC para um consumer.
KongCredentialJWTv1alpha1namespacedCredencial JWT para um consumer.
KongPluginBindingv1alpha1namespacedAssocia um KongPlugin a uma entidade (Route, Service, Consumer, etc.).
KongReferenceGrantv1alpha1namespacedPermite referências cross-namespace em recursos Kong (ex.: Secret ou consumer em outro namespace).
KongRoutev1alpha1namespacedRota Kong nativa (JSON). Alternativa/complemento à HTTPRoute.
KongServicev1alpha1namespacedServiço Kong nativo.
KongUpstreamv1alpha1namespacedUpstream Kong (load balancing, health checks).
KongTargetv1alpha1namespacedTarget de um KongUpstream (instância backend).
KongSNIv1alpha1namespacedSNI associado a certificados no Kong.
KongVaultv1alpha1clusterVault para armazenar dados sensíveis referenciados por plugins.
KongLicensev1alpha1clusterLicença Enterprise do Kong; aplicada aos DataPlanes gerenciados.
KongKeySetv1alpha1namespacedConjunto de chaves (ex.: JWT).
KongKeyv1alpha1namespacedChave individual (ex.: JWT).
KongDataPlaneClientCertificatev1alpha1namespacedCertificado de cliente do DataPlane (ex.: para Konnect).
KongCustomEntityv1alpha1namespacedEntidade customizada que o KIC não suporta nativamente; enviada como JSON para o Kong.

konnect.konghq.com (Konnect)

RecursoAPI VersionEscopoFunção
KonnectGatewayControlPlanev1alpha2namespacedControl plane no Konnect (nuvem) referenciado pelo cluster.
KonnectExtensionv1alpha2namespacedConfiguração de extensão Konnect (ex.: registro do cluster no Konnect).
KonnectAPIAuthConfigurationv1alpha1namespacedConfiguração de autenticação da API do Konnect.
KonnectCloudGatewayDataPlaneGroupConfigurationv1alpha1namespacedConfiguração de grupo de DataPlane para Dedicated Cloud Gateways.
KonnectCloudGatewayNetworkv1alpha1namespacedRede para Dedicated Cloud Gateways.
KonnectCloudGatewayTransitGatewayv1alpha1namespacedTransit Gateway para Konnect Cloud Gateways.

Diagrama de dependências entre os objetos

O diagrama abaixo resume as dependências entre os principais recursos quando se usa o Kong Operator com Gateway API e managed gateways. Setas indicam “referencia” ou “é criado por”.

flowchart TB
    subgraph Cluster["Cluster"]
        subgraph GatewayAPI["Gateway API"]
            GC[GatewayClass]
            GW[Gateway]
            HR[HTTPRoute]
            GR[GRPCRoute]
            RG[ReferenceGrant]
        end

        subgraph KongOperator["gateway-operator.konghq.com"]
            CP[ControlPlane]
            DP[DataPlane]
            GCfg[GatewayConfiguration]
            DPME[DataPlaneMetricsExtension]
            KPI[KongPluginInstallation]
            WNG[WatchNamespaceGrant]
            AIG[AIGateway]
        end

        subgraph Config["configuration.konghq.com"]
            KP[KongPlugin]
            KC[KongConsumer]
            KPB[KongPluginBinding]
            KRG[KongReferenceGrant]
        end
    end

    GC -->|"implementado por"| GW
    GW -->|"operator cria"| CP
    GW -->|"operator cria"| DP
    CP -->|"configura"| DP
    GW -.->|"opcional: referência"| GCfg
    GCfg -.->|"extensions"| DPME
    GCfg -.->|"plugins"| KPI
    DP -.->|"plugins"| KPI

    HR -->|"parentRef"| GW
    GR -->|"parentRef"| GW
    HR -->|"backendRef (cross-ns)"| RG
    GR -->|"backendRef (cross-ns)"| RG

    KP -->|"binding"| KPB
    KPB -->|"aplica a"| HR
    KC -->|"consumers"| KP
    KRG -->|"permite ref cross-ns"| KC
    KRG -->|"permite ref cross-ns"| KP

    CP -->|"lê e sincroniza"| HR
    CP -->|"lê e sincroniza"| KP
    CP -->|"lê e sincroniza"| KC
    CP -->|"watch limitado por"| WNG

    AIG -->|"cria próprio"| GW
    AIG -->|"cria próprio"| DP
    AIG -->|"cria próprio"| CP

Legenda rápida

  • GatewayClassGateway: você cria um Gateway que usa o GatewayClass do Kong.
  • GatewayControlPlane + DataPlane: o Kong Operator cria esses dois recursos para cada Gateway.
  • ControlPlaneDataPlane: o ControlPlane envia configuração (rotas, plugins, consumers) para o DataPlane.
  • GatewayConfiguration: opcional; referenciada pelo Gateway para customizar imagem, plugins (KongPluginInstallation) e extensões (ex.: DataPlaneMetricsExtension).
  • HTTPRoute/GRPCRoute: referenciam o Gateway (parentRef) e definem backends; ReferenceGrant libera referências cross-namespace.
  • KongPlugin / KongConsumer / KongPluginBinding: o ControlPlane lê esses recursos e sincroniza para o DataPlane (e, se configurado, para o Konnect).
  • KongReferenceGrant: permite referências cross-namespace em recursos Kong (consumers, plugins, secrets).
  • WatchNamespaceGrant: restringe em quais namespaces o ControlPlane pode observar recursos.
  • AIGateway: recurso de alto nível que cria e gerencia seu próprio Gateway + DataPlane + ControlPlane para cenários de AI/LLM.

Como listar os recursos no seu cluster

Para reproduzir a lista de recursos no seu ambiente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Todos os recursos Kong + Gateway API de uma vez
kubectl api-resources | grep -E "konghq|gateway\.networking"

# Recursos apenas do Kong Operator (core)
kubectl api-resources --api-group=gateway-operator.konghq.com

# Recursos de configuração Kong
kubectl api-resources --api-group=configuration.konghq.com

# Recursos da Gateway API
kubectl api-resources --api-group=gateway.networking.k8s.io

# Versões disponíveis (api-versions)
kubectl api-versions | grep konghq

Isso ajuda a confirmar quais CRDs estão instalados e em quais versões (v1alpha1, v1beta1, v2beta1, etc.).


Conclusão

O Kong Operator oferece um modelo managed gateways em que um único recurso Gateway dispara a criação e a configuração de ControlPlane e DataPlane. Os objetos listados aqui cobrem o core do operator (gateway-operator.konghq.com), a Gateway API (gateway.networking.k8s.io), a configuração Kong (configuration.konghq.com) e o Konnect (konnect.konghq.com). O diagrama de dependências resume como esses recursos se relacionam na prática. Para detalhes de cada CRD, use a referência oficial de CRDs e a documentação do Kong Operator.