helm upgrade --install kong-operator kong/kong-operator -n kong-system \
--create-namespace \
--set image.tag=2.3 \
--set env.ENABLE_CONTROLLER_KONNECT=true
kubectl -n kong-system wait --for=condition=Available=true --timeout=300s deployment/kong-operator-kong-operator-controller-managerSet DataPlane Image
Use PodTemplateSpec to customize the container spec and specify an image name for the proxy container.
Prerequisites
Kong Konnect
If you don’t have a Konnect account, you can get started quickly with our onboarding wizard.
- The following Konnect items are required to complete this tutorial:
- Personal access token (PAT): Create a new personal access token by opening the Konnect PAT page and selecting Generate Token.
-
Set the personal access token as an environment variable:
export KONNECT_TOKEN='YOUR KONNECT TOKEN'
Kong Operator running
If you want cert-manager to issue and rotate the admission and conversion webhook certificates, install cert-manager to your cluster and enable cert-manager integration by passing the following argument while installing, in the next step:
--set global.webhooks.options.certManager.enabled=trueIf you do not enable this, the chart will generate and inject self-signed certificates automatically. We recommend enabling cert-manager to manage the lifecycle of these certificates.
Kong Operator needs a certificate authority to sign the certificate for mTLS communication between the control plane and the data plane.
This is handled automatically by the Helm chart. If you need to provide a custom CA certificate, refer to the certificateAuthority section
in the values.yaml of the Helm chart to learn how to create and reference your own CA certificate.
Apply a KongLicense. This assumes that your license is available in ./license.json
echo "
apiVersion: configuration.konghq.com/v1alpha1
kind: KongLicense
metadata:
name: kong-license
rawLicenseString: '$(cat ./license.json)'
" | kubectl apply -f -Create the kong namespace
Create the kong namespace in your Kubernetes cluster, which is where the demo will run:
kubectl create namespace kong --dry-run=client -o yaml | kubectl apply -f -Deploy a DataPlane
The DataPlane image can be specified by providing a custom image value for the proxy container. This value is provided in the PodTemplateSpec field in either the DataPlane or the GatewayConfiguration resource.
The following example uses the
DataPlaneresource, but you can also configure yourGatewayConfigurationresource as needed. For more information see the PodTemplateSpec page.
echo '
apiVersion: gateway-operator.konghq.com/v1beta1
kind: DataPlane
metadata:
name: dataplane-example
namespace: kong
spec:
deployment:
podTemplateSpec:
spec:
containers:
- name: proxy
image: kong/kong-gateway:3.10
' | kubectl apply -f -Validation
To validate that the correct image was used, fetch the pod created by Kong Operator and check the .spec.containers[].image value:
NAME=$(kubectl get -o yaml -n kong pod | yq '.items[].metadata.name | select(contains("dataplane-example"))')
kubectl get -o yaml -n kong pod $NAME \
| yq '.spec.containers[] | select(.name == "proxy") | .image'You should see the value kong/kong-gateway:3.10.
Cleanup
Delete the resources created in this guide
Delete the resources created in this guide. Deleting the kong-system namespace removes the operator:
kubectl delete -n kong --ignore-not-found dataplane/dataplane-example
kubectl delete --ignore-not-found namespace kong
helm uninstall kong-operator -n kong-system
kubectl delete --ignore-not-found namespace kong-system