Discover Service Endpoints Using K8s
Objective
This document provides instructions on how to discover service endpoints using Kubernetes (K8s) service information in F5® Distributed Cloud Services. Service discovery enables you to find the endpoints where a given service is available. To know more information about service discovery, see Service Discovery.
Using the instructions provided in this guide, you can create a discovery object for a Kubernetes cluster and an endpoint for a service using the service name.
Prerequisites
The following prerequisites apply:
-
A valid Account is required. If you do not have an account, see Create an Account.
-
An existing Kubernetes cluster with a service or application reachable from a Site.
-
In case of Amazon Elastic Kubernetes Service (EKS), token-based authentication is required. Therefore, you must add AWS credentials in the kubeconfig file for successful service discovery.
Configuration
F5® Distributed Cloud Services enables users to discover existing service endpoints either natively or using external methods. This guide covers service discovery on sites, virtual sites, or virtual networks using Kubernetes service information.
The following figure shows the workflow for creating service discovery with Kubernetes service information:

Figure: Service Discovery with K8s Diagram
Configuration Sequence
Discovering services using the Kubernetes service information requires performing the following sequence of actions:
| Phase | Description |
|---|---|
| Apply Service Discovery Permissions | Apply ClusterRole and ClusterRoleBinding permissions. |
| Create Discovery for External Kubernetes Cluster | Create a service discovery object of type Kubernetes. |
| Verify Discovered Services | Verify that the service discovery object is created and successfully discovered services. |
| Use Discovered Services | Configure endpoint with K8s as the discovery type and associate sites with it. |
Note: The site of discovery object and the endpoint must be the same.
Create Discovery for External Kubernetes Cluster
Features can be viewed and managed in multiple services.
This example shows Service Discovery setup in Multi-Cloud App Connect.
Step 1: Start discover object creation in F5 Distributed Cloud Console.
Create a discovery configuration object in the Default namespace.
- Open
F5 Distributed Cloud Console> selectMulti-Cloud App Connectbox.

Figure: Homepage
-
Confirm
Namespacefeature is in correct namespace. -
Select
Managein left-menu >Service Discoveries. -
Select the
K8s & Consultab. -
Select
Add Discovery.

Figure: Service Discovery
Step 2: Name Discovery.
-
Enter
Name. -
Enter
LabelsandDescriptionas needed.
Step 3: Configure where the discovery configuration is applicable.
-
Enable the
Show Advanced Fieldsoption. -
In
Wherebox, selectVirtual Site,Site, orVirtual Networkfrom drop-down menu option. -
Select
Referencedrop-down menu option to select the virtual site, site, or virtual network. -
Select an option from the
Network Typedrop-down menu. This option only available forVirtual SiteandSite, notVirtual Network.

Figure: Service Discovery Config Options
Step 4: Configure discovery method for k8s access credentials.
For the Select Discovery Method drop-down menu option, select from K8S Discovery Configuration or Consul Discovery Configuration.
K8S Discovery Configuration
- Select
Configurelink inK8S Discovery Configurationbox.

Figure: Discovery Method
-
In
Access Credentialsbox, from theSelect Kubernetes Credentialsdrop-down menu, select fromKubeconfigorTLS parameters for HTTP REST. -
For the
Kubeconfigoption, selectConfigure. Configure secret information, and then clickApply. -
For the
TLS parameters for HTTP RESToption, enter value forAPI Server and Port. SelectConfigure. EnterSNI name. ConfigureServer ParametersandClient Parameters. SelectConfigurelink inClient Private Keyto configure secret. SelectApply.
Note: Token not required for kubeconfig. IAM credentials needed:
-
Select
Configurelink inK8S Discovery Configurationbox inDiscovery Methodsection. -
Select Kubernetes Credentialsdrop-down menu, selectTLS parameters for HTTP RESTinAccess Credentialssection. -
Select
Configurelink inTLS Parametersbox. -
Enter
Server CA CertificatesServer ParametersorClient CertificateinClient Parameters. -
Select
Apply. -
Select
Apply.
Note: Select
Applyagain if presented to complete form.
-
Toggle
Show Advanced Fieldsto openKubernetes POD network reachabilitydrop-down menu option. -
Select
Kubernetes POD is isolatedorKubernetes POD reachableinKubernetes POD network reachabilitydrop-down menu. -
Select VIP Publishing or DNS Delegationdrop-down menu option inVIP Publishing Configurationbox.-
Disable VIP Publishing and DNS Delegation -
Publish domain to VIP mapping> enterDefault Namespace. -
Publish Fully Qualified Domain to VIP mapping -
DNS Delegation> enterSubdomain> selectDNS Modedrop-down menu option:Core DNSorK8s DNS.
-
-
Select
Apply.

Figure: Access Credentials
- Select
Save and Exit.
Consul Discovery Configuration
- Select the
Configurelink.

Figure: Discovery Method
-
In
Access Credentialsbox, enterAPI Server and Port. -
Select
Configurelink inTLS Parameters. -
Configure
Server ParametersandClient Parameters. -
Select
ConfigureinClient Private Keybox to configure:- Configure secret options, and then select
Apply.
- Configure secret options, and then select
-
Select
Apply. -
Enter
User NameinHTTP Authentication Parametersfield. -
Select
Configurelink inPasswordbox:- Configure password options, and then select
Apply.
- Configure password options, and then select
-
From the
Enable/Disable VIP Publishingdrop-down menu, select an option:-
Disable VIP Publishing -
Publish domain to VIP mapping
-
-
Select
Apply.
Step 5: Select cluster identifier.
From the Select Discovery Cluster Identifier menu, select an option:
No cluster identifier: Default option.Discover cluster identifier: Enter the identifier information.
Step 6: Complete creating discovery object.
Select Save and Exit to create the discovery object.
Verify Discovered Services
Verify that the service discovery object is created and discovered services.
Step 1: Verify that the services are discovered.
-
In the
Multi-Cloud App Connectworkspace, navigate toManageand selectService Discoveries. -
Confirm Service Discovery name (object) you created is in the list.
-
Check the
Servicescolumn for the number of services discovered. TheServicescolumn should show the number of services discovered. For example,2 Services.

Figure: Service Discovery Created
Step 2: Check the list of services discovered.
- In the
Servicescolumn, select a service. A pop-up window appears to the right of page listing the discovered services.

Figure: Service Discovery Created
Use Discovered Services
After the service discovery object is created and the services are discovered, you can use it in configurations, such as the following:
-
Origin Pools: The origin pools are a way to declare the origin servers for your service in the load balancer configuration. You can create origin pools as part of HTTP load balancer creation or individually create and apply it to an HTTP load balancer later.
-
Endpoints: The endpoint objects are for advanced configuration for using in the virtual host configuration.
Configure Origin Pool with K8s Service Information
This chapter shows the origin pool creation with K8s service name for the origin server specification. For information, see the Origin Pools guide.
Step 1: Start origin pool creation.
-
Select the
Multi-Cloud App Connectworkspace. -
Change to your application
Namespace. -
Select
Manage>Load Balancers. -
Select
Origin Pools -
Select
Add Origin Pool.

Figure: Origin Pool with K8s Service Information
Step 2: Configure origin server type.
-
Enter
Name, enterLabelsandDescriptionas needed. -
In the
Origin Serverssection, selectAdd Item. -
From the
Select Type of Origin Serverdrop-down menu, select theK8s Service Name of Origin Server on given Sitesoption.

Figure: Origin Pool Name
Step 3: Set the service name.
- Enter
Service Namein box. You can obtain the service name using the instructions in the Verify Discovered Services chapter.
Step 4: Set site or virtual site for the discovery configuration.
-
From the
Select Site or Virtual Sitedrop-down menu, select an option:-
Site: SelectSitedrop-down menu option. -
Virtual Site: SelectVirtual Sitedrop-down menu option.
-
-
From the
Select Network on the sitedrop-down menu, select an option:-
Inside Network -
Outside Network -
vK8s Networks on Site
-
-
Enable the
Show Advanced Fieldsoption. -
Optionally, select the
Add Labelsoption forOrigin Server Labels. -
Select
Apply.
Step 5: Complete origin pool creation.
- Select the
Portvalue. The default value is set to 443.
Note: NodePort service has two ports: NodePort and TargetPort. You need to put the target port value into the
Portfield when creating an origin pool. This enables the service to be reachable on the selected network on the selected site or virtual site.
-
From the
LoadBalancer Algorithmmenu, select an option. -
From the
Endpoint Selectionmenu, select an option. -
Optionally, under the
Health Checkssection, add a health check to your endpoints.
Step 6: Configure TLS.
From the TLS menu, choose to enable TLS. Click View Configuration to customize the configuration. For more help with customization, see the Origin Pools guide.
Step 7: Optionally, configure other options.
Under the Other Settings section, click Configure. Follow the prompts to customize more settings.
Step 8: Complete the configuration.
Click Save and Exit.
Create Endpoint with K8s Service Information
Step 1: Start creating endpoint.
-
Select the
Multi-Cloud App Connectworkspace. -
Change to your application
Namespace. -
Select
Manage>Virtual Hosts>Endpoints. -
Select
Add Endpoint.

Figure: Endpoint Creation
Step 2: Obtain the K8s service information.
Refer to the Verify Discovered Services chapter for the K8s service information.
Step 3: Configure endpoint address information.
-
Enter
Name. -
Enter
LabelsandDescriptionas needed. -
In
Origin Server(Endpoint)section, from theEndpoint Specifierdrop-down menu, selectService Selector info. -
From the
Discoverydrop-down menu, selectKubernetes. -
From the
Servicedrop-down menu, selectService name. -
Enter
Service Namein box. Use the<servicename.namespace>format.

Figure: Endpoint Address Reference Selector
Step 4: Enter port and protocol values.
-
From the
Protocoldrop-down menu, selectTCP. -
Enter a
Portvalue. The port must be the service port of the Kubernetes service and not the node port.
Note: NodePort service has two ports: NodePort and TargetPort. You need to put the target port value into the
Portfield when creating an origin pool.

Figure: Endpoint Creation
With the steps above, you can discover a service endpoint from external Kubernetes providers using Service Info on a location specified using the selector. Once the service is discovered, the object can be used with other configuration objects of the F5® Distributed Cloud Console. For example, you can advertise it across sites in cloud or edge.
Step 5: Configure where the endpoint should be discovered.
-
Toggle
Show Advanced Fieldsto expand options inOrigin Server(Endpoint)section. -
Select option from the
Virtual-Site or Site or Networkdrop-down menu option for where the endpoint will be discovered. -
Select option from the
Referencedrop-down menu option to match the same option used inService Discoveries. -
Optionally, configure the
Port used for health checkoption if needed. -
Select
Save and Exit.

Figure: Endpoint Address Reference Selector
Note: Any reference object (site, virtual site, and virtual network) needs to be created and listed before configuring the
Selectedfield. All the available object list gets displayed on a cascading menu where you can select one or more objects.