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

160 lines
4.3 KiB
Markdown

# 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
```