Basic configuration examples
The following examples provide some typical configurations for enabling
the canary
plugin on a
service.
Make the following request:
curl -X POST http://localhost:8001/services/{serviceName|Id}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "canary",
"config": {
"percentage": 50,
"upstream_host": "example.com",
"upstream_port": 80
}
}
'
Replace SERVICE_NAME|ID
with the id
or name
of the service that this plugin configuration will target.
Make the following request, substituting your own access token, region, control plane ID, and service ID:
curl -X POST \
https://{us|eu}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/services/{serviceId}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer TOKEN" \
--data '{"name":"canary","config":{"percentage":50,"upstream_host":"example.com","upstream_port":80}}'
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
Add this section to your declarative configuration file:
plugins:
- name: canary
service: SERVICE_NAME|ID
config:
percentage: 50
upstream_host: example.com
upstream_port: 80
Replace SERVICE_NAME|ID
with the id
or name
of the service that this plugin configuration will target.
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "kpat_YOUR_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_canary" "my_canary" {
enabled = true
config = {
percentage = 50
upstream_host = "example.com"
upstream_port = 80
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
service = {
id = konnect_gateway_service.my_service.id
}
}
The following examples provide some typical configurations for enabling
the canary
plugin on a
route.
Make the following request:
curl -X POST http://localhost:8001/routes/{routeName|Id}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "canary",
"config": {
"percentage": 50,
"upstream_host": "example.com",
"upstream_port": 80
}
}
'
Replace ROUTE_NAME|ID
with the id
or name
of the route that this plugin configuration will target.
Make the following request, substituting your own access token, region, control plane ID, and route ID:
curl -X POST \
https://{us|eu}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/routes/{routeId}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer TOKEN" \
--data '{"name":"canary","config":{"percentage":50,"upstream_host":"example.com","upstream_port":80}}'
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
Add this section to your declarative configuration file:
plugins:
- name: canary
route: ROUTE_NAME|ID
config:
percentage: 50
upstream_host: example.com
upstream_port: 80
Replace ROUTE_NAME|ID
with the id
or name
of the route that this plugin configuration will target.
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "kpat_YOUR_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_canary" "my_canary" {
enabled = true
config = {
percentage = 50
upstream_host = "example.com"
upstream_port = 80
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
route = {
id = konnect_gateway_route.my_route.id
}
}
A plugin which is not associated to any service, route, consumer, or consumer group is considered global, and will be run on every request.
- In self-managed Kong Gateway Enterprise, the plugin applies to every entity in a given workspace.
- In self-managed Kong Gateway (OSS), the plugin applies to your entire environment.
- In Konnect, the plugin applies to every entity in a given control plane.
Read the Plugin Reference and the Plugin Precedence sections for more information.
The following examples provide some typical configurations for enabling
the Canary Release
plugin globally.
Make the following request:
curl -X POST http://localhost:8001/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "canary",
"config": {
"percentage": 50,
"upstream_host": "example.com",
"upstream_port": 80
}
}
'
Make the following request, substituting your own access token, region, and control plane ID:
curl -X POST \
https://{us|eu}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer TOKEN" \
--data '{"name":"canary","config":{"percentage":50,"upstream_host":"example.com","upstream_port":80}}'
See the Konnect API reference to learn about region-specific URLs and personal access tokens.
Add a plugins
entry in the declarative configuration file:
plugins:
- name: canary
config:
percentage: 50
upstream_host: example.com
upstream_port: 80
Prerequisite: Configure your Personal Access Token
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "kpat_YOUR_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Add the following to your Terraform configuration to create a Konnect Gateway Plugin:
resource "konnect_gateway_plugin_canary" "my_canary" {
enabled = true
config = {
percentage = 50
upstream_host = "example.com"
upstream_port = 80
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
}