Skip to content

philips-labs/terraform-cloudfoundry-kong

Repository files navigation

terraform-cloudfoundry-kong

Deploys a Kong API gateway to Cloud foundry

Terraform module registry

The module is published here

Requirements

Name Version
terraform >= 0.13.4
cloudfoundry >= 0.14.1
htpasswd >= 0.5.0

Providers

Name Version
archive n/a
cloudfoundry >= 0.14.1
hsdp n/a
htpasswd >= 0.5.0
local n/a
random n/a

Modules

Name Source Version
postgres philips-labs/postgres-service/hsdp 0.3.0

Resources

Name Type
cloudfoundry_app.kong resource
cloudfoundry_app.kong_api_proxy resource
cloudfoundry_network_policy.kong resource
cloudfoundry_network_policy.kong_api_proxy resource
cloudfoundry_route.kong resource
cloudfoundry_route.kong_api_route resource
cloudfoundry_route.kong_internal resource
htpasswd_password.hash resource
local_file.nginx_conf resource
local_file.nginx_htpasswd resource
random_password.password resource
random_pet.deploy resource
archive_file.fixture data source
cloudfoundry_domain.domain data source
cloudfoundry_domain.internal_domain data source
cloudfoundry_org.org data source
cloudfoundry_space.space data source
hsdp_config.cf data source

Inputs

Name Description Type Default Required
cf_domain_name The CF domain to use for Kong string "" no
cf_org_name The CF Org to deploy under string n/a yes
cf_space_name The CF Space to deploy in string n/a yes
db_json_params Optional DB JSON params string "{}" no
db_plan The Database plan to use string "postgres-micro-dev" no
disk The amount of Disk space to allocate for Kong (MB) number 1024 no
docker_password Docker registry password string "" no
docker_username Docker registry username string "" no
enable_postgres Enable or disables postgres persistence bool false no
enable_protected_admin_api Enables the ADMIN API for use by e.g. Kong provider bool false no
environment Environment variables for Kong app map(any) {} no
hostnames The list of hostnames to use for the gateway list(string) [] no
kong_autoscaler_config The Variant autoscaling configuration for Kong
list(object({
min = number
max = number
query = string
expr = string
}))
[
{
"expr": "query_result > 80",
"max": 5,
"min": 2,
"query": "avg(avg_over_time(cpu{guid="{{ guid }}"}[{{ window }}]))"
}
]
no
kong_declarative_config_string Declarative configuration json for Kong. To be provided while running in db less declarative mode string "{\"_format_version\":\"1.1\", \"services\":[{\"host\":\"go-hello-world.eu-west.philips-healthsuite.com\",\"port\":443,\"protocol\":\"https\", \"routes\":[{\"paths\":[\"/\"]}]}],\"plugins\":[{\"name\":\"prometheus\"}]}" no
kong_image Kong Docker image to use string "kong/kong:3.5.0" no
kong_nginx_worker_processes Number of worker processes to use. When increase this, also increase memory allocation number 4 no
kong_plugins List of plugins to load list(string)
[
"bundled"
]
no
memory The amount of RAM to allocate for Kong (MB) number 1024 no
name_postfix The postfix string to append to the hostname, prevents namespace clashes string "" no
network_policies The container-to-container network policies to create with Kong as the source app
list(object({
destination_app = string
protocol = string
port = string
}))
[] no
start_command Explicit Docker startup command string "" no
strategy Deployment strategy, 'none' or 'blue-green', default is 'none' string "none" no

Outputs

Name Description
kong_api_endpoint The API endpoint where Kong admin API reachable on
kong_api_password The API password
kong_api_username The API username
kong_app_id The Kong app id
kong_endpoints The endpoint where Kong is reachable on

Contact / Getting help

Please post your questions on the HSDP Slack #terraform channel, or start a discussion

License

License is MIT