If you see two containers running in the same Pod, it’s likely that you’re running Kong Ingress Controller in Sidecar mode.
NAME READY STATUS RESTARTS AGE
kong-kong-7f5bddf88c-f5r9h 2/2 Running 0 89s
Copied to clipboard!
Verify that one of the running containers is ingress-controller
:
kubectl get pods -n kong kong-kong-7f5bddf88c-wfm6b -o jsonpath='{.spec.containers[*].name}'
Copied to clipboard!
The result should contain ingress-controller
:
You can migrate from the Sidecar deployment topology to Gateway Discovery by disabling Kong Ingress Controller in your proxy deployment and creating a new Helm release that contains Kong Ingress Controller.
The existing Proxy Pod will continue to handle traffic until the final step of the migration. This leads to minimal downtime.
Update your values.yaml
file to disable Kong Ingress Controller and make the Admin API accessible:
ingressController:
enabled: false
admin:
enabled: true
type: ClusterIP
clusterIP: None
Copied to clipboard!
The new Proxy Pod won’t come online as there is no available configuration.
2023/10/27 15:32:43 [notice] 1257#0: *301 [lua] ready.lua:111: fn(): not ready for proxying: no configuration available (empty configuration present), client: 192.168.194.1, server: kong_status, request: "GET /status/ready HTTP/1.1", host: "192.168.194.9:8100
Copied to clipboard!
To send a configuration to the Proxy Pod, deploy a new instance of Kong Ingress Controller that points to the Admin API service. Create values-controller.yaml
with the following contents:
ingressController:
enabled: true
gatewayDiscovery:
enabled: true
adminApiService:
name: kong-kong-admin
deployment:
kong:
enabled: false
Copied to clipboard!
kong-kong-admin
is the default name if your release is called kong
. Run kubectl get services -n kong
to find the correct name.
Create a new controller
deployment using Helm:
helm install controller kong/kong --values ./values-controller.yaml -n kong
Copied to clipboard!
The new Pods don’t come online as the controller can’t access the Admin API for the original Proxy Pod. Delete the old Proxy Pod to allow Gateway Discovery to work:
There may be a small amount of downtime of up to three seconds between the Pod being deleted and new Proxy Pods receiving a configuration.
Find the Pod with two containers. This is the old Sidecar topology that needs to be deleted.
NAME READY STATUS RESTARTS AGE
kong-kong-7f5bddf88c-6cnlq 2/2 Running 0 2m
Copied to clipboard!
Delete the Pod:
kubectl delete pod -n kong kong-kong-7f5bddf88c-6cnlq
Copied to clipboard!
At this point there are two Pods running. controller-kong
contains Kong Ingress Controller and kong-kong
contains Kong Gateway:
NAME READY STATUS RESTARTS AGE
kong-kong-7554ff7db4-d849p 1/1 Running 0 12m
controller-kong-644fb7f694-zw7sk 1/1 Running 1 12m
Copied to clipboard!