Ingress
The ingress
resource allows you to expose resources in Kubernetes clusters to your local
machine. It also allows services on your local machine to be exposed to Kubernetes. This resource
will eventually replace all other ingress resources.
#
Example: Expose a Kubernetes service to the local machineThe following example would expose the Kubernetes service consul-server.default.svc
port 8500
to localhost:8500
.
ingress "consul-http" { source { driver = "local" config { port = 8500 } } destination { driver = "k8s" config { cluster = "k8s_cluster.k3s" address = "consul-server.default.svc" port = 8500 } }}
#
Example: Expose a local application as a Kubernetes serviceThe following example would expose the local application running at localhost:9090
to applications running in
Kubernetes. Shipyard automatically creates a service in the Kuberentes cluster with the same name
as the resource in the shipyard
namespace. Applications in the cluster can use this address to send requests
to the local application. Using the following examlpe any request in Kubernetes sent to local-app.shipyard.svc:9090
would be proxied to localhost:9090
.
ingress "local-app" { source { driver = "k8s" config { cluster = "k8s_cluster.k3s" port = 9090 } } destination { driver = "local" config { address = "localhost" port = 9090 } }}
#
Parameters#
depends_onType: []string
Required: false
Depends on allows you to specify resources which should be created before this one. In the instance of a destruction, this container will be destroyed before resources in.
#
sourceType: Traffic
Required: true
The source stanza allows the configuration for the source of the traffic.
source { driver = "k8s" config { cluster = "k8s_cluster.k3s" port = 9090 }}
#
destinationType: Traffic
Required: true
The destination stanza allows the configuration for the destination of the traffic.
destination { driver = "local" config { address = "localhost" port = 9090 }}
Traffic
#
Type: The traffic stanza is used by the ingress
source
and destination
parmeters, it allows the configuration
of various parameters of the ingress.
#
driverType: string
Required: true
Values: "local", "k8s", "docker"
driver
allows you to specify the type of traffic source
or destination
, currently the following are valid values for the driver
parameter.
local
- Traffic originates or terminates on the local host where shipyard is running.k8s
- Traffic originates or terminates on a Kubernetes cluster.docker
- Traffic originates or terminates in a Docker conatainer.
#
configType: TrafficConfig
Required: true
The config stanza allows specific configuration for the different driver types. The parameters specified inside the config block depend upon wheere it is used. See the TrafficConfig documentation for more information.
config { address = "localhost" port = 9090}
TrafficConfig
#
Type: TrafficConfig allows you to specify configuation options such as the port for Traffic
stanzas.
#
clusterType: string
Required: if driver=='k8s' or driver=='nomad'
Specify the cluster where the traffic will originate or terminate. This parameter is only needed when
the driver is either k8s
or nomad
clusters.
config { cluster = "k8s_cluster.dev" port = 9090}
#
addressType: string
Required: if destination
The destination address for the traffic, can be any resolvable address or ip address.
Address only needs to be set when used inside a destination
block.
#
portType: string
Required: true
The port for the source or desination traffic.
#
open_in_browserType: string
Required: if source && driver=='local'
open_in_browser
allows you to specify the path of a url which will be automatically opened in a browser
window after the shipyard finishes creating resources.
The following example would open a browser window at the location http://localhost:9090/ui
:
source { driver = "local"
config { port = 9090 open_in_browser = "/ui" }}