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:
-
Add the Helm repository.
-
Generate a UUID on your command line with
uuidgen. -
Install the Ametnes Cloud agent and set
agent.config.location.
2. Register the service location#
In your Ametnes Cloud console account, create a service location with:
- User Supplied Id:
26F522B3-E412-44D0-9992-F47F03F3192B - Name:
DemoDsl - Code:
USE2 - 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.