Skip to content

Service Location#

A service location is a Kubernetes cluster on which Ametnes provisions and runs your data services. You register the cluster as a location in your Ametnes Cloud account, install the Ametnes Cloud agent into it, and every service you create in that location runs on that cluster.

A service location can be any conformant Kubernetes cluster:

Deployment Examples
Managed public cloud Amazon EKS, Google Kubernetes Engine (GKE), Azure Kubernetes Service (AKS)
Self-managed / VM A Kubernetes cluster running on a VM (kubeadm, k3s or similar)
On-premises An on-premises cluster such as RKE2

A dedicated cluster is recommended but not required, and you can register more than one location and spread services across them (for example, one per region).

Setting up#

1. Install the Ametnes Cloud agent#

After selecting a Kubernetes cluster to act as your service location:

  1. Add the Helm repository.

    helm repo add ametnes https://ametnes.github.io/helm && helm repo update
    
  2. Generate a UUID on your command line with uuidgen.

    26F522B3-E412-44D0-9992-F47F03F3192B
    
  3. Install the Ametnes Cloud agent and set agent.config.location.

    helm upgrade --install --create-namespace --namespace ametnes-system ametnes-cloud-agent ametnes/cloud-agent --set agent.config.location=26F522B3-E412-44D0-9992-F47F03F3192B
    

2. Register the service location#

In your Ametnes Cloud console account, create a service location with:

  1. User Supplied Id: 26F522B3-E412-44D0-9992-F47F03F3192B
  2. Name: DemoDsl
  3. Code: USE2
  4. Click Create.

After a short while the service location comes online and you can start creating services in it.

The id must match

The User Supplied Id in the console must match agent.config.location in the agent install — that is how the agent binds to the location.

Capabilities#

A service location advertises what it can do, and you can see these in the Ametnes Cloud console when you select the location. A typical location provides:

Capability Description
Network exposure A shared load balancer, scoped to the location or project, that publishes service endpoints with public and/or private visibility.
Telemetry Service health, status and events — and, where enabled, metrics and logs — shipped to the Ametnes control plane.
Storage The storage classes available for service volumes.
Scheduling Node placement using taints, tolerations and affinity.
Services The service kinds the location can run.

Configuration#

Service location settings are managed from the Ametnes Cloud console.

Visibility#

The console controls the visibility a service location allows (public and/or private) and the default used when a service does not choose one. Services can select a visibility within what the location allows — see Network Access Resources.

Telemetry#

Telemetry is shipped to the Ametnes control plane and is managed from the console for the location. It covers resource health, status and events and, where enabled for the location, service and system metrics and logs. You view it in the console; there is no separate monitoring stack to run in the location.

Agent configuration#

A few settings are supplied to the Ametnes Cloud agent at install time (or with a Helm upgrade) because they depend on your cluster rather than on Ametnes policy:

Setting Purpose
agent.config.location Binds the agent to the service location (required).
agent.config.resource_endpoint Control-plane endpoint the agent talks to.
agent.config.namespace Namespace the agent runs in.
agent.config.persistence Default storage classes for service volumes.
agent.config.resources.<kind> Per-kind storage and scheduling defaults.
agent.tls.trust Additional trusted CA certificates.
agent.config.proxy HTTP/HTTPS proxy for agent egress.
agent.config.http / agent.config.deploy / agent.config.worker Control-plane timeouts, deployment throttling and retry behaviour.

Storage classes#

If no storage class is configured, the agent uses the cluster's default storage class for all service volumes. Set a global class, or override it per service kind:

agent:
  config:
    persistence:
      writeOnceStorageClass: 'AdslEfs'
      writeManyStorageClass: 'AdslEfs'
    resources:
      service/neo4j:4.2:
        persistence:
          storageClass: 'gp2'

Scheduling (taints, tolerations and affinity)#

If your nodes are tainted, configure tolerations and affinity so service workloads land on the right nodes — globally, or per service kind:

agent:
  config:
    tolerations:
      - key: ametnes.io/role
        operator: Equal
        value: GeneralNode
        effect: NoSchedule
    affinity:
      - matchExpressions:
          - key: ametnes.io/role
            operator: In
            values:
              - GeneralNode
    resources:
      service/neo4j:4.2:
        tolerations:
          - key: ametnes.io/role
            operator: Equal
            value: MLNode
            effect: NoSchedule

TLS trust and proxy#

If your environment intercepts outbound TLS or requires an egress proxy, add the additional CA certificates and proxy settings the agent should trust. See Data Service Location for the full agent.tls.trust and agent.config.proxy configuration.

Next#