con un clic
net-kubernetes
Generate Kubernetes manifests and Helm charts for .NET applications
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Generate Kubernetes manifests and Helm charts for .NET applications
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Implement agile development practices and ceremonies for .NET projects
Automate Work Item -> Branch -> PR -> Evidence Pack for AI Coding Factory
Implement Scrum framework and team structures for .NET enterprise projects
Implement CQRS pattern with MediatR for .NET applications
Create Docker configuration for ASP.NET Core applications
Create domain models following Domain-Driven Design principles
| name | net-kubernetes |
| description | Generate Kubernetes manifests and Helm charts for .NET applications |
| license | MIT |
| compatibility | opencode |
| metadata | {"audience":".net-developers","framework":"kubernetes","patterns":"helm, kustomize"} |
I help you deploy .NET applications to Kubernetes:
Use this skill when:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}-api
labels:
app: {{ .Release.Name }}
component: api
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Release.Name }}
component: api
template:
metadata:
labels:
app: {{ .Release.Name }}
component: api
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "80"
prometheus.io/path: "/metrics"
spec:
serviceAccountName: {{ .Release.Name }}
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 2000
containers:
- name: api
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 80
protocol: TCP
env:
- name: ASPNETCORE_ENVIRONMENT
value: "{{ .Values.environment }}"
- name: ConnectionStrings__DefaultConnection
valueFrom:
secretKeyRef:
name: {{ .Release.Name }}-secrets
key: database-connection-string
resources:
limits:
cpu: {{ .Values.resources.limits.cpu }}
memory: {{ .Values.resources.limits.memory }}
requests:
cpu: {{ .Values.resources.requests.cpu }}
memory: {{ .Values.resources.requests.memory }}
livenessProbe:
httpGet:
path: /health/live
port: http
initialDelaySeconds: 10
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /health/ready
port: http
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-api
labels:
app: {{ .Release.Name }}
spec:
type: ClusterIP
ports:
- port: 80
targetPort: http
protocol: TCP
name: http
selector:
app: {{ .Release.Name }}
component: api
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-tls
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}-api
port:
number: 80
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Release.Name }}-api-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ .Release.Name }}-api
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: {{ .Values.autoscaling.targetCPUUtilization }}
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilization }}
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: {{ .Release.Name }}-api-pdb
spec:
minAvailable: 1
selector:
matchLabels:
app: {{ .Release.Name }}
component: api
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}-config
data:
appsettings.Kubernetes.json: |
{
"Logging": {
"LogLevel": {
"Default": "Information"
}
},
"Cors": {
"AllowedOrigins": ["{{ .Values.cors.allowedOrigins }}"]
}
}
apiVersion: v1
kind: Secret
metadata:
name: {{ .Release.Name }}-secrets
type: Opaque
stringData:
database-connection-string: "{{ .Values.database.connectionString }}"
jwt-secret: "{{ .Values.jwt.secret }}"
# values.yaml
replicaCount: 2
image:
repository: your-registry/your-app
tag: latest
pullPolicy: IfNotPresent
environment: Production
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 100m
memory: 256Mi
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilization: 70
targetMemoryUtilization: 80
ingress:
enabled: true
host: api.example.com
database:
connectionString: "Host=postgres;Database=app;Username=user;Password=pass"
jwt:
secret: "your-jwt-secret"
cors:
allowedOrigins: "https://example.com"
Use net-kubernetes skill to:
1. Generate Kubernetes deployment manifests
2. Create Helm chart for the application
3. Configure auto-scaling with HPA
4. Set up ingress with TLS
5. Create ConfigMaps and Secrets
I will generate complete Kubernetes manifests following cloud-native best practices.