Loading...
Loading...
Comprehensive toolkit for generating, validating, and managing Kubernetes YAML resources. Use this skill when creating Kubernetes manifests (Deployments, Services, ConfigMaps, StatefulSets, etc.), working with Custom Resource Definitions (CRDs), or generating production-ready K8s configurations.
npx skill4agent add akin-ozer/cc-devops-skills k8s-yaml-generatorapiVersion: argoproj.io/v1alpha1, kind: ApplicationapiVersion: networking.istio.io/v1beta1, kind: VirtualServiceapiVersion: cert-manager.io/v1, kind: Certificatemcp__context7__resolve-library-idlibraryName: "<project-name>"libraryName: "argo-cd"libraryName: "istio"libraryName: "cert-manager"/org/project/org/project/versionmcp__context7__get-library-docscontext7CompatibleLibraryID: "/org/project/version"
topic: "specific CRD type or feature"
page: 1context7CompatibleLibraryID: "/argoproj/argo-cd/v2.9.0", topic: "application crd spec", page: 1context7CompatibleLibraryID: "/istio/istio/1.20.0", topic: "virtualservice", page: 1pageWebSearch"<CRD-name> <version> spec documentation""ArgoCD Application v1alpha1 spec documentation""Istio VirtualService v1beta1 configuration""cert-manager Certificate v1 spec fields"labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-abc123
app.kubernetes.io/version: "1.0.0"
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: myplatform
app.kubernetes.io/managed-by: claude-codeannotations:
description: "Purpose of this resource"
contact: "team@example.com"resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"securityContextimagePullPolicy: AlwaysIfNotPresentapiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: default
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/version: "1.0.0"
app.kubernetes.io/component: backend
app.kubernetes.io/part-of: myplatform
app.kubernetes.io/managed-by: claude-code
spec:
replicas: 3
selector:
matchLabels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
template:
metadata:
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/version: "1.0.0"
app.kubernetes.io/component: backend
app.kubernetes.io/part-of: myplatform
app.kubernetes.io/managed-by: claude-code
spec:
containers:
- name: myapp
image: myapp:1.0.0
ports:
- containerPort: 8080
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5apiVersion: v1
kind: Service
metadata:
name: myapp-service
namespace: default
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/component: backend
app.kubernetes.io/part-of: myplatform
app.kubernetes.io/managed-by: claude-code
spec:
type: ClusterIP # or LoadBalancer, NodePort
selector:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
ports:
- protocol: TCP
port: 80
targetPort: 8080
name: httpapiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config
namespace: default
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/component: config
app.kubernetes.io/part-of: myplatform
app.kubernetes.io/managed-by: claude-code
data:
app.properties: |
key1=value1
key2=value2
config.json: |
{
"setting": "value"
}Skill: devops-skills:k8s-yaml-validatoryamllintkubeconform# Generated and validated Kubernetes resource
# Resource: <Type>
# Namespace: <namespace>
# Validation: Passed
<YAML content here># Apply the resource
kubectl apply -f <filename>.yaml
# Verify the resource
kubectl get <resource-type> <name> -n <namespace>
# Check status
kubectl describe <resource-type> <name> -n <namespace>---apiVersion: v1
kind: ConfigMap
metadata:
name: myapp-config
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/part-of: myplatform
data:
key: value
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/part-of: myplatform
spec:
# deployment spec with matching labels
---
apiVersion: v1
kind: Service
metadata:
name: myapp-service
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/part-of: myplatform
spec:
# service spec with matching selectorextensions/v1beta1networking.k8s.io/v1apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp
namespace: argocd
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/part-of: myplatform
app.kubernetes.io/managed-by: argocd
spec:
project: default
source:
repoURL: https://github.com/org/repo
targetRevision: HEAD
path: manifests
destination:
server: https://kubernetes.default.svc
namespace: myapp
syncPolicy:
automated:
prune: true
selfHeal: trueapiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: myapp
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/component: networking
app.kubernetes.io/part-of: myplatform
spec:
hosts:
- myapp.example.com
gateways:
- myapp-gateway
http:
- route:
- destination:
host: myapp-service
port:
number: 8080apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: myapp-tls
namespace: default
labels:
app.kubernetes.io/name: myapp
app.kubernetes.io/instance: myapp-prod
app.kubernetes.io/component: tls
app.kubernetes.io/part-of: myplatform
spec:
secretName: myapp-tls-secret
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- myapp.example.com