Architectuur
Deze pagina beschrijft de technische architectuur van het HappyHorizon DevOps platform. Je vindt hier een overzicht van de infrastructuur, clusteropzet, componenten en operationele strategieën.
Overzicht Infrastructuur
| Eigenschap |
Waarde |
| Primaire cloudprovider |
Google Cloud Platform (GCP) |
| Regio |
europe-west4 (Nederland) |
| Kubernetes-implementatie |
Google Kubernetes Engine (GKE) |
Kubernetes Cluster Architectuur
| Cluster |
Doel |
Kenmerken |
| Development |
Ontwikkeling, testen, staging |
Geïsoleerd, productie-equivalent, CI-validatie |
| Productie |
Productie voor eindgebruikers |
Maximale beschikbaarheid, beveiliging, monitoring |
Voorbeeld cluster manifest
apiVersion: v1
kind: Namespace
metadata:
name: development
Componenten
Containerization
| Eigenschap |
Waarde |
| Technologie |
Docker |
| Containerregistry |
GitHub Container Registry (ghcr.io) |
| Implementatie |
Containers op GKE-nodes |
Docker build & push
docker build -t ghcr.io/org/app:latest .
docker push ghcr.io/org/app:latest
Databases
| Eigenschap |
Development |
Productie |
| Database |
MySQL |
MySQL |
| Connectiviteit |
Service discovery |
Service discovery, beveiligd |
| Routing |
Kubernetes Services |
Kubernetes Services |
Connection string voorbeeld
DATABASE_URL: "mysql://user:pass@db-host:3306/appdb"
Netwerk en Verkeer
| Eigenschap |
Waarde |
| Ingress-controller |
NGINX Ingress Controller |
| SSL-terminatie |
Ja |
| Routing |
Via Ingress |
Ingress manifest
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: app-ingress
spec:
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: app-service
port:
number: 80
Certificaatbeheer
| Eigenschap |
Waarde |
| Technologie |
cert-manager |
| Functionaliteit |
Geautomatiseerd SSL beheer |
| Integratie |
Let's Encrypt |
Cert-manager manifest
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: app-cert
spec:
secretName: app-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- app.example.com
Beveiligde Toegang
| Eigenschap |
Waarde |
| VPN-technologie |
WireGuard |
| Cluster toegang |
Versleuteld |
| Communicatie |
On-premise ↔ cloud |
Deployment Strategie
CI/CD Pipeline
| Stap |
Omschrijving |
| 1 |
Code commit in repository |
| 2 |
Geautomatiseerde build en test |
| 3 |
Omgevingsspecifieke deployment |
GitHub Actions workflow
name: CI/CD Pipeline
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build
run: docker build -t ghcr.io/org/app:latest .
- name: Push
run: docker push ghcr.io/org/app:latest
GitOps
| Eigenschap |
Waarde |
| Technologie |
ArgoCD |
| Configuratie |
Declaratief, manifest sync |
| Integratie |
Helm, Kustomize |
ArgoCD app manifest
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: app
spec:
project: default
source:
repoURL: https://github.com/org/app-config
path: manifests
targetRevision: HEAD
destination:
server: https://kubernetes.default.svc
namespace: default
syncPolicy:
automated: {}
Operationeel Beheer
Backup en Disaster Recovery
| Eigenschap |
Waarde |
| Platform |
Backup for GKE |
| Strategie |
Periodieke snapshots |
Backup CLI voorbeeld
gcloud container backups create --cluster=prod-cluster --location=europe-west4
Monitoring en Observability
| Eigenschap |
Tools |
| Monitoringstack |
Prometheus, Google Cloud Monitoring, Grafana |
| Logging |
Google Cloud Logging, Prometheus, Sentry |
Prometheus scrape config
scrape_configs:
- job_name: 'kubernetes-apiservers'
kubernetes_sd_configs:
- role: endpoints
Gerelateerde Documentatie