Create a Cloud Gateway Data Plane group configuration

Incompatible with
on-prem
Related Documentation
Related Resources
TL;DR

Use the KonnectCloudGatewayDataPlaneGroupConfiguration resource to define autoscaling Data Plane groups and associate them with Cloud Gateway networks.

Prerequisites

If you don’t have a Konnect account, you can get started quickly with our onboarding wizard.

  1. 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.
  2. Set the personal access token as an environment variable:

    export KONNECT_TOKEN='YOUR KONNECT TOKEN'

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=true

If 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.

kubectl create namespace kong --dry-run=client -o yaml | kubectl apply -f -
echo '
kind: KonnectAPIAuthConfiguration
apiVersion: konnect.konghq.com/v1alpha1
metadata:
  name: konnect-api-auth
  namespace: kong
spec:
  type: token
  token: "'$KONNECT_TOKEN'"
  serverURL: us.api.konghq.com
' | kubectl apply -f -
echo '
kind: KonnectGatewayControlPlane
apiVersion: konnect.konghq.com/v1alpha2
metadata:
  name: gateway-control-plane
  namespace: kong
spec:
  createControlPlaneRequest:
    name: gateway-control-plane
  konnect:
    authRef:
      name: konnect-api-auth
' | kubectl apply -f -

In order to manage Cloud Gateway Networks you need to have a Cloud Gateway Provider Account associated with your Konnect account. Export the ID of your provider account to your environment with the Cloud Gateways API:

export CLOUD_GATEWAY_PROVIDER_ID=$(curl -s -H 'Content-Type: application/json' -H "Authorization: Bearer $KONNECT_TOKEN" -XGET https://global.api.konghq.com/v2/cloud-gateways/provider-accounts | jq -r '.data[0].id')

Create the KonnectCloudGatewayNetwork resource:

echo '
kind: KonnectCloudGatewayNetwork
apiVersion: konnect.konghq.com/v1alpha1
metadata:
  name: konnect-network-1
  namespace: kong
spec:
  name: network1
  cloud_gateway_provider_account_id: "'$CLOUD_GATEWAY_PROVIDER_ID'"
  availability_zones:
  - euw1-az1
  - euw1-az2
  - euw1-az3
  cidr_block: 192.168.0.0/16
  region: eu-west-1
  konnect:
    authRef:
      name: konnect-api-auth
' | kubectl apply -f -

It can take some time for the network to finish initializing. Make sure the network is ready before moving on to the next step. You can got to the Konnect Networks page or use the following command to check the network state:

curl -s -H 'Content-Type: application/json' -H "Authorization: Bearer $KONNECT_TOKEN" -XGET https://global.api.konghq.com/v2/cloud-gateways/networks| jq

Create a KonnectCloudGatewayDataPlaneGroupConfiguration

Use the KonnectCloudGatewayDataPlaneGroupConfiguration resource to configure data plane groups for a Dedicated Cloud Gateway. Only one configuration can exist per Control Plane.

Creating multiple configurations will result in overwriting the previous one. Each Dedicated Cloud Gateway supports only a single DataPlaneGroupConfiguration.

echo '
kind: KonnectCloudGatewayDataPlaneGroupConfiguration
apiVersion: konnect.konghq.com/v1alpha1
metadata:
  name: konnect-cg-dpconf
  namespace: kong
spec:
  api_access: private+public
  version: "3.10"
  dataplane_groups:
  - provider: aws
    region: eu-west-1
    networkRef:
      type: namespacedRef
      namespacedRef:
        name: konnect-network-1
    autoscale:
      type: autopilot
      autopilot:
        base_rps: 100
    environment:
    - name: KONG_LOG_LEVEL
      value: debug
  controlPlaneRef:
    type: konnectNamespacedRef
    konnectNamespacedRef:
      name: gateway-control-plane
' | kubectl apply -f -

Since creating a Data Plane Group Configuration can take some time, you can monitor its status by checking the dataplane_groups field. Data Plane Group Configurations receive this field when they are successfully provisioned in Konnect.

kubectl get -n kong konnectcloudgatewaydataplanegroupconfiguration.konnect.konghq.com konnect-cg-dpconf -o=jsonpath='{.status.dataplane_groups}' | yq -p json

Validation

You can verify the KonnectCloudGatewayDataPlaneGroupConfiguration was reconciled successfully by checking its Programmed condition.

kubectl get -n kong konnectcloudgatewaydataplanegroupconfiguration konnect-cg-dpconf \
  -o=jsonpath='{.status.conditions[?(@.type=="Programmed")]}' | jq

The output should look similar to this:

{
  "observedGeneration": 1,
  "reason": "Programmed",
  "status": "True",
  "type": "Programmed"
}

Cleanup

Deleting the KonnectCloudGatewayDataPlaneGroupConfiguration removes the Data Plane group from Konnect. Deleting the KonnectGatewayControlPlane also deletes the control plane Kong Operator created in Konnect:

kubectl delete -n kong --ignore-not-found \
  konnectcloudgatewaydataplanegroupconfiguration/konnect-cg-dpconf \
  konnectcloudgatewaynetwork/konnect-network-1 \
  konnectgatewaycontrolplane/gateway-control-plane \
  konnectapiauthconfiguration/konnect-api-auth
helm uninstall kong-operator -n kong-system
kubectl delete namespace kong kong-system

Help us make these docs great!

Kong Developer docs are open source. If you find these useful and want to make them better, contribute today!