-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexample.dhall
67 lines (53 loc) · 1.78 KB
/
example.dhall
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
let config : ../types/configuration.dhall = ../default/configuration.dhall
let myDomain = "www.example.com"
{- Create a Kong service with route -}
let mkService = ../default/service.dhall
let mkRoute = ../default/route.dhall
let serviceName = "my-service-object"
let upstreamName = "upstream-server"
let myService = [
mkService
// { name = Some serviceName
, url = Some "http://${upstreamName}:8080/api"
}
]
let myRoute = [
mkRoute serviceName {- link the route to the service -}
// { name = Some "my-route"
, protocols = Some ["https"]
, hosts = Some [myDomain]
, paths = Some ["/api/v1"]
}
]
{- Create upstream with target -}
let mkUpstream = ../default/upstream.dhall
let mkTarget = ../default/target.dhall
let myUpstream = [mkUpstream upstreamName]
let myTarget = [mkTarget "my-target" upstreamName 8080]
{- Create a SNI with certificate -}
let mkCert = ../default/certificate.dhall
let mkSni = ../default/sni.dhall
let myCert = [
mkCert "cert" "key"
// { snis = Some [mkSni myDomain] }
]
{- Create comsumer object -}
let mkConsumer = ../default/consumer.dhall
let myConsumer = [mkConsumer // { custom_id = Some "my-comsumer" }]
{- Activate plugin on my service -}
let mkPlugin = ../default/plugin.dhall
let myPlugin = [mkPlugin "my-plugin" "first" ["https"]
// { config = Some [ { mapKey = "config", mapValue = "value" } ]
, service = Some serviceName
}
]
{- Combine all Kong objects into one single file -}
in config
// { certificates = Some myCert
, services = Some myService
, routes = Some myRoute
, upstreams = Some myUpstream
, targets = Some myTarget
, consumers = Some myConsumer
, plugins = Some myPlugin
} : ../types/configuration.dhall