Secure, sovereign cloud operations for EuroWind's critical analytics
Sovereign cloud experience on any infrastructure with strong enterprise economics
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: weather-analytics
labels:
app: weather-analytics
tier: backend
spec:
replicas: 3
selector:
matchLabels:
app: weather-analytics
template:
metadata:
labels:
app: weather-analytics
tier: backend
spec:
serviceAccountName: weather-sa
containers:
- name: weather-api
image: registry/eurowind/weather-analytics:v42
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
envFrom:
- secretRef:
name: weather-secrets
resources:
requests:
cpu: "500m"
memory: "512Mi"
limits:
cpu: "2"
memory: "2Gi"
readinessProbe:
httpGet: { path: /health, port: 8080 }
initialDelaySeconds: 10
livenessProbe:
httpGet: { path: /health, port: 8080 }
initialDelaySeconds: 20
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
name: weather-analytics
spec:
type: ClusterIP
selector:
app: weather-analytics
ports:
- name: http
port: 80
targetPort: 8080
---
# ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: weather-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- hosts: [weather.eurowind.internal]
secretName: weather-tls
rules:
- host: weather.eurowind.internal
http:
paths:
- path: /analytics
pathType: Prefix
backend:
service:
name: weather-analytics
port:
number: 80
---
# hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: weather-analytics-hpa
spec:
minReplicas: 3
maxReplicas: 12
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: weather-analytics
---
# networkpolicy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: weather-analytics-policy
spec:
podSelector:
matchLabels:
app: weather-analytics
policyTypes: [Ingress, Egress]
ingress:
- from:
- namespaceSelector:
matchLabels: { name: ingress }
egress:
- to:
- podSelector:
matchLabels: { app: postgres }
---
# plus: Secret management, RBAC, cert rotation,
# CI glue, rollout strategy, and drift handling
# ci.yml (single declarative file)
prepare:
steps:
- name: Install Dependencies
command: pnpm install
- name: Run Tests
command: pnpm test
run:
weather-analytics:
plan: 21
env:
FORECAST_MODEL: arima-v3
API_TOKEN: VAULT_WEATHER_API_TOKEN
network:
paths:
- port: 8080
path: /analytics
steps:
- name: Start Service
command: pnpm start
weather-db:
provider:
name: postgres
version: v1
plan:
id: 0
Compact end-to-end flow from development to operations
ci.yml, CI profiles, API/CLI automation.Decision Drivers: Cost Efficiency and Sovereignty