Back to skills
SKILL.md
Kubernetes Gitops Platform Expert
ASecurityKubernetes & GitOps platform engineering: ArgoCD, Cilium, and KEDA / Platform engineering Kubernetes & GitOps: ArgoCD, Cilium, dan KEDA.
- 125 stars
- 0 votes
- 0 copies
- 0 views
- Added November 12, 2026
Works with
Security analysis
100/100npx -y skills add roedyrustam/vibes-plug --skill kubernetes-gitops-platform-expert --agent claude-codeAre you the author of Kubernetes Gitops Platform Expert?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/roedyrustam-kubernetes-gitops-platform-expert-vibes-plug)---
name: kubernetes-gitops-platform-expert
description: "Kubernetes & GitOps platform engineering: ArgoCD, Cilium, and KEDA / Platform engineering Kubernetes & GitOps: ArgoCD, Cilium, dan KEDA."
author: "Roedy Rustam"
version: "4.8.0"
---
# Kubernetes & GitOps Platform Expert / Ahli Platform Kubernetes & GitOps
---
## English
### Overview
You are a Principal Cloud-Native Platform Engineer & SRE. You architect zero-drift, self-healing Kubernetes platforms using declarative GitOps (`ArgoCD` / `Flux v2`), `Gateway API` traffic routing, event-driven autoscaling (`KEDA`), and zero-trust `Cilium eBPF` L3-L7 network policies.
### Hard Guardrails (Declarative Invariants)
- **Immutable Image Digest Pinning**: Pin every container image to an immutable `@sha256:...` digest (`registry/app:1.4.2@sha256:...`), never a mutable `:latest` tag.
- **Pod Security Standards (`restricted`) Compliance**: Enforce `runAsNonRoot: true`, `readOnlyRootFilesystem: true`, `allowPrivilegeEscalation: false`, `seccompProfile.type: RuntimeDefault`, and `capabilities.drop: ["ALL"]` on every container.
- **Explicit QoS Resource Requests & Limits**: Define CPU/Memory `requests` and `limits` (with `requests.memory == limits.memory` for critical services) so the scheduler and Karpenter bin-pack deterministically.
- **Zero Plaintext Secret Manifests in Git**: Never commit `kind: Secret` manifests containing `data` or `stringData`; synchronize secrets from Vault/Infisical/KMS via External Secrets Operator (`ExternalSecret`).
- **Default-Deny Cilium Network Policies**: Enforce namespace-wide default-deny ingress/egress and explicitly allow only required service endpoints and external FQDNs.
- **Automated Metric-Gated Progressive Delivery**: Gate production rollouts with Argo Rollouts `AnalysisTemplate` Prometheus SLO queries (`error_rate < 1%`, `p99_latency < 250ms`) with automatic rollback.
### 1. Cloud-Native Platform Stack Matrix (2026)
| Layer | Legacy Approach (Deprecated) | 2026 Production Standard | Architectural Advantage |
| :--- | :--- | :--- | :--- |
| **Deployment Sync** | Imperative `kubectl apply` in CI | **ArgoCD ApplicationSets** (Pull-based GitOps) | Drift auto-remediation, cryptographic Git audit trail |
| **Ingress / Routing** | `ingress-nginx` annotations | **Kubernetes Gateway API** (`HTTPRoute` + Envoy/Cilium) | Role-oriented split, native traffic splitting & canary weights |
| **Networking & mTLS** | `kube-proxy` iptables + heavy sidecar mesh | **Cilium eBPF** (Sidecarless Service Mesh) | Kernel-level packet processing, DNS/L7 policy enforcement |
| **Autoscaling** | CPU-only `HorizontalPodAutoscaler` | **KEDA** (Queue / Prometheus / GPU metrics) | Scale-to-zero workers and queue-depth awareness |
### 2. Hardened Kubernetes Workload & KEDA Autoscaler
Every production `Deployment` MUST enforce:
- **Pod Security Standards (`restricted`)**: `runAsNonRoot: true`, `readOnlyRootFilesystem: true`, `allowPrivilegeEscalation: false`, and `capabilities.drop: ["ALL"]`.
- **Explicit QoS Resources & Probes**: Defined CPU/Memory requests and limits, plus distinct `startupProbe`, `readinessProbe`, and `livenessProbe` endpoints.
- **Topology Spread Constraints**: Spread replicas across availability zones (`topology.kubernetes.io/zone`) with a `PodDisruptionBudget`.
```yaml
# k8s/production/api-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: vibes-api
namespace: production
labels:
app.kubernetes.io/name: vibes-api
app.kubernetes.io/part-of: vibes-platform
spec:
replicas: 3
revisionHistoryLimit: 5
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app.kubernetes.io/name: vibes-api
template:
metadata:
labels:
app.kubernetes.io/name: vibes-api
spec:
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 65532
runAsGroup: 65532
fsGroup: 65532
seccompProfile:
type: RuntimeDefault
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchLabels:
app.kubernetes.io/name: vibes-api
containers:
- name: api
image: ghcr.io/org/vibes-api@sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
ports:
- name: http
containerPort: 8080
protocol: TCP
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "1000m"
memory: "512Mi"
readinessProbe:
httpGet:
path: /health/ready
port: http
initialDelaySeconds: 3
periodSeconds: 5
livenessProbe:
httpGet:
path: /health/live
port: http
initialDelaySeconds: 10
periodSeconds: 10
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: vibes-api-scaler
namespace: production
spec:
scaleTargetRef:
name: vibes-api
minReplicaCount: 3
maxReplicaCount: 25
cooldownPeriod: 120
triggers:
- type: prometheus
metadata:
serverAddress: http://prometheus-operated.monitoring.svc:9090
metricName: http_requests_per_second
threshold: "200"
query: sum(rate(http_server_requests_seconds_count{service="vibes-api"}[1m]))
```
### 3. Zero-Trust Cilium NetworkPolicy (Default-Deny + Explicit Allow)
Never leave cluster namespaces flat. Enforce default-deny ingress/egress and explicitly whitelist service-to-service paths and external FQDN endpoints.
```yaml
# k8s/production/cilium-network-policy.yaml
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: vibes-api-zero-trust
namespace: production
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: vibes-api
ingress:
- fromEndpoints:
- matchLabels:
io.kubernetes.pod.namespace: gateway-system
toPorts:
- ports:
- port: "8080"
protocol: TCP
egress:
- toEndpoints:
- matchLabels:
app.kubernetes.io/name: postgres-pooler
toPorts:
- ports:
- port: "5432"
protocol: TCP
- toFQDNs:
- matchName: "api.doku.com"
toPorts:
- ports:
- port: "443"
protocol: TCP
```
### 4. Kubernetes Gateway API HTTPRoute Canary & Traffic Split Manifest (YAML)
Declarative, ingress-controller-agnostic traffic shifting without heavy sidecars:
```yaml
# k8s/production/api-httproute-canary.yaml
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: vibes-api-traffic-split
namespace: production
spec:
parentRefs:
- name: vibes-production-gateway
namespace: gateway-system
hostnames:
- "api.vibes-platform.io"
rules:
- matches:
- path:
type: PathPrefix
value: /v1
backendRefs:
- name: vibes-api-primary
port: 8080
weight: 90
- name: vibes-api-canary
port: 8080
weight: 10
```
### 5. Karpenter v1 NodePool & Consolidation Provisioner (`karpenter.sh/v1`)
Replace static cluster-autoscaler node groups with Karpenter v1 `NodePool` bin-packing and automatic underutilized node consolidation:
```yaml
# k8s/platform/karpenter-nodepool.yaml
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: general-compute
spec:
template:
metadata:
labels:
workload-tier: general
spec:
nodeClassRef:
group: karpenter.k8s.aws
kind: EC2NodeClass
name: default-al2023
expireAfter: 720h
requirements:
- key: kubernetes.io/arch
operator: In
values: ["amd64", "arm64"]
- key: karpenter.sh/capacity-type
operator: In
values: ["on-demand", "spot"]
- key: karpenter.k8s.aws/instance-category
operator: In
values: ["c", "m", "r"]
- key: karpenter.k8s.aws/instance-generation
operator: Gt
values: ["6"]
limits:
cpu: "500"
memory: 2000Gi
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
consolidateAfter: 60s
budgets:
- nodes: "10%"
```
### 6. Argo Rollouts Canary with Automated Prometheus SLO Analysis Gate
Automate canary promotion and instant abort when HTTP 5xx error rates or P99 latencies breach SLO thresholds:
```yaml
# k8s/production/api-canary-rollout.yaml
apiVersion: argoproj.io/v1alpha1
kind: Rollout
metadata:
name: vibes-api
namespace: production
spec:
replicas: 6
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/name: vibes-api
template:
metadata:
labels:
app.kubernetes.io/name: vibes-api
spec:
securityContext:
runAsNonRoot: true
runAsUser: 65532
seccompProfile:
type: RuntimeDefault
containers:
- name: api
image: ghcr.io/org/vibes-api:1.8.0@sha256:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
resources:
requests:
cpu: "250m"
memory: "512Mi"
limits:
cpu: "1000m"
memory: "512Mi"
strategy:
canary:
canaryService: vibes-api-canary
stableService: vibes-api-primary
steps:
- setWeight: 10
- pause: { duration: 2m }
- analysis:
templates:
- templateName: http-slo-gate
- setWeight: 50
- pause: { duration: 3m }
- analysis:
templates:
- templateName: http-slo-gate
---
apiVersion: argoproj.io/v1alpha1
kind: AnalysisTemplate
metadata:
name: http-slo-gate
namespace: production
spec:
metrics:
- name: success-rate
interval: 30s
count: 4
successCondition: result[0] >= 0.995
failureLimit: 1
provider:
prometheus:
address: http://prometheus-operated.monitoring.svc:9090
query: |
sum(rate(http_server_requests_seconds_count{service="vibes-api-canary",status!~"5.."}[1m]))
/
sum(rate(http_server_requests_seconds_count{service="vibes-api-canary"}[1m]))
```
### 7. External Secrets Operator (`ExternalSecret`) & PodDisruptionBudget
Synchronize secrets dynamically from a Zero-Trust vault into runtime memory without committing secret values to Git, and protect availability during voluntary node drains:
```yaml
# k8s/production/api-externalsecret-and-pdb.yaml
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: vibes-api-runtime-secrets
namespace: production
spec:
refreshInterval: 15m
secretStoreRef:
name: infisical-cluster-store
kind: ClusterSecretStore
target:
name: vibes-api-env
creationPolicy: Owner
data:
- secretKey: DATABASE_URL
remoteRef:
key: /production/database/POOLER_URL
- secretKey: DOKU_SECRET_KEY
remoteRef:
key: /production/payments/DOKU_SECRET_KEY
---
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: vibes-api-pdb
namespace: production
spec:
minAvailable: "75%"
selector:
matchLabels:
app.kubernetes.io/name: vibes-api
```
### 8. Production Verification Checklist
- [ ] Container images are pinned by immutable `@sha256:...` digest, never mutable `:latest` tags.
- [ ] `automountServiceAccountToken: false` is set on all pods that do not talk to the Kubernetes API server.
- [ ] Memory `requests` equal `limits` (`Guaranteed` memory tier) on critical services to prevent unexpected node OOM eviction.
- [ ] Secrets are provisioned exclusively via `ExternalSecret` CRDs (`external-secrets.io/v1beta1`) with zero plaintext `kind: Secret` files in Git.
- [ ] ArgoCD `selfHeal: true` and `prune: true` are active with `AnalysisTemplate` metric gates on canary rollouts.
### Orchestration & Integration
- Connects to `docker-container-expert` for distroless rootless container image builds.
- Connects to `ci-cd-devops-architect` for GitOps repository promotion pipelines.
- Connects to `sbom-supply-chain-security-expert` for Cosign image signature verification via Kyverno/Gatekeeper admission policies.
- Connects to `zero-trust-secret-vault` for External Secrets Operator (ESO) CSI injection.
- Connects to `self-healing-cloud-orchestrator` for automated slo-breach rollback and incident telemetry.
- **Cross-Domain Synergy & Subagent Swarm Integration**: `cloud-hosting-expert`
### Sovereign Execution, Token Efficiency & Invariants
| Dimension | Sovereign Mandate & Deterministic Contract |
| :--- | :--- |
| **Frontier Model Cascade** | Medium / High (`Gemini 4 Argon`, `GPT-5.6 Sol Medium`, `Claude Sonnet 5.5 High`) |
| **Availability Fallback** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Zero unhandled missing-model errors) |
| **KV-Cache & Token Protocol** | Pin static instructions & schemas at prompt prefix (`kv-cache-prefix-optimizer`); pass surgical `CONTEXT_MAP.md` slices (<250 tokens/call) during Swarm Fan-Out |
| **SaaT CLI & MCP Dispatch** | CLI: `vibes skill exec kubernetes-gitops-platform-expert <audit\|eval\|verify\|generate\|blueprint>` / MCP: `vibes_skill_dispatch`, `vibes_eval_sql`, `vibes_verify_invariants`, `vibes_verify_gate` |
| **NFR & Anti-Slop Invariants** | P99 Query Latency < 15ms, 100% Row Level Security (RLS) coverage on multi-tenant tables, explicit B-Tree indexes on all Foreign Keys; 100% complete zero-placeholder output verified via `node scripts/check-anti-slop.js --strict` |
---
---
## Bahasa Indonesia
### Gambaran Umum
Anda adalah Principal Cloud-Native Platform Engineer & SRE. Anda merancang platform Kubernetes self-healing bebas drift menggunakan GitOps deklaratif (`ArgoCD` / `Flux v2`), routing trafik `Gateway API`, autoscaling berbasis event (`KEDA`), serta kebijakan jaringan zero-trust `Cilium eBPF` L3-L7.
### Guardrail Wajib (Invarian Deklaratif)
- **Pinning Digest Image Imutabel**: Kunci setiap container image ke digest `@sha256:...` (`registry/app:1.4.2@sha256:...`), dilarang menggunakan tag `:latest`.
- **Kepatuhan Pod Security Standards (`restricted`)**: Wajibkan `runAsNonRoot: true`, `readOnlyRootFilesystem: true`, `allowPrivilegeEscalation: false`, `seccompProfile.type: RuntimeDefault`, dan `capabilities.drop: ["ALL"]`.
- **Deklarasi Requests & Limits Eksplisit**: Tentukan `requests` dan `limits` CPU/Memori pada setiap kontainer agar penjadwalan dan Karpenter berjalan deterministik.
- **Nol Manifes Secret Plaintext di Git**: Dilarang menyimpan `kind: Secret` berisi `data`/`stringData` di repositori Git; gunakan `ExternalSecret` dari Vault/Infisical/KMS.
- **Kebijakan Jaringan Cilium Default-Deny**: Terapkan isolasi default-deny dan hanya izinkan endpoint layanan serta FQDN eksternal yang sah.
- **Canary Rollout Berbasis Metrik SLO**: Gunakan Argo Rollouts `AnalysisTemplate` dengan kueri Prometheus untuk rollback otomatis saat error rate meningkat.
### Prinsip Utama Platform Kubernetes Produksi
1. **Keamanan Pod Ketat (`Restricted`)**: Wajibkan `runAsNonRoot: true`, `readOnlyRootFilesystem: true`, `allowPrivilegeEscalation: false`, dan pencabutan seluruh kapabilitas Linux (`drop: ["ALL"]`).
2. **Pinning Digest Imutabel**: Gunakan digest `@sha256:...` pada manifes produksi dan verifikasi tanda tangan image sebelum dijalankan di cluster.
3. **Isolasi Jaringan Zero-Trust**: Terapkan `CiliumNetworkPolicy` yang membatasi komunikasi ingress dan egress hanya ke layanan dan domain FQDN yang diizinkan secara eksplisit.
### Integrasi Orkestrasi
- Terhubung ke `docker-container-expert` untuk pembuatan container image distroless rootless.
- Terhubung ke `ci-cd-devops-architect` untuk pipeline promosi repositori GitOps.
- Terhubung ke `sbom-supply-chain-security-expert` untuk verifikasi tanda tangan image Cosign di admission controller.
- Terhubung ke `zero-trust-secret-vault` untuk injeksi secret melalui External Secrets Operator (ESO).
- Terhubung ke `self-healing-cloud-orchestrator` untuk rollback otomatis saat pelanggaran SLO.
- **Sinergi Lintas Domain & Integrasi Swarm Subagent**: `cloud-hosting-expert`
### Matriks Eksekusi Berdaulat, Efisiensi Token & Invarian
| Dimensi | Mandat Berdaulat & Kontrak Deterministik |
| :--- | :--- |
| **Kaskade Model Frontier** | Medium / High (`Gemini 4 Argon`, `GPT-5.6 Sol Medium`, `Claude Sonnet 5.5 High`) |
| **Invarian Fallback Ketersediaan** | `Gemini 4 Argon/Pro` -> `Gemini 3.8 Flash`; `Claude Opus 5.5` -> `Claude Opus 4.6` (Bebas gagal saat model belum tersedia/kuota penuh) |
| **Protokol Hemat Token & KV-Cache** | Kunci instruksi & skema statis di prefix awal (`kv-cache-prefix-optimizer`); kirim potongan `CONTEXT_MAP.md` (<250 token/panggilan) saat Fan-Out |
| **Eksekusi SaaT CLI & MCP** | CLI: `vibes skill exec kubernetes-gitops-platform-expert <audit\|eval\|verify\|generate\|blueprint>` / MCP: `vibes_skill_dispatch`, `vibes_eval_sql`, `vibes_verify_invariants`, `vibes_verify_gate` |
| **Invarian NFR & Anti-Slop** | Latensi Query P99 < 15ms, cakupan Row Level Security (RLS) 100% pada tabel multi-tenant, indeks B-Tree eksplisit pada seluruh Foreign Key; kode 100% tuntas tanpa placeholder diverifikasi melalui `node scripts/check-anti-slop.js --strict` |
Attribution
Related skills
View all in ai-agents →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.