The services
Ankra publishes seven services, each built on an open-source engine:
Managed Service Settings lists every setting of each one.
Who runs it
Every service in the catalogue runs on Your infrastructure: Ankra installs it on one of your clusters, and your team operates it. You own the cluster, the service’s availability and the cost of the capacity it uses. Ankra supplies the package, installs the plan you confirmed and keeps a record of the installation. Ankra-hosted services, which Ankra would run for you, are not available yet.How a service runs
- One stack, one namespace. Each service is deployed as a stack named after the service, into a namespace of the same name. Several services can share a cluster, including several of the same kind.
- The service owns its stack. Deleting the stack on its own is refused. To remove the service, delete it: that removes the stack and then deletes the namespace with its data, after you review the plan.
- Credentials are generated in the cluster. When a service is first installed, it generates its own password or keys and keeps them in a Kubernetes Secret in its namespace. Every later apply reuses them. Ankra never sees or stores the values, and deleting the service deletes them with its namespace.
- Cluster-internal only. Nothing is exposed outside the cluster. Applications reach the service at fixed in-cluster addresses.
- Connections are delivered inside the cluster. Each application environment the service was set up for, on the service’s cluster, receives a
<service>-connectionSecret in its own namespace on its next deploy, copied in the cluster from the service’s credentials Secret, and its workloads read it as environment variables such asDATABASE_URL. Ankra never sees the values. See Connect to a Managed Service. - Native deployment engine. The credentials are generated with a Helm lookup against the live cluster, which only Ankra’s native deployment engine evaluates. On an ArgoCD cluster every sync would generate new credentials under running applications, so Ankra only places services on native-engine clusters.
Health and readiness
Ankra reports two things about a running service, and they answer different questions: whether it is running as planned (health), and whether a client can connect to it (readiness).Health
Ankra observes each service about once a minute from its own synced view of the service’s cluster: the service’s workload against the size you chose, the Kubernetes Service its addresses name, the credentials Secret with every key the connection details list, and the stack that owns it. It never reads the Secret’s values. Each observation stands for five minutes. Health checks lists what is checked for each service.
Health describes the running service, not the operation that deployed it: a failed deployment whose workloads all run reads serving, and one that left a workload missing reads degraded at once. A cluster that is offline reads unknown, never degraded.
In the portal, each service in My services carries a Health badge, and the service’s page has a Service health section with the state, when it was observed and what decided it. Until Ankra has observed the service, the section reads Not observed. Health is not shown for a deleted service or while a service is being deleted.
Readiness
Health does not prove that your applications can connect. A serving PostgreSQL service has a ready primary and its credentials Secret, but that does not show a client can reach it and log in. Readiness does. Ankra checks readiness for every service it publishes, about every five minutes. The cluster’s agent starts a short-lived pod in the service’s namespace that connects to the address the service publishes, as a client would, with the credentials taken from the service’s credentials Secret by reference, and does one small round trip:
Everything a check writes is its own, named after the check run, and deleted in the same run. The one exception is the VictoriaLogs line: VictoriaLogs cannot delete single lines, so it stays in the
ankra_canary stream until your retention removes it. A query that selects your own streams never sees it.
The credentials never leave the cluster, and Ankra keeps no log of the check. A result stands for 15 minutes.
Readiness is reported on the service in the API, as
readiness and readiness_check on Get a managed service instance. The portal shows it on the service’s page and in My services: Ready, Verifying, Not ready (degraded), Not checked recently (stale) or Not verified (unverified). While a service reads unverified, check it yourself before you rely on it: see Check that the service answers.
Data policies
A data policy declares the region a cluster keeps data in and its data boundary. It is optional: you can set up services without one. Declare a policy when services must keep data within a boundary. Your organisation declares it in the cluster’s settings. Ankra records who declared it and does not verify the location. A cluster without a declared policy reads region and data boundaryunspecified. That boundary is shared by every cluster without a policy, and cannot be declared by hand.
Once a cluster declares a policy, it decides where a service may run:
- One service connects only environments within one data boundary. Environments in two boundaries need two services. A cluster that declares a policy and one that does not are in different boundaries, so one service cannot serve both.
- A cluster can declare that services bound to it must run on that cluster only.
Limits and good to know
- A finished deployment is not yet a ready service. A PostgreSQL service can report its deployment finished 30 to 100 seconds before the database accepts connections; any service’s readiness reads
verifyinguntil a check passes. - Readiness checks need a pod they can start. The check pods pull their images from Docker Hub (
postgres:16-alpinefor PostgreSQL,valkey/valkey,natsio/nats-boxandcurlimages/curlfor the others); a cluster that cannot pull the image in time cannot run the check, and readiness then readsstale. The PostgreSQL check pod sets no security context, so a namespace that enforces therestrictedPod Security Standard refuses it. The other check pods run as non-root with every capability dropped and a read-only root filesystem. On a cluster whose DNS domain is notcluster.localthe checks fail, as the published addresses do. - Connections are delivered within one cluster, on a deploy. An application environment receives a service’s connection on its next deploy after the service is running, not when the service is set up. An application on another cluster than the service is not connected for you: give it the values yourself, as in Connect from another cluster.
- No backups. Ankra does not back these services up yet. Do not keep data you cannot recreate in them without a backup of your own.
- Settings are fixed after setup. Changing, upgrading or recovering a service from Managed services is not available yet. You can delete a service and set it up again, which starts it with new credentials and none of its data.
- NATS runs a single server. The
natspackage has no clustered option yet. - OpenSearch runs a single node. An index created with replicas stays yellow.
- SeaweedFS keeps its data on one volume. It runs as a single pod and is unavailable while that pod restarts, which happens once, for about 40 seconds, the first time Ankra reconciles it after installation.
Related
Set up a managed service
Prerequisites, the four setup steps, and following the installation.
Connect to a managed service
Addresses, credential Secrets, and wiring them into an application.
Delete a managed service
Review what is removed and kept, confirm, and follow the deletion.
Managed service settings
Every setting of each service, and the health and readiness checks.
Applications
The applications whose environments use a service.