In een aantal use cases is het handig om een VPS via een intern/private network met je Kubernetes-cluster kunnen laten communiceren. In deze handleiding koppel je één of meer VPS’en aan het private network van een bestaand Kubernetes-cluster met behulp van onze REST-API.
Benodigdheden
- Een Kubernetes-cluster bij TransIP.
- REST-API-toegang inclusief een access token, zie ‘De TransIP REST-API gebruiken’.
- Een of meer VPS’en in hetzelfde account (bij voorkeur in dezelfde regio/availability zone).
- Lens of Kubectl
- Optioneel Tipctl (command-line tool voor het gebruik van de REST-API).
Je VPS aan je Kubernetes-cluster koppelen
Stap 1
Ieder Kubernetes-cluster komt automatisch met een private network waarin Kubernetes-nodes zijn opgenomen. Het private network van een Kubernetes-cluster is terug te vinden met de private network gerelateerde calls van onze REST-API. Als je meerdere private networks en/of Kubernetes-clusters hebt kan het echter lastig zijn te overzien welk private network bij welk Kubernetes-cluster hoort. Om dit makkelijker te maken, achterhaal je eerst het UUID van één of meer van je Kubernetes-nodes.
Log in op het controlepaneel en selecteer het gewenste cluster.

Stap 2
Selecteer vervolgens de Node-pool (een Node-pool is een verzameling van Kubernetes-nodes in een cluster met dezelfde configuratie) waarin de nodes zich bevinden waar je de VPS via een private network mee wil laten communiceren.

Stap 3
Noteer de UUID van alle nodes in je Node-pool, bijvoorbeeld 37e82827-d282-4d19-8c69-cdc1a0026378.

Stap 4
Achterhaal nu via command-line met een cURL-commando, of via de Tipctl-tool de naam (niet het UUID) van het private network waar de node uit stap 3 in is opgenomen:
cURL
Vervang in het commando hieronder:
- <accesstoken> (regel 2) door een REST-API access token, zie ‘access tokens’ in deze handleiding.
- <node-UUID> (regel 5) door één van de UUIDs die je in stap 3 hebt genoteerd, bijvoorbeeld 37e82827-d282-4d19-8c69-cdc1a0026378
curl -s \
-H "Authorization: Bearer <accesstoken>" \
-H "Content-Type: application/json" \
"https://api.transip.nl/v6/private-networks" \
| jq -r --arg u "<node-UUID>" '
(if type=="array" then . else (.privateNetworks? // []) end)
| .[]
| select([.connectedVpses[]? | .uuid] | index($u))
| .name
'
De output geeft je de naam van je private network, bijvoorbeeld: transip-privatenetwork123
Tipctl:
Vervang <node-UUID> in regel 2 door één van de UUIDs die je in stap 3 hebt genoteerd, bijvoorbeeld 37e82827-d282-4d19-8c69-cdc1a002
tipctl privatenetwork:getall 2>/dev/null \
| jq -r --arg u "<node-UUID>" '
(if type=="array" then . else (.privateNetworks? // []) end)
| .[]
| select([.connectedVpses[]? | .uuid] | index($u))
| .name
'
De output geeft je de naam van je private network, bijvoorbeeld: transip-privatenetwork123
Stap 5
Achterhaal vervolgens de interne/private IP-adressen die door je nodes gebruikt worden: het is belangrijk om je VPS straks een IP-adres in dezelfde IP-range te geven en niet een bestaand intern IP-adres te gebruiken. Je kunt ook hiervoor Kubectl of Lens gebruiken.
Kubectl
Achterhaal het interne IP-adres per node met het commando hieronder. Vervang <node-UUID> door de UUID van een van je nodes en herhaal het commando voor iedere node in je node-pool (met het unieke UUID van de betreffende node).
kubectl describe node <node-UUID> | grep InternalIP
Noteer het interne/private IP-adres van alle nodes, bijvoorbeeld 10.128.128.1, 10.128.128.2, etc.
Lens
Ga in Lens naar je cluster > nodes > selecteer een node > noteer de ‘InternallIP’ onder ‘Addresses’ van iedere node.

Stap 6
Je hebt nu de naam van het private network en alle interne/private IP-adressen van je Kubernetes-nodes. Koppel nu eerst de VPS aan het private network. Gebruik hiervoor ook weer cURL of tipctl afhankelijk van welke optie je in stap 4 gebruikt hebt.
cURL:
Vervang in het commando hieronder:
- <accesstoken> (regel 3) door een REST-API access token, zie ‘access tokens’ in deze handleiding.
- <vpsnaam> (regel 7) door de naam van de VPS die je aan het private network van je Kubernetes-cluster wil toevoegen, bijvoorbeeld transip-vps1.
- <privatenetworknaam> (laatste regel) door de naam van het private network die je in stap 4 hebt genoteerd, bijvoorbeeld transip-privatenetwork123.
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accesstoken>" \
-d '
{
"action": "attachvps",
"vpsName": "<vpsnaam>"
}
' \
"https://api.transip.nl/v6/private-networks/<privatenetworknaam>"
Tipctl:
Vervang in het commando hieronder:
- <privatenetworknaam> door de naam van het private network die je in stap 4 hebt genoteerd, bijvoorbeeld transip-privatenetwork123.
- <vpsnaam> door de naam van de VPS die je aan het private network van je Kubernetes-cluster wil toevoegen, bijvoorbeeld transip-vps1
tipctl privatenetwork:attachvps <privatenetworknaam> <vpsnaam>
Stap 7
Almost there! Geef je VPS een minuutje de tijd: er wordt automatisch een extra private network-adapter aan je VPS gekoppeld. Kijk bijvoorbeeld in een Linux-distro met het commando ‘ip a’ of in Windows met ‘ipconfig’ of je een nieuwe adapter terugziet (vaak genaamd ens9).
Koppel vervolgens een intern/private network IP-adres aan je nieuwe netwerkadapter zoals beschreven in deze handleiding voor Linux distros en deze handleiding voor Windows.
Voor Linux met behulp van Netplan kan de configuratie er nu bijvoorbeeld uitzien zoals hieronder. Dit voorbeeld komt uit Debian 13 met een volledig statische configuratie voor publieke en private IP-adressen:
network:
version: 2
ethernets:
ens3:
match:
macaddress: "52:54:00:11:22:6f"
dhcp4: false
dhcp6: false
set-name: "ens3"
addresses:
- 136.144.123.12/24
- 136.144.123.34/24
- 2a01:7c8:aabb:cc::1/48
- 2a01:7c8:aabb:dd::2/48
routes:
- to: default
via: 136.144.12.1
- to: default
via: 2a01:7c8:aabb::1
ens7:
dhcp4: false
addresses:
- 192.168.0.1/24
ens9:
dhcp4: false
addresses:
- 10.128.128.4/24
Gefeliciteerd! Je bent nu klaar en kun je de werking direct testen met behulp van een ping commando (vervang 10.128.128.1 door het interne IP-adres van een van je nodes).
ping 10.128.128.1
Je VPS ontkoppelen van het private network van je Kubernetes-cluster
Je VPS ontkoppel je met cURL of tipctl op bijna dezelfde manier als waarop je hem gekoppeld hebt aan het private network van je Kubernetes-cluster:
cURL:
Vervang in het commando hieronder:
- <accesstoken> (regel 3) door een REST-API access token, zie ‘access tokens’ in deze handleiding.
- <vpsnaam> (regel 7) door de naam van de VPS die je aan het private network van je Kubernetes-cluster wil toevoegen, bijvoorbeeld transip-vps1.
- <privatenetworknaam> (laatste regel) door de naam van het private network die je in stap 4 hebt genoteerd, bijvoorbeeld transip-privatenetwork123.
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accesstoken>" \
-d '
{
"action": "detachvps",
"vpsName": "<vpsnaam>"
}
' \
"https://api.transip.nl/v6/private-networks/<privatenetworknaam>"
Tipctl:
Vervang in het commando hieronder:
- <privatenetworknaam> door de naam van het private network die je in stap 4 hebt genoteerd, bijvoorbeeld transip-privatenetwork123.
- <vpsnaam> door de naam van de VPS die je aan het private network van je Kubernetes-cluster wil toevoegen, bijvoorbeeld transip-vps1
tipctl privatenetwork:detachvps <privatenetworknaam> <vpsnaam>
Je hebt nu een VPS gekoppeld aan het private network van je Kubernetes-cluster en het interne verkeer correct gerouteerd. Gebruik deze aanpak om aanvullende VPS’en toe te voegen of je netwerksegmentatie verder te verfijnen.