variable "control_plane_id" {
type = "string"
default = "YOUR_CONTROL_PLANE_ID"
}
resource "konnect_gateway_plugin_key_auth" "key_auth" {
enabled = true
config = {
hide_credentials = false
key_in_body = false
key_in_header = true
key_in_query = true
key_names = ["apikey-global"]
run_on_preflight = true
}
protocols = ["grpc", "grpcs", "http", "https", "ws", "wss"]
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_plugin_key_auth" "route_in_service_httpbin_key_auth" {
enabled = true
config = {
hide_credentials = false
key_in_body = false
key_in_header = true
key_in_query = true
key_names = ["apikey-in-route"]
run_on_preflight = true
}
protocols = ["grpc", "grpcs", "http", "https", "ws", "wss"]
service = {
id = konnect_gateway_service.httpbin.id
}
route = {
id = konnect_gateway_route.route_in_service.id
}
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_service" "httpbin" {
enabled = true
name = "httpbin"
connect_timeout = 60000
host = "httpbin.konghq.com"
port = 443
protocol = "https"
read_timeout = 60000
retries = 5
write_timeout = 60000
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_route" "route_in_service" {
name = "route-in-service"
https_redirect_status_code = 426
path_handling = "v0"
paths = ["/"]
preserve_host = false
protocols = ["http", "https"]
regex_priority = 0
request_buffering = true
response_buffering = true
strip_path = true
service = {
id = konnect_gateway_service.httpbin.id
}
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_plugin_key_auth" "httpbin_key_auth" {
enabled = true
config = {
hide_credentials = false
key_in_body = false
key_in_header = true
key_in_query = true
key_names = ["apikey-service"]
run_on_preflight = true
}
protocols = ["grpc", "grpcs", "http", "https", "ws", "wss"]
service = {
id = konnect_gateway_service.httpbin.id
}
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_upstream" "upstream_my_upstream" {
name = "my-upstream"
algorithm = "round-robin"
hash_fallback = "none"
hash_on = "none"
hash_on_cookie_path = "/"
healthchecks = {
active = {
concurrency = 10
healthy = {
http_statuses = [200, 302]
interval = 0
successes = 0
}
http_path = "/"
https_verify_certificate = true
timeout = 1
type = "http"
unhealthy = {
http_failures = 0
http_statuses = [429, 404, 500, 501, 502, 503, 504, 505]
interval = 0
tcp_failures = 0
timeouts = 0
}
}
passive = {
healthy = {
http_statuses = [200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, 306, 307, 308]
successes = 0
}
type = "http"
unhealthy = {
http_failures = 0
http_statuses = [429, 500, 503]
tcp_failures = 0
timeouts = 0
}
}
threshold = 0
}
slots = 10000
use_srv_name = false
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_target" "upstream_my_upstream_target_a_example_com_443" {
target = "a.example.com:443"
weight = 100
upstream_id = konnect_gateway_upstream.upstream_my_upstream.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_target" "upstream_my_upstream_target_b_example_com_443" {
target = "b.example.com:443"
weight = 100
upstream_id = konnect_gateway_upstream.upstream_my_upstream.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_route" "route_standalone" {
name = "route-standalone"
https_redirect_status_code = 426
path_handling = "v0"
paths = ["/"]
preserve_host = false
protocols = ["http", "https"]
regex_priority = 0
request_buffering = true
response_buffering = true
strip_path = true
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_consumer" "alice" {
username = "alice"
custom_id = "alice123"
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_consumer_group_member" "gold_alice" {
consumer_id = konnect_gateway_consumer.alice.id
consumer_group_id = konnect_gateway_consumer_group.gold.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_acl" "alice_acl_group_a" {
group = "group-a"
tags = ["alice", "group-a"]
consumer_id = konnect_gateway_consumer.alice.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_basic_auth" "alice_basic_auth_alice" {
username = "alice"
password = "60cf54018b3a0264fb19517f8214dddaa4d83ab7"
consumer_id = konnect_gateway_consumer.alice.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_key_auth" "alice_key_auth_alicekey" {
key = "alicekey"
tags = ["alice"]
consumer_id = konnect_gateway_consumer.alice.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_jwt" "alice_jwt_alicejwtkey" {
algorithm = "HS256"
key = "alicejwtkey"
secret = "alicejwtsecret"
consumer_id = konnect_gateway_consumer.alice.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_hmac_auth" "alice_hmac_auth_aliceuser" {
username = "aliceuser"
secret = "alicesecret"
consumer_id = konnect_gateway_consumer.alice.id
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_plugin_rate_limiting" "alice_rate_limiting" {
enabled = true
config = {
error_code = 429
error_message = "API rate limit exceeded"
fault_tolerant = true
hide_client_headers = false
hour = 10
limit_by = "consumer"
policy = "local"
redis = {
database = 0
port = 6379
ssl = false
ssl_verify = false
timeout = 2000
}
redis_database = 0
redis_port = 6379
redis_ssl = false
redis_ssl_verify = false
redis_timeout = 2000
sync_rate = -1
}
protocols = ["grpc", "grpcs", "http", "https"]
consumer = {
id = konnect_gateway_consumer.alice.id
}
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_consumer" "bob" {
username = "bob"
custom_id = "bob456"
tags = ["bob"]
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_consumer_group" "gold" {
name = "gold"
tags = ["gold", "alice"]
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_plugin_rate_limiting" "gold_rate_limiting" {
config = {
error_code = 429
error_message = "API rate limit exceeded"
fault_tolerant = true
hide_client_headers = false
hour = 10000
limit_by = "consumer"
policy = "local"
redis = {
database = 0
port = 6379
ssl = false
ssl_verify = false
timeout = 2000
}
redis_database = 0
redis_port = 6379
redis_ssl = false
redis_ssl_verify = false
redis_timeout = 2000
sync_rate = -1
}
consumer_group = {
id = konnect_gateway_consumer_group.gold.id
}
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_ca_certificate" "ca_cert_cb3de215987a2a50e5fc5a567e5837ad" {
cert = <<EOF
-----BEGIN CERTIFICATE-----
MIIBwDCCAUagAwIBAgIUMDCK/a+EH6a9PvQeyFwHDALYrx0wCgYIKoZIzj0EAwIw
FzEVMBMGA1UEAwwMa29uZ190ZXN0X2NhMB4XDTI0MDkwODE3NDUxMFoXDTI3MDkw
ODE3NDUxMFowFzEVMBMGA1UEAwwMa29uZ190ZXN0X2NhMHYwEAYHKoZIzj0CAQYF
K4EEACIDYgAEYEP63cMf47Xf6QcH9QT8ehjxBAbfF68PdCXOPgKZdSFvRYs+JZ+Y
dIhWV4M06WiEP8Exn352xuzgZc4mVT9B6SpAsp+hsyJ9ZkuQkyb0lC1XodP5+ZlF
yP0dZHkPYQ5Po1MwUTAdBgNVHQ4EFgQUYS5tJ4WfzVaNsB2oYrJOEf2WJ/UwHwYD
VR0jBBgwFoAUYS5tJ4WfzVaNsB2oYrJOEf2WJ/UwDwYDVR0TAQH/BAUwAwEB/zAK
BggqhkjOPQQDAgNoADBlAjBCIF9CB1CuRkdRpdjHq/x2G1TJkj622L80+Emvkctw
IdyXs8Vp2gHrLjpbBAKoWAgCMQD0E/fjMNr0FAce66MlpKSxdKbeUGt7Zv3Gauld
3jeXOUCitQiKp60wg0IhAslBoEM=
-----END CERTIFICATE-----
EOF
cert_digest = "ef407ce6a2f2c0b68c24a31cf7c75dfd6fd850d631775545f17b6d67b4b93c64"
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_certificate" "cert_da6db9d072d2cce9a9e1003f2d28dca3" {
cert = <<EOF
-----BEGIN CERTIFICATE-----
MIIBxzCCAUygAwIBAgIUfCAyT/813MlPQFqasFetYcAdPVYwCgYIKoZIzj0EAwIw
GjEYMBYGA1UEAwwPa29uZ19jbHVzdGVyaW5nMB4XDTI0MDkwODE3NDQzNloXDTI3
MDkwODE3NDQzNlowGjEYMBYGA1UEAwwPa29uZ19jbHVzdGVyaW5nMHYwEAYHKoZI
zj0CAQYFK4EEACIDYgAEygTwKjbWvTvj0AlmNfxXFaPFbOctV0LA9D4aUzdG8dPg
3bZEco1wWKNY1ucs7sFO51T6oPuI77nHv+owCMLbS7Cx2m7Tdkdibp63ejggiogZ
U6er9tNWI7kF3NJos8mdo1MwUTAdBgNVHQ4EFgQUrpk2dywGsqDcrr1lNPhEQT7n
3OMwHwYDVR0jBBgwFoAUrpk2dywGsqDcrr1lNPhEQT7n3OMwDwYDVR0TAQH/BAUw
AwEB/zAKBggqhkjOPQQDAgNpADBmAjEAuotEtPBtrU1loNBwxpWWbeJ3cH8yJVb7
jtAqcs3KC2nZa+gDbzCQgePjL1nQ7M2yAjEAootOUs9SiFh89TbjEpjYX0JTV1sX
3aHopOi30aG8yuGRkC8NAn85+YpjVvvk+dJC
-----END CERTIFICATE-----
EOF
key = <<EOF
-----BEGIN PRIVATE KEY-----
MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDCjxfLtYRbO+4501Zx4
bwN2BK/yDugQ/p1uA+yz6Z02oOPbPq0eWl5iZTp7LsxpHP+hZANiAATKBPAqNta9
O+PQCWY1/FcVo8Vs5y1XQsD0PhpTN0bx0+DdtkRyjXBYo1jW5yzuwU7nVPqg+4jv
uce/6jAIwttLsLHabtN2R2Junrd6OCCKiBlTp6v201YjuQXc0mizyZ0=
-----END PRIVATE KEY-----
EOF
tags = ["kong-clustering"]
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_sni" "sni_foo_example_com" {
name = "foo.example.com"
certificate = {
id = konnect_gateway_certificate.cert_da6db9d072d2cce9a9e1003f2d28dca3.id
}
control_plane_id = var.control_plane_id
}
resource "konnect_gateway_vault" "env" {
name = "env"
config = jsonencode({
prefix = "none"
})
prefix = "my-env-vault"
control_plane_id = var.control_plane_id
}