Skip to main content
Version: 1.16.0

Export Services

This topic describes how to export internal services from onboarded applications and externally managed service gateways from clusters on a slice.

Prerequisites

  • Ensure that your slice contains applications onboarded on to it.
  • Ensure that clusters have an externally managed service that can be exported on to the slice, whose network type is single network or multi-network.

View the Exported Services

  1. Go to Export Services on the left sidebar.

  2. On the Export Services page, under Slices, the number of services exported for each slice in your account are tabulated.

  3. Click the slice to see its exported services.

    alt

Export an Internal Service

When you onboard applications on to the slice, the services on the namespace must be exported for other clusters to discover and use them.

  1. Go to Export Services on the left sidebar.

  2. On the Export Services page, under Slices, click the slice whose services you want to export.

  3. Under Internal Services, click Export Services that is towards the top-right corner of the page.

    info

    If a namespace contains multiple services pointing to the same resource, and if you export one of the services, then the other services also get exported along with the service that you intentionally exported.

  4. On the Service Export pane, select the service that you want to export. Alias is optional.

    note

    You can also use this pane to edit alias after a service is exported.

    alt

    For a multi-network slice, the Service Export pane also lists Protocol that you can set.

    alt

  5. Click Export Services/Edit Alias.

  6. You are notified that the service export is initiated. Click Ok.

  7. The internal services that are exported are added to the list.

    alt

Verify the Exported Internal Services

Ensure that the service and its associated service export are linked. If they are successfully linked, then the status shows exported. If they are not linked correctly, then the status is shown as not exported.

warning

If the status of the service export is not exported, then verify the following conditions are met:

  1. Name of the service should match with the service export name.

    Verify service export names using the following command:

    kubectl get serviceexport -n <namespace>

    Example

    kubectl get serviceexport -n boutique

    Example output

    NAME         SLICE            INGRESS   SERVICEPORT(S)   PORT(S)     ENDPOINTS   STATUS   ALIAS
    ad-service boutique-slice 18080/TCP READY
    redis boutique-slice 18081/TCP 1 READY ["redis"]

    Verify services using the following command:

    kubectl get svc -n <namespace>

    Example

    kubectl get svc -n boutique

    Example Output

    ad-service   ClusterIP   10.7.40.11   <none>        9555/TCP    160m
    redis ClusterIP 10.7.41.6 <none> 18081/TCP 21h

    In the above example, both ad-service and redis services match with the corresponding service export names.

  2. ServiceExport spec.selector.matchLabels should match with the service spec.selector.

    A correct match is illustrated in the following example:

    kind: ServiceExport
    spec:
    selector:
    matchLabels:
    app: ad-service
    name: kubeslice-demo
    kind: Service
    spec:
    selector:
    app: ad-service
    name: kubeslice-demo
  3. The ServiceExport object should have a annotation of the service name. For example:

    kind: ServiceExport
    metadata:
    annotations:
    service: ad-service # service name of the service

Remove Service Exports

  1. On the Export Services page, under Slices, select the slice you want to remove service exports from.

  2. On that slice page, under Internal Services, click Remove Service Exports that is towards the top-right corner of the page.

  3. In the Service Export pane, select services that you want to recall and click Remove Service Exports.

    alt

  4. You are notified that the service export removal is initiated. Click Ok.

  5. The selected service exports are removed.

Export an External Service

The VPC egress gateway feature enables users to import a privately managed service running outside a Kubernetes cluster onto a slice. This allows the application pods running in remote clusters to access the managed service through the slice network. To know more, see managed services gateway.

Add a managed service gateway onto the slice to make it accessible to all application pods of other connected clusters.

caution

Exporting an external service is not supported for a multi-network slice.

note

Ensure that the slice network type is single-network before exporting an external service from it.

  1. Go to Export Services tab on the left sidebar.

  2. On the Export Services page, under Slices, select the slice you want to export an external service from.

  3. On that slice page, go to External Services.

  4. On the External Services tab, click Add External Service.

    caution

    The Add External Service button is disabled if the slice network type is no network.

    You can only export an external service from a single-network or a multi-network slice.

  5. On the Add External Service tab, add the following:

    alt

    1. Add a name in the Service Name text box.
    2. Select the cluster that is attached to the service under Clusters.
    3. Add FQDN in the text box.
    4. (Optional) Add the IP address.
    5. Select a protocol from the supported list.
    6. Add a port value in the Port text box.
    7. Click Import External Service to advertise it for other clusters.
    8. The external service is added to the list on the External Service tab.

    alt

Delete an External Service

  1. Go to Export Services tab on the left sidebar.

  2. On the Export Services page, under Slices, select the slice you want to delete an external service from.

  3. On that slice page, go to External Services.

    alt

  4. Click the delete icon against the external service you want to remove.

    alt

  5. In the confirmation dialog, enter DELETE and click Delete External Service.