Van nul naar productie in 30 minuten
Stap-voor-stap: cluster aanmaken, applicatie deployen en domein koppelen.
Deze handleiding brengt u van een nieuw account naar een draaiende applicatie in productie. Geschatte leestijd: 12 minuten.
Vereisten
- Een actief Proxy Platform account (registreer hier )
kubectlgeïnstalleerd op uw lokale machine- Een container image van uw applicatie (bijv. in een registry)
Stap 1: Cluster aanmaken
Log in op de Control Panel
Ga naar platform.proxy.nl en log in met uw credentials.
Maak een nieuw cluster aan
Navigeer naar Clusters → Nieuw cluster en configureer:
Naam: mijn-productie-cluster
Regio: eu-west-1
Kubernetes: 1.30
Control Plane: 3 nodes (HA)
Workers: 3x cx41Wacht op provisioning
Het cluster is binnen 5-8 minuten gereed. De status verandert naar Running.
Stap 2: Kubectl configureren
Download het kubeconfig-bestand en configureer uw lokale omgeving:
# Download kubeconfig via Control Panel → Cluster → Kubeconfig downloaden
mv ~/Downloads/kubeconfig.yaml ~/.kube/config
# Verifieer de verbinding
kubectl get nodesVerwachte output:
NAME STATUS ROLES AGE VERSION
server-1 Ready control-plane,etcd,master 5m v1.30.2+rke2r1
server-2 Ready control-plane,etcd,master 4m v1.30.2+rke2r1
server-3 Ready control-plane,etcd,master 4m v1.30.2+rke2r1
worker-1 Ready <none> 3m v1.30.2+rke2r1
worker-2 Ready <none> 3m v1.30.2+rke2r1
worker-3 Ready <none> 3m v1.30.2+rke2r1Stap 3: Applicatie deployen
Maak een namespace en deploy uw applicatie:
kubectl create namespace mijn-appapiVersion: apps/v1
kind: Deployment
metadata:
name: mijn-app
namespace: mijn-app
spec:
replicas: 3
selector:
matchLabels:
app: mijn-app
template:
metadata:
labels:
app: mijn-app
spec:
containers:
- name: app
image: registry.example.com/mijn-org/mijn-app:latest
ports:
- containerPort: 8080
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
---
apiVersion: v1
kind: Service
metadata:
name: mijn-app
namespace: mijn-app
spec:
selector:
app: mijn-app
ports:
- port: 80
targetPort: 8080kubectl apply -f deployment.yamlStap 4: Domein koppelen
Hoe ingress en load balancing werken op het platform
U hoeft zelf geen ingress controller (zoals NGINX of Traefik) en geen load balancer te installeren. Beide zijn al onderdeel van uw cluster, maar werken anders dan u wellicht gewend bent:
- Ingress draait op Cilium. Het platform gebruikt de ingebouwde
Cilium ingress controller in plaats van losse NGINX- of Traefik-pods. U vindt
daarom géén
ingress-nginx- oftraefik-pods in uw cluster; dat is met opzet zo. Verwijs in uw Ingress naar de classcilium(zie het voorbeeld hieronder). Zonder de juisteingressClassNamewordt uw Ingress niet opgepakt en blijft hij inactief. - De load balancer draait buiten het cluster. Bij het aanmaken van uw
cluster maakt het platform automatisch een cloud load balancer aan. Die staat
dus niet als pod of service in
kubectl, maar op infrastructuurniveau. De load balancer stuurt verkeer door naar de Cilium ingress:- poort
443(HTTPS) en80(HTTP) → de ingress in uw cluster - poort
6443→ de Kubernetes API
- poort
Het IP-adres van de load balancer vindt u in de Control Panel onder Cluster → Netwerk.
Controleer dat de cilium ingress class beschikbaar is:
kubectl get ingressclassVerwachte output:
NAME CONTROLLER PARAMETERS AGE
cilium cilium.io/ingress-controller <none> 7dConfigureer vervolgens een Ingress voor uw domein. Let op de regel
ingressClassName: cilium:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mijn-app
namespace: mijn-app
spec:
ingressClassName: cilium
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: mijn-app
port:
number: 80kubectl apply -f ingress.yamlVergeet niet een DNS A-record aan te maken dat app.example.com verwijst
naar het load balancer IP van uw cluster. Dit vindt u in de Control Panel
onder Cluster → Netwerk.
TLS-certificaten (optioneel)
Standaard wordt cert-manager niet meegeleverd in uw cluster. Wilt u
automatisch Let’s Encrypt-certificaten, installeer dan eerst cert-manager en een
ClusterIssuer, en breid uw Ingress uit met de TLS-configuratie:
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: cilium
tls:
- hosts:
- app.example.com
secretName: mijn-app-tls
# ... rules zoals hierbovenStap 5: Verifiëren
# Check of alle pods draaien
kubectl get pods -n mijn-app
# Check de ingress (kolom CLASS moet 'cilium' tonen)
kubectl get ingress -n mijn-app
# Test de applicatie
curl https://app.example.comWerkt uw Ingress niet? Controleer als eerste of de kolom CLASS bij
kubectl get ingress op cilium staat. Is die leeg, dan ontbreekt de regel
ingressClassName: cilium in uw Ingress en pakt de controller hem niet op.
Volgende stappen
- Firewall configureren: beperk netwerktoegang
- GitOps inrichten: automatisch deployen vanuit Git
- Monitoring bekijken: Grafana dashboards