k8s/argo optimizations
This commit is contained in:
parent
5c6cef2227
commit
c193f35a0c
5 changed files with 124 additions and 2 deletions
|
|
@ -22,6 +22,7 @@ spec:
|
||||||
rollingUpdate:
|
rollingUpdate:
|
||||||
maxSurge: 1
|
maxSurge: 1
|
||||||
maxUnavailable: 0
|
maxUnavailable: 0
|
||||||
|
minReadySeconds: 5
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
app: hrrr-point-rs
|
app: hrrr-point-rs
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@
|
||||||
# for scheduler bin-packing without accidentally changing when HPA
|
# for scheduler bin-packing without accidentally changing when HPA
|
||||||
# decides to add a replica.
|
# decides to add a replica.
|
||||||
#
|
#
|
||||||
# The corresponding Deployments have their `spec.replicas` removed so
|
# The corresponding Deployments omit their spec.replicas so ArgoCD's
|
||||||
# Flux's periodic reconcile doesn't fight HPA's live scaling.
|
# periodic reconcile doesn't fight HPA's live scaling.
|
||||||
---
|
---
|
||||||
apiVersion: autoscaling/v2
|
apiVersion: autoscaling/v2
|
||||||
kind: HorizontalPodAutoscaler
|
kind: HorizontalPodAutoscaler
|
||||||
|
|
|
||||||
|
|
@ -13,3 +13,5 @@ resources:
|
||||||
- service.yaml
|
- service.yaml
|
||||||
- metrics-service.yaml
|
- metrics-service.yaml
|
||||||
- hpa.yaml
|
- hpa.yaml
|
||||||
|
- pdb.yaml
|
||||||
|
- network-policy.yaml
|
||||||
|
|
|
||||||
108
k8s/network-policy.yaml
Normal file
108
k8s/network-policy.yaml
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
# Minimal ingress policy for a home cluster. Default-deny within the
|
||||||
|
# namespace, then allow:
|
||||||
|
# - Web traffic to hot pods on :5000 (cloudflared ingress)
|
||||||
|
# - Prometheus scrape traffic on :5000 (prop metrics) and :9100 (Rust workers)
|
||||||
|
# - Erlang distribution (EPMD + ephemeral ports) between prop + backfill pods
|
||||||
|
#
|
||||||
|
# Egress is unrestricted — pods need to reach Postgres, NFS (10.0.19.103),
|
||||||
|
# HRRR (skippy + NOAA S3), and IEM.
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: prop-allow-web
|
||||||
|
namespace: prop
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: prop
|
||||||
|
tier: hot
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
ingress:
|
||||||
|
# Web traffic from cloudflared (any source, port :5000).
|
||||||
|
- from: []
|
||||||
|
ports:
|
||||||
|
- port: 5000
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: prop-allow-metrics
|
||||||
|
namespace: prop
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: prop
|
||||||
|
tier: hot
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
ingress:
|
||||||
|
# Prometheus scrape via apiserver proxy or NodePort.
|
||||||
|
- from:
|
||||||
|
- namespaceSelector: {} # any namespace
|
||||||
|
ports:
|
||||||
|
- port: 5000
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: grid-rs-allow-metrics
|
||||||
|
namespace: prop
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: prop-grid-rs
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
ingress:
|
||||||
|
- from:
|
||||||
|
- namespaceSelector: {}
|
||||||
|
ports:
|
||||||
|
- port: 9100
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: hrrr-point-allow-metrics
|
||||||
|
namespace: prop
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: hrrr-point-rs
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
ingress:
|
||||||
|
- from:
|
||||||
|
- namespaceSelector: {}
|
||||||
|
ports:
|
||||||
|
- port: 9100
|
||||||
|
protocol: TCP
|
||||||
|
---
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: NetworkPolicy
|
||||||
|
metadata:
|
||||||
|
name: prop-allow-epmd
|
||||||
|
namespace: prop
|
||||||
|
spec:
|
||||||
|
podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: prop
|
||||||
|
policyTypes:
|
||||||
|
- Ingress
|
||||||
|
ingress:
|
||||||
|
# Erlang distribution within the cluster (libcluster). EPMD listens on
|
||||||
|
# 4369; actual distribution uses ephemeral ports negotiated via EPMD.
|
||||||
|
- from:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: prop
|
||||||
|
ports:
|
||||||
|
- port: 4369
|
||||||
|
protocol: TCP
|
||||||
|
- from:
|
||||||
|
- podSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: prop
|
||||||
11
k8s/pdb.yaml
Normal file
11
k8s/pdb.yaml
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
apiVersion: policy/v1
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
name: prop
|
||||||
|
namespace: prop
|
||||||
|
spec:
|
||||||
|
minAvailable: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: prop
|
||||||
|
tier: hot
|
||||||
Loading…
Add table
Reference in a new issue