| name | kubernetes |
| description | Kubernetes container orchestration for deployment, scaling, and management |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":"devops","category":"orchestration"} |
What I do
- Create and manage Kubernetes manifests
- Deploy applications using kubectl and Helm
- Configure services, ingress, and networking
- Set up persistent storage
- Implement config maps and secrets
- Manage deployments with rolling updates
- Configure resource limits and auto-scaling
When to use me
When deploying containerized applications to Kubernetes clusters.
Pod
apiVersion: v1
kind: Pod
metadata:
name: my-app
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:latest
ports:
- containerPort: 8080
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: app
image: my-app:v1
ports:
- containerPort: 8080
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: db-credentials
key: url
Service
apiVersion: v1
kind: Service
metadata:
name: my-app
spec:
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
type: ClusterIP
Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app
port:
number: 80
ConfigMap & Secrets
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
database.json: |
{"host": "localhost", "port": 5432}
---
apiVersion: v1
kind: Secret
metadata:
name: app-secret
type: Opaque
stringData:
api-key: your-api-key-here
StatefulSet
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mysql
spec:
serviceName: mysql
replicas: 3
selector:
matchLabels:
app: mysql
template:
spec:
containers:
- name: mysql
image: mysql:8
volumeMounts:
- name: data
mountPath: /var/lib/mysql
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: ["ReadWriteOnce"]
resources:
requests:
storage: 10Gi
Helm Chart
helm install my-release my-chart/
helm upgrade my-release my-chart/ --set image.tag=v2
helm install my-release my-chart/ -f values.yaml
replicaCount: 3
image:
repository: my-app
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 80
resources:
limits:
cpu: 500m
memory: 256Mi