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 machine#

The 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 service#

The 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_on#

Type: []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.

source#

Type: 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
}
}

destination#

Type: Traffic
Required: true

The destination stanza allows the configuration for the destination of the traffic.

destination {
driver = "local"
config {
address = "localhost"
port = 9090
}
}

Type: Traffic#

The traffic stanza is used by the ingress source and destination parmeters, it allows the configuration of various parameters of the ingress.

driver#

Type: 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.

config#

Type: 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
}

Type: TrafficConfig#

TrafficConfig allows you to specify configuation options such as the port for Traffic stanzas.

cluster#

Type: 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
}

address#

Type: 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.

port#

Type: string
Required: true

The port for the source or desination traffic.

open_in_browser#

Type: 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"
}
}