Exposing services on the application network using YAML¶
After creating an application network by linking sites, you can expose services from one site using connectors and consume those services on other sites using listeners.
A routing key is a string that matches one or more connectors with one or more listeners.
For example, if you create a connector with the routing key backend, you need to create a listener with the routing key backend to consume that service.
This section assumes you have created and linked at least two sites.
Creating a connector using YAML¶
A connector binds a local workload to listeners in remote sites. Listeners and connectors are matched using routing keys.
There are many options to consider when creating connectors using YAML, see Connector resource.
Procedure
-
Create a workload that you want to expose on the network, for example:
-
Create a connector resource YAML file:
This creates a connector in theapiVersion: skupper.io/v2alpha1 kind: Connector metadata: name: backend namespace: east spec: routingKey: backend selector: app=backend port: 8080eastsite and exposes thebackenddeployment on the network on port 8080. You can create a listener on a different site using the matching routing keybackendto address this service.
To create the connector resource:
where <filename> is the name of a YAML file that is saved on your local filesystem.
- Check the connector status:
For example:
NAME STATUS ROUTING-KEY SELECTOR HOST PORT HAS MATCHING LISTENER MESSAGE
backend Pending backend app=backend 8080 false No matching listeners
spec.routingKey to your custom value.
Creating a listener using YAML¶
A listener binds a local connection endpoint to connectors in remote sites. Listeners and connectors are matched using routing keys.
For more information about listeners. see Listener concept.
For configuration details, see Listener resource.
Procedure
-
Identify a connector that you want to use. Note the routing key of that connector.
-
Create a listener resource YAML file:
This creates a listener in theapiVersion: skupper.io/v2alpha1 kind: Listener metadata: name: backend namespace: west spec: routingKey: backend host: east-backend port: 8080westsite and matches with the connector that uses the routing keybackend. It also creates a service namedeast-backendexposed on port 8080 in the current namespace.
To create the listener resource:
where <filename> is the name of a YAML file that is saved on your local filesystem.
- Check the listener status:
For example:
NAME ROUTING KEY PORT HOST STATUS HAS MATCHING CONNECTOR MESSAGE
backend backend 8080 east-backend Ready true OK
📌 NOTE
There must be a MATCHING-CONNECTOR for the service to operate.
Creating a connector for a different namespace using YAML¶
A connector binds a local workload to listeners in remote sites.
If you create a site in one namespace and need to expose a service in a different namespace, use this procedure to create an attached connector in the other namespace and an AttachedConnectorBinding in the site namespace.
- An attached connector is a connector in a peer namespace, that is, not the site namespace.
- The AttachedConnectorBinding is a binding to an attached connector in a peer namespace and is created in the site namespace.
- Creating attached connectors requires that Skupper is deployed cluster wide.
For configuration details, see Connector resource.
Procedure
-
Create a workload that you want to expose on the network in a non-site namespace, for example:
-
Create an AttachedConnector resource YAML file in the same namespace:
To create the AttachedConnector resource:
where <filename> is the name of a YAML file that is saved on your local filesystem.
- Create an AttachedConnectorBinding resource YAML file in the site namespace:
To create the AttachedConnectorBinding resource:
where <filename> is the name of a YAML file that is saved on your local filesystem.
- Check the AttachedConnectorBinding status from the context of the site namespace:
For example: