We're currently trying to deploy Kong in a GKE cluster and the goal is to delegate the certificate management to Google's Load Balancer (the SSL termination should be made here).
The problem we faced is that all Google's documentation is focus on deploying some service and use their exclusive Load Balancer that connects directly to the Ingress declared.
The configuration which currently works (without Kong) is the following:
# values.yml (from Service X inside GKE, using Helm)
...
ingress:
enabled: true
hostname: example.com
annotations:
kubernetes.io/ingress.class: gce
kubernetes.io/ingress.allow-http: "false"
kubernetes.io/ingress.global-static-ip-name: example-static-ip
ingress.gcp.kubernetes.io/pre-shared-cert: example-cert
...
However, when we change gce
for kong
as the ingress.class, all other annotations don't continue to work. This is expected, as now Kong's proxy is the one being the Load Balancer and should be the one that tells Google's LB how to generate itself.
According to this documentation, it should be fairly simple to add those annotations to Kong proxy service.
Based on this chain of events:
- K8s Ingress creates Kong proxy service
- Kong proxy service generates Google's LB
The configuration to customize the LB should be made inside Kong's service (as I understand):
# values.yml (Kong, using Helm)
...
proxy:
type: LoadBalancer
annotations: {} <-- Here
http:
...
tls:
...
...
However, for GCP there are only a few according to the docs, and none of them have the desire effect (cannot set certificate to use, define which type of LB to create, etc.)
All things into account, is there any way to achieve our main goal which would be:
"Deploy Kong API Gateway through Helm inside GKE and delegate SSL termination to custom Google's LB."