Discover existing Service Endpoints

Objective

In this document, you’ll learn how to discover existing Service Endpoints in Volterra. Further details can be found here at Volterra Service Discovery under VES Concepts.


Prerequisites

  1. A Volterra VES account

  2. Volterra Node or Cluster Image

Volterra Service Discovery Overview

Volterra enables users to discover existing service endpoints. There are multiple means by which existing services can be discovered to Volterra platform.

  1. IP
  2. DNS name
  3. Service info
  4. Service Discovery with Consul

IP Address

Users can provide an IP address that is reachable from VoltConsole using the endpoint configuration to discover an existing service on a Site/Virtual Site/Virtual Network.

DNS Name

Users can provide a resolvable DNS name that is reachable from VoltConsole using the endpoint configuration to discover an existing service on a Site/Virtual Site/Virtual Network.

Service Info

Service info refers to Kubernetes service information of a specific service running on either public-cloud platforms (AKS,EKS) or on Volterra Kubernetes service. User can provide the service information using:

<kubernetes_service_name>.<namespace_in_which_service_is_placed>

Discovery using ‘Service info’ requires an other extra configuration ‘Discovery Type’. Discovery type refers to the method of Kubernetes service discovery. Supported discovery types are K8S and Consul. In case of service discovery from public-cloud platforms (AKS,EKS), a discovery object must be created with required access/authentication information.

Consul

Volterra enables users to use Consul for service discovery. Users can provide the Consul information through the service discovery object and Volterra seamlessly reads the service information from Consul.

Service Discovery using IP Address

  1. Select desired Namespace (or) create a namespace where endpoint with endpoint address has to be created.

NavNS
Figure: Navigate to Namespace

  1. From the configuration menu choose ‘Manage’ and select ‘Endpoints’ from the options pane. Select ‘Add endpoint’ on the top.

EPCreat
Figure: Endpoint Creation

  1. Configure endpoint general information

    Key Value Optional
    1 Name Name of the Endpoint Object. This refers to the Endpoint object created in a specific namespace. NO
    2 Labels Labels associated to Endpoint Object. A Key/Label is associated to the object which facilitates grouping. YES
    3 Description Description about EndpointObject. A human readable description to identify and understand the object. YES

    Table: Endpoint Config Options

    EPAdd
    Figure: Add Endpoint

  2. Configure Endpoint Address Information

    Key Value Optional
    1 Endpoint Address Endpoint address information. In this scenario it is ‘IP’ NO
    2 IP An IP address that is reachable from VoltConsole NO

    Table: Endpoint Address IP Config Option

    EPIPaddr
    Figure: Endpoint Address IP Config Option

  3. Select where the endpoint should be discovered using ‘Select ref’

    Sr Key Value Optional
    1 RefOrSelector Refers to a location where endpoint has to be discovered. Supported values: Site, Virtual Site and Virtual Network NO
    2 Select ref A selection menu to select an entity described above NO

    Table: Endpoint Address Reference Selector

EPAddrRefselector
Figure: Endpoint Address Site Reference Selector

Any reference object (site, virtual site and virtual network) has to be created and listed before configuring this field. All the available object list will be displayed on a cascading menu where users can choose one or more objects.

EPAddrRefselection
Figure: Endpoint Site Reference Selection

  1. Configuring Port and Protocol

    Key Value Optional
    1 Port Refers to port on which the service is serving. NO
    2 Protocol Defaults to TCP YES

    Table: Endpoint Port and Protocol

EPPortProto
Figure: Endpoint Port and Protocol

With the steps above user can discover a service endpoint using IP address on a location specified using selector. Once the service is discovered the object can be used with other configuration objects of Volterra platform.

EPPortProto
Figure: Endpoint Created

Service Discovery using DNS Name

  1. Select desired Namespace (or) create a namespace where endpoint with endpoint address has to be created.

NSNav
Figure: Navigate to Namespace

  1. From the configuration menu choose ‘Manage’ and select ‘Endpoints’ from the options pane. Select ‘Add endpoint’ on the top.

CreateEP
Figure: Endpoint Creation

  1. Configure endpoint general information

    Key Value Optional
    1 Name Name of the Endpoint Object. This refers to the Endpoint object created in a specific namespace. NO
    2 Labels Labels associated to Endpoint Object. A Key/Label is associated to the object which facilitates grouping. YES
    3 Description Description about EndpointObject. A human readable description to identify and understand the object. YES

    Table: Endpoint Config Options

AddEP
Figure: Add Endpoint

  1. Configure Endpoint Address Information
Key Value Optional
1 Endpoint Address Endpoint address information. In this scenario it is ‘DNS name’ NO
2 DNS name A resolvable DNS name from VoltConsole NO

Table: Endpoint Address DNS Config Option

EPDNS
Figure: Endpoint Address DNS Config Option

  1. Select where the endpoint should be discovered using ‘Select ref’

    Key Value Optional
    1 RefOrSelector Refers to a location where endpoint has to be discovered. Supported values: Site, Virtual Site and Virtual Network NO
    2 Select ref A selection menu to select an entity described above NO

    Table: Endpoint Address Reference Selector

    EPAddRefSelector
    Figure: Endpoint Address Reference Selector

    Any reference object (site, virtual site and virtual network) has to be created and listed before configuring this field. All the available object list will be displayed on a cascading menu where users can choose one or more objects.

EPAddRefSelection
Figure: Endpoint Site Reference Selection

  1. Configuring Port and Protocol
Key Value Optional
1 Port Refers to port on which the service is serving. NO
2 Protocol Defaults to TCP YES

Table: Endpoint Port and Protocol

EPPortProto
Figure: Endpoint Port and Protocol

With the steps above user can discover a service endpoint using DNS name on a location specified using selector. Once the service is discovered the object can be used with other configuration objects of Volterra platform.

EPCreared
Figure: Endpoint Created

Service Discovery using Service Info - Volterra Kubernetes Service

Note: This section assumes user has already deployed services on Volterra Kubernetes platform.

  1. Select desired Namespace (or) create a namespace where endpoint with endpoint address has to be created.

NavNS
Figure: Navigate to Namespace

  1. From the configuration menu choose ‘Manage’ and select ‘Endpoints’ from the options pane. Select ‘Add endpoint’ on the top.

    EPCreate
    Figure: Endpoint Creation

  2. Configure endpoint general information.

    Key Value Optional
    1 Name Name of the Endpoint Object. This refers to the Endpoint object created in a specific namespace. NO
    2 Labels Labels associated to Endpoint Object. A Key/Label is associated to the object which facilitates grouping. YES
    3 Description Description about EndpointObject. A human readable description to identify and understand the object. YES

    Table: Endpoint Config Options

EPAdd
Figure: Add Endpoint

  1. Getting Kubernetes service/application information from VoltConsole - Virtual K8s section

    1. Select the ‘Namespace’ in which ‘Virtual K8s’. From the configuration menu choose ‘Applications’ and select ‘Virtual K8s’ from the options pane.

    SelectVk8s
    Figure: Select vK8s

    1. Select the Virtual K8s listed above to see the Kubernetes objects.

    Vk8sObj
    Figure: vK8s Objects

    1. Select the ‘Service’ tab which lists all the Kubernetes service objects with namespace and port information which can be used in the endpoint configuration.

    Vk8sSrvcObj
    Figure: vK8s Service Objects

  2. Configure Endpoint Address Information

    Key Value Optional
    1 Endpoint Address Endpoint address information. In this scenario it is ‘Service info’ NO
    2 Service Info Service name: <kubernetesservicename>.<namespaceofservice> (In this case namespace will be same as Volterra namespace)Service selector:Users can group multiple services using expressions (key/labels) NO
    3 Service name <kubernetesservicename>.<namespaceofservice> (In this case namespace will be same as Volterra namespace) NO
    4 Discovery Type Discovery type will always be ‘K8S’ in this scenario (Volterra Kubernetes Service) NO

Figure: Endpoint Address Service Info Config Options

Vk8sDiscType
Figure: Endpoint Address Service Info Config with vK8s Discovery Type

  1. Select where the endpoint should be discovered using ‘Select ref’

    Key Value Optional
    1 RefOrSelector Refers to a location where endpoint has to be discovered. Supported values: Site, Virtual Site and Virtual Network NO
    2 Select ref A selection menu to select an entity described above NO

Table: Endpoint Address Reference Selector

EPAddRefSelector
Figure: Endpoint Address Reference Selector

Any reference object (site, virtual site and virtual network) has to be created and listed before configuring this field. All the available object list will be displayed on a cascading menu where users can choose one or more objects.

EPSiteRefSelection
Figure: Endpoint Site Reference Selection

  1. Configuring Port and Protocol

    Key Value Optional
    1 Port Refers to port on which the service is serving. NO
    2 Protocol Defaults to TCP YES

    Table: Endpoint Site Port and Protocol

    EPPortProto
    Figure: Endpoint Site Port and Protocol

With the steps above user can discover a service endpoint using ‘Service Info’ on a location specified using selector. Once the service is discovered the object can be used with other configuration objects of Volterra platform.

EPCreated
Figure: Endpoint Created

Service Discovery using Service Info - Public Cloud Kubernetes Services (EKS,AKS)

Note: This section requires an extra configuration object ‘Discovery’.

  1. Create a Discovery configuration object in ‘System’ namespace.

    1. Select the ‘system’ from ‘namespace’ menu and select ‘Discovery’ from the ‘Manage’ section and choose ‘Discovery’ from ‘Site Management’ section to add discovery.

    SDCreat
    Figure: Service Discovery Creation

    1. Provide general details for discovery object.
    Key Value Optional
    1 Name Name of the Discovery Object. NO
    2 Labels Labels associated to Discovery Object. A Key/Label is associated to the object which facilitates grouping. YES
    3 Description Description about Discovery object. A human readable description to identify and understand the object. YES

    Table: Service Discovery Config Options

    SDConfig
    Figure: Service Discovery Config Options

    1. Configuring Access info and Config Type

      Key Value Optional
      1 Access Info Access information to external Kubernetes cluster. Supported: K8s, Consul NO
      2 Config Type Access config type provided. Supported: Kubeconfig url NO

      Table: Service Discovery Config Options

    SDConfigOptions
    FFigure: Service Discovery Config Options

    Key Value Optional
    3 Kubeconfig url Kubeconfig of external Kubernetes cluster NO
    4 Secret info oneof Encoded pattern of Kubeconfig File. Users can use one of the supported methods: Clear Secret info, Wingman secret info, Vault secret info, Blindfold secret info NO
    5 Url Encoded Kubeconfig file. In case user selects Secret info: Clear secret info. Provides base64 encoded string in Url. NO
    6 Secret encoding type Defaults to base64 YES

    Table: Service Discovery Config Options

    SDKubecfgOpts
    Figure: Service Discovery Kubeconfig URL Options

    SDKubecfgClSecInfOpt
    Figure: Service Discovery Kubeconfig URL Clear Secret info Options

    1. Configuring Type, Subdomain and DNS Mode

      Key Value Optional
      7 Network Type Defaults to ‘VIRTUALNETWORKSITE_LOCAL’. Users can choose other types which are configured on the SItes. YES
      8 Discovery Type K8s in this scenario NO
      9 Delegation Type Supported: DNSDelegation and PublishService NO
      10 DNS Mode Users can use KUBEDNS or COREDNS on Kubernetes NO

      Table: Service Discovery Config Options

    SDKubecfgClSecInfOpt
    Figure: Service Discovery Config Options

    With this configuration Volteraa will discover all the services on the external Kubernetes environment.

  2. Select desired Namespace (or) create a namespace where endpoint with endpoint address has to be created.

    NavNS
    Figure: Navigate to Namespace

  3. From the configuration menu choose ‘Manage’ and select ‘Endpoints’ from the options pane. Select ‘Add endpoint’ on the top.

    EPCreat
    Figure: Endpoint Creation

  4. Configure endpoint general information

    Key Value Optional
    1 Name Name of the Endpoint Object. This refers to the Endpoint object created in a specific namespace. NO
    2 Labels Labels associated to Endpoint Object. A Key/Label is associated to the object which facilitates grouping. YES
    3 Description Description about EndpointObject. A human readable description to identify and understand the object. YES

    Table: Endpoint Config Options

    EPConfOpts
    Figure: Endpoint Config Options

  5. Getting Kubernetes service/application information

    Users can use Kubeconfig of AKS or EKS to get the service information

  6. Configure Endpoint Address Information

    Key Value Optional
    1 Endpoint Address Endpoint address information. In this scenario it is ‘Service info’ NO
    2 Service Info Service name: <kubernetesservicename>.<namespaceofservice> (In this case namespace refers to Kubernetes Namespace on EKS/AKS cluster)Service selector:Users can group multiple services using expressions (key/labels) NO
    3 Service name <kubernetesservicename>.<namespaceofservice> (In this case namespace will be same as Volterra namespace) NO
    4 Discovery Type Discovery type will always be ‘K8S’ in this scenario (Volterra Kubernetes Service) NO

    Table: Endpoint Address Service Info Config Options

    EPConfOptAddSrvcInfo
    Figure: Endpoint Address Service Info Config Options

  7. Select where the endpoint should be discovered using ‘Select ref’

    Key Value Optional
    1 RefOrSelector Refers to a location where endpoint has to be discovered. Supported values: Site, Virtual Site and Virtual Network NO
    2 Select ref A selection menu to select an entity described above NO

    Table: Endpoint Address Reference Selector

    EPAddRefSelector
    Figure: Endpoint Address Reference Selector

    Any reference object (site, virtual site and virtual network) has to be created and listed before configuring this field. All the available object list will be displayed on a cascading menu where users can choose one or more objects.

    EPSiteRefSelection
    Figure: Endpoint Site Reference Selection

  8. Configuring Port and Protocol

    Key Value Optional
    1 Port Refers to port on which the service is serving. NO
    2 Protocol Defaults to TCP YES

    Table: Endpoint Port and Protocol

    EPPortProto
    Figure: Endpoint Port and Protocol

    With the steps above user can discover a service endpoint from external Kubernetes providers using ‘Service Info’ on a location specified using selector. Once the service is discovered the object can be used with other configuration objects of Volterra platform.

Service Discovery using Consul

  • Note: This section requires already functional Consul enabled to perform service discovery on the users Kubernetes clusters.
  • Note: This section requires an extra configuration object ‘Discovery’

SDConsulNode
Figure: Service Discovery Consul Node

SDConsulSrvc
Figure: Service Discovery Consul Service

  1. Create a Discovery configuration object in ‘System’ namespace.

    1. Select the ‘system’ from ‘namespace’ menu and select ‘Discovery’ from the ‘Manage’ section and choose ‘Discovery’ from ‘Site Management’ section to add discovery.

    SDCreat
    Figure: Service Discovery Creation

    1. Provide general details for discovery object.
    Key Value Optional
    1 Name Name of the Discovery Object. NO
    2 Labels Labels associated to Discovery Object. A Key/Label is associated to the object which facilitates grouping. YES
    3 Description Description about Discovery object. A human readable description to identify and understand the object. YES

    Table: Service Discovery Config Options

    SDConfOpts
    Figure: Service Discovery Config Options

    1. Configuring Access info and Config Type
    Key Value Optional
    4 Access Info Access information to external Kubernetes cluster. Consul in this scenario NO
    5 API Server Consul connection information. User can provide a IP/DNS of Consul server that is reachable from VoltConsole NO
    6 Server Name A unique name to identify a specific Consul cluster YES
    7 Certificate Information Certs to be used for connecting to Consul YES
    8 Scheme HTTP/HTTPS YES
    9 Username/Password Credentials to access Consul server YES

    Table: Service Discovery Config Options

    SDConsConfOpts
    Figure: Service Discovery Consul Config Options

    SDConsConfOpts
    Figure: Service Discovery Consul Config Options

    1. Configuring Type, Subdomain and DNS Mode
    Key Value Optional
    10 Network Type Defaults to ‘VIRTUALNETWORKSITE_LOCAL’. Users can choose other types which are configured on the SItes. YES
    11 Discovery Type K8s in this scenario NO
    12 Delegation Type Supported: DNSDelegation and PublishService NO
    13 DNS Mode Users can use KUBEDNS or COREDNS on Kubernetes NO

    Table: Service Discovery Consul Config Options

    SDNWTypeOpt
    Figure: Service Discovery Network Type Config Options

    With this configuration Volterra reads all the discovered services seamlessly from COnsul server providing in the configuration above.

  2. Select desired Namespace (or) create a namespace where endpoint with endpoint address has to be created.

    NavNS
    Figure: Navigate to Namespace

  3. From the configuration menu choose ‘Manage’ and select ‘Endpoints’ from the options pane. Select ‘Add endpoint’ on the top.

    EPCreate
    Figure: Endpoint Creation

  4. Configure endpoint general information

    Key Value Optional
    1 Name Name of the Endpoint Object. This refers to the Endpoint object created in a specific namespace. NO
    2 Labels Labels associated to Endpoint Object. A Key/Label is associated to the object which facilitates grouping. YES
    3 Description Description about EndpointObject. A human readable description to identify and understand the object. YES

    Table: Endpoint Config Options

    EPConfOpts
    Figure: Endpoint Config Options

  5. Getting Kubernetes service/application information

    Users can use Consul UI or COnsul CLI to get the service information. In this case users can directly use the ‘Service Name’ as discovered in the Consul and omit any namespace information.

  6. Configure Endpoint Address Information

    Key Value Optional
    1 Endpoint Address Endpoint address information. In this scenario it is ‘Service info’ NO
    2 Service Info Service name: <kubernetesservicename>.<namespaceofservice> (In this case namespace refers to Kubernetes Namespace on EKS/AKS cluster)Service selector:Users can group multiple services using expressions (key/labels) NO
    3 Service name Name of the service same as discovered on Consul NO
    4 Discovery Type Discovery type will be ‘CONSUL’ in this scenario. NO

    Table: Endpoint Config Options

    EPDiscTypeCOnsul
    Figure: Endpoint Discovery Type Consul Config

  7. Select where the endpoint should be discovered using ‘Select ref’

    Key Value Optional
    1 RefOrSelector Refers to a location where endpoint has to be discovered. Supported values: Site, Virtual Site and Virtual Network NO
    2 Select ref A selection menu to select an entity described above NO

    Table: Endpoint Address Reference Selector

    EPAddRefSelector
    Figure: Endpoint Address Reference Selector

    Any reference object (site, virtual site and virtual network) has to be created and listed before configuring this field. All the available object list will be displayed on a cascading menu where users can choose one or more objects.

    EPSiteRefSelection
    Figure: Endpoint Site Reference Selection

  8. Configuring Port and Protocol

    Key Value Optional
    1 Port Refers to port on which the service is serving. NO
    2 Protocol Defaults to TCP YES

    Table: Endpoint Port and Protocol

    EPPortProto
    Figure: Endpoint Port and Protocol

With the steps above user can discover a service endpoint from existing Consul server using ‘Service Info’ on a location specified using selector. Once the service is discovered the object can be used with other configuration objects of Volterra platform.

https://dev.volterra.us/apidocs/#tag/Discovery


Volterra Concepts


API References