- Voorlopige (werkende) setup tem verification service, bunny integratie, ...
This commit is contained in:
159
documentation/Production Setup/cluster-install.md
Normal file
159
documentation/Production Setup/cluster-install.md
Normal file
@@ -0,0 +1,159 @@
|
||||
# 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
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user