import requests
url = "https://platform.ankra.app/api/v1/clusters/hetzner/{cluster_id}/k3s-disabled-components"
payload = { "k3s_disabled_components": [] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({k3s_disabled_components: []})
};
fetch('https://platform.ankra.app/api/v1/clusters/hetzner/{cluster_id}/k3s-disabled-components', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request PUT \
--url https://platform.ankra.app/api/v1/clusters/hetzner/{cluster_id}/k3s-disabled-components \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"k3s_disabled_components": []
}
'{
"k3s_disabled_components": [
"<string>"
],
"resource_ids": [
"<string>"
],
"control_plane_count": 123,
"applies": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Update Hetzner K3s Disabled Components Endpoint
Replace the k3s packaged components the platform keeps disabled on this running cluster (k3s —disable), for example [“traefik”] on a cluster that brings its own ingress. k3s distribution only. The list is stored on every k8s node definition of the cluster. The maintenance read lane compares each control plane’s k3s server config against it within about five minutes and flags the ones missing an entry; the reconcile lane then patches the config and restarts k3s on one control plane at a time, in the cluster’s k8s update chain. Control planes already carrying every entry are not touched. Invalid states answer 409 with a detail message: a kubeadm or Scaleway cluster, no k8s node resources, a cluster of another provider, a list that drops a stored entry (re-enabling a bundled component is not supported yet, so the list only grows), a list that adds coredns (load-bearing for in-cluster DNS), and any change while a node update, version upgrade or node restart is in progress on the cluster.
import requests
url = "https://platform.ankra.app/api/v1/clusters/hetzner/{cluster_id}/k3s-disabled-components"
payload = { "k3s_disabled_components": [] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({k3s_disabled_components: []})
};
fetch('https://platform.ankra.app/api/v1/clusters/hetzner/{cluster_id}/k3s-disabled-components', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request PUT \
--url https://platform.ankra.app/api/v1/clusters/hetzner/{cluster_id}/k3s-disabled-components \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"k3s_disabled_components": []
}
'{
"k3s_disabled_components": [
"<string>"
],
"resource_ids": [
"<string>"
],
"control_plane_count": 123,
"applies": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
k3s packaged components to keep disabled (k3s --disable). Required: the complete list to store, which has to contain every entry already stored (a list that drops one answers 409), so null or an empty list is accepted only while nothing is stored; an unknown or repeated component is a validation error at the entry's own location.
coredns, servicelb, traefik, local-storage, metrics-server, runtimes Response
Successful Response
The components stored on the cluster's k8s node definitions; empty when nothing is stored (the provider shape's own defaults apply).
The cluster's live k8s node resources (control planes and workers) the list is stored on.
How many of those resources are control planes, the nodes the disable list is rendered on.
How the stored list reaches the nodes: the read lane flags control planes missing an entry within about five minutes and the reconcile lane converges them one at a time.