Files
eveAI/documentation/Production Setup/cluster-install.md

4.3 KiB

Cluster Install

Fase 1: Ingress Controller Setup

Stap 1: Installeer de NGINX Ingress Controller

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/cloud/deploy.yaml

Stap 2: Verifieer de Installatie

Kijk of de namespace is aangemaakt

kubectl get namespaces | grep ingress-nginx

Check of de pods worden gestart

kubectl get pods -n ingress-nginx

Check de services (dit is het belangrijkste!)

kubectl get services -n ingress-nginx

Je zou zoiets als dit moeten zien:

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller   NodePort    10.43.xxx.xxx   <none>        80:30080/TCP,443:30443/TCP   1m

Watch de pods tot ze ready zijn

kubectl get pods -n ingress-nginx -w

Stop met Ctrl+C als je dit ziet:

ingress-nginx-controller-xxx   1/1     Running   0          2m

Check de NodePorts, dit is cruciaal voor je Scaleway LoadBalancer configuratie:

kubectl get service ingress-nginx-controller -n ingress-nginx -o yaml | grep nodePort

Of een overzichtelijker weergave:

kubectl describe service ingress-nginx-controller -n ingress-nginx

Je zoekt naar iets zoals:

HTTP: Port 80 → NodePort 30080 (of een ander hoog nummer)
HTTPS: Port 443 → NodePort 30443 (of een ander hoog nummer)

Stap 3: Check de scaleway loadbalancer

Er werd normaal gezien automatisch een loadbalancer aangemaakt. Check of dit klopt. Deze is automatisch correct geconfigureerd en kan niet worden aangepast.

Stap 4: Verifieer de firewall rules

  • Ga in de console naar Compute - CPU & GPU Instances
  • Ga naar de security groups tab
  • Klik op de security group voor je cluster (Kapsule Default Security Group)
  • Ga naar de rules tab, en check of de poort (3xxxx) is toegevoegd aan de firewall rules, en voeg die toe indien nog niet aanwezig.
  • Stel dit eerst in voor de volledige ipv4 range

Stap 4: Test de Basis Setup

Test of de ingress controller intern bereikbaar is (vervang de IP en NodePort door je eigen):

kubectl run test-pod --image=curlimages/curl -it --rm -- curl -H "Host: evie.askeveai.com" http://172.16.16.5:31127

Er moet een 404 boodschap komen (dat is goed! Het betekent dat nginx draait)

Test of de ingress controller extern bereikbaar is (pas IP aan):

curl -H "Host: evie.askeveai.com" http://51.159.204.52

Fase 2: Deploy test applicatie

We hebben een kleine test applicatie geïntegreerd in staging-test-setup.yaml. Installeer deze via:

kubectl apply -f staging-test-setup.yaml

En check met

curl -H "Host: evie-staging.askeveai.com" http://51.159.204.52/verify/

Later Uitbreiden

Wanneer je echte services deploy, uncomment je de relevante ingress paths en deploy je de bijbehorende services. De verify service blijft beschikbaar voor debugging. Deze setup geeft je een professionele staging environment met ingebouwde monitoring en debug capabilities.

Fase 3: Configureer DNS

Maak het juist A-record aan in de DNS zone. Dit moet verwijzen naar de publieke IP van de loadbalancer.

Je kan testen met:

curl http://evie-staging.askeveai.com/verify/

In de browser zal dit waarschijnlijk niet werken, omdat de site nog niet is beveiligd met SSL.

Fase 4: Bunny CDN Setup

Eerst zorg je dat Bunny klaar is om te werken.

  • Creëer een Pull zone - evie-staging
  • Origin = http://[IP van load balancer]
  • Host header = evie-staging.askeveai.com
  • Force SSL - Aan

Daarna wijzig je A-record in de DNS zone. (waarschijnlijk verwijderen en CNAME record toevoegen)

Fase 5: Introductie Secure communication

Installatie van SSL Certificaat in de bunny pull zone

  • Voeg een hostname toe aan de bunny pull zone (evie-staging.askeveai.com)
  • Voeg een SSL certificaat toe aan de bunny pull zone (volg gewoon de instructies)
  • Enable Force SSL

Je kan checken met:

curl https://evie-staging.askeveai.com/verify/

Installatie cert-manager in de cluster

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.2/cert-manager.crds.yaml
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.2/cert-manager.yaml

En het cert-manager-setup.yaml manifest toepassen (zorgen dat email adres en domein correct zijn)

kubectl apply -f cert-manager-setup.yaml