Expose workloads in multiple Namespaces with a single APIRule definition
This tutorial shows how to expose service endpoints in multiple Namespaces using API Gateway Controller.
Prerequisites
Create three Namespaces: one for an instance of the HttpBin service, one for a sample Function, and one for an APIRule custom resource (CR). Deploy an instance of the HttpBin service and a sample Function in their respective Namespaces. To learn how to do it, follow the Create a workload tutorial.
NOTE: Remember to enable the Istio sidecar proxy injection in each Namespace.
Export the Namespaces' names as environment variables:
Click to copyexport NAMESPACE_HTTPBIN={NAMESPACE_NAME}export NAMESPACE_FUNCTION={NAMESPACE_NAME}export NAMESPACE_APIRULE={NAMESPACE_NAME}Depending on whether you use your custom domain or a Kyma domain, export the necessary values as environment variables:
- Custom domain
- Kyma domain
Expose and access your workloads in multiple Namespaces
Expose the HttpBin and Function services in their respective Namespaces by creating an APIRule CR in its own Namespace. Run:
Click to copycat <<EOF | kubectl apply -f -apiVersion: gateway.kyma-project.io/v1beta1kind: APIRulemetadata:name: httpbin-and-functionnamespace: $NAMESPACE_APIRULEspec:host: httpbin-and-function.$DOMAIN_TO_EXPOSE_WORKLOADSgateway: $GATEWAYrules:- path: /headersmethods: ["GET"]service:name: httpbinnamespace: $NAMESPACE_HTTPBINport: 8000accessStrategies:- handler: noopmutators:- handler: noop- path: /functionmethods: ["GET"]service:name: functionnamespace: $NAMESPACE_FUNCTIONport: 80accessStrategies:- handler: noopmutators:- handler: noopEOFNOTE: If you are running Kyma on k3d, add
httpbin.kyma.local
to the entry with k3d IP in your system's/etc/hosts
file.Call the HttpBin endpoint by sending a
GET
request to the HttpBin service:Click to copycurl -ik -X GET https://httpbin-and-function.$DOMAIN_TO_EXPOSE_WORKLOADS/headersIf successful, the call returns the code
200 OK
response.Call the Function endpoint by sending a
GET
request to the Function service:Click to copycurl -ik -X GET https://httpbin-and-function.$DOMAIN_TO_EXPOSE_WORKLOADS/functionIf successful, the call returns the code
200 OK
response.