{"slug":"kubernetes-deploying","title":"kubernetes-deploying","summary":"Deploy applications to Kubernetes — Deployments, Services, Ingress, ConfigMaps, Secrets, health checks, and scaling.","platform":"Cursor","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-08-12T22:23:32.094089Z","repo":{"url":"https://github.com/spencerpauly/awesome-cursor-skills","stars":813,"forks":149,"license":"CC0-1.0","updatedAt":"2026-08-02T02:41:53Z"},"bodyHtml":"<hr>\n<h2>name: kubernetes-deploying\ndescription: Deploy applications to Kubernetes — Deployments, Services, Ingress, ConfigMaps, Secrets, health checks, and scaling.\nuser-invocable: true</h2>\n<h1>Kubernetes Deploying</h1>\n<p>Deploy and manage applications on Kubernetes.</p>\n<h2>Core Resources</h2>\n<h3>Deployment</h3>\n<pre><code>apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-app\n  labels:\n    app: my-app\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: my-app\n  template:\n    metadata:\n      labels:\n        app: my-app\n    spec:\n      containers:\n        - name: my-app\n          image: my-registry/my-app:v1.2.3\n          ports:\n            - containerPort: 3000\n          resources:\n            requests:\n              cpu: 100m\n              memory: 128Mi\n            limits:\n              cpu: 500m\n              memory: 512Mi\n          livenessProbe:\n            httpGet:\n              path: /healthz\n              port: 3000\n            initialDelaySeconds: 10\n            periodSeconds: 30\n          readinessProbe:\n            httpGet:\n              path: /ready\n              port: 3000\n            initialDelaySeconds: 5\n            periodSeconds: 10\n          env:\n            - name: DATABASE_URL\n              valueFrom:\n                secretKeyRef:\n                  name: my-app-secrets\n                  key: database-url\n            - name: NODE_ENV\n              value: production\n</code></pre>\n<h3>Service</h3>\n<pre><code>apiVersion: v1\nkind: Service\nmetadata:\n  name: my-app\nspec:\n  selector:\n    app: my-app\n  ports:\n    - port: 80\n      targetPort: 3000\n  type: ClusterIP\n</code></pre>\n<h3>Ingress</h3>\n<pre><code>apiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: my-app\n  annotations:\n    cert-manager.io/cluster-issuer: letsencrypt-prod\nspec:\n  tls:\n    - hosts:\n        - app.example.com\n      secretName: my-app-tls\n  rules:\n    - host: app.example.com\n      http:\n        paths:\n          - path: /\n            pathType: Prefix\n            backend:\n              service:\n                name: my-app\n                port:\n                  number: 80\n</code></pre>\n<h3>ConfigMap &amp; Secret</h3>\n<pre><code>apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: my-app-config\ndata:\n  LOG_LEVEL: info\n  FEATURE_FLAGS: '{\"darkMode\": true}'\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: my-app-secrets\ntype: Opaque\nstringData:\n  database-url: postgresql://user:pass@host:5432/db\n  api-key: sk-abc123\n</code></pre>\n<h2>Common Commands</h2>\n<pre><code># Apply manifests\nkubectl apply -f k8s/\n\n# Check deployment status\nkubectl rollout status deployment/my-app\n\n# View pods\nkubectl get pods -l app=my-app\n\n# View logs\nkubectl logs -f deployment/my-app\n\n# Execute into a pod\nkubectl exec -it &lt;pod-name&gt; -- /bin/sh\n\n# Scale\nkubectl scale deployment/my-app --replicas=5\n\n# Rollback\nkubectl rollout undo deployment/my-app\n\n# Port forward for local debugging\nkubectl port-forward svc/my-app 3000:80\n</code></pre>\n<h2>Deployment Strategies</h2>\n<table>\n<thead>\n<tr>\n<th>Strategy</th>\n<th>How</th>\n<th>When</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Rolling update (default)</td>\n<td>Replace pods one at a time</td>\n<td>Most deployments</td>\n</tr>\n<tr>\n<td>Recreate</td>\n<td>Kill all old pods, start new ones</td>\n<td>When you can't run two versions simultaneously</td>\n</tr>\n<tr>\n<td>Blue/green</td>\n<td>Run two full environments, switch traffic</td>\n<td>Need instant rollback</td>\n</tr>\n<tr>\n<td>Canary</td>\n<td>Route small % of traffic to new version</td>\n<td>High-risk changes</td>\n</tr>\n</tbody>\n</table>\n<p>Rolling update config:</p>\n<pre><code>spec:\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxSurge: 1\n      maxUnavailable: 0\n</code></pre>\n<h2>Health Checks</h2>\n<p>Always set both:</p>\n<ul>\n<li><strong>livenessProbe</strong>: \"Is the process healthy?\" — restarts the pod if it fails</li>\n<li><strong>readinessProbe</strong>: \"Can it handle traffic?\" — removes from service if it fails</li>\n</ul>\n<p>Common probe types:</p>\n<ul>\n<li><code>httpGet</code>: Hit an HTTP endpoint (most common)</li>\n<li><code>exec</code>: Run a command in the container</li>\n<li><code>tcpSocket</code>: Check if a port is open</li>\n</ul>\n<h2>Horizontal Pod Autoscaler</h2>\n<pre><code>apiVersion: autoscaling/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: my-app\nspec:\n  scaleTargetRef:\n    apiVersion: apps/v1\n    kind: Deployment\n    name: my-app\n  minReplicas: 2\n  maxReplicas: 10\n  metrics:\n    - type: Resource\n      resource:\n        name: cpu\n        target:\n          type: Utilization\n          averageUtilization: 70\n</code></pre>\n<h2>Tips</h2>\n<ul>\n<li>Always set resource requests and limits</li>\n<li>Use namespaces to isolate environments (<code>dev</code>, <code>staging</code>, <code>prod</code>)</li>\n<li>Never put secrets in plaintext YAML committed to git — use Sealed Secrets, SOPS, or external secret managers</li>\n<li>Tag images with specific versions, never use <code>:latest</code> in production</li>\n<li>Set <code>PodDisruptionBudget</code> for high-availability workloads</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":4516,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-08-12T22:24:26.954938Z","sha256":"6C803663410EEEC721F19A141EEBCEA09DACA5E670A1B8E4DEA90A1CC96AD202","sizeBytes":1943},"review":null,"source":{"repositoryUrl":"https://github.com/spencerpauly/awesome-cursor-skills","path":"resources/kubernetes-deploying","license":"CC0-1.0","commit":"99cd2655788456cc1c685944dcf8c2de82c1ded4","subtreeSha":"7ECF8C5414DB15253E913340F0B5AB47B4EA2B09CC24556CE02762B2E6E57696","lastSyncedAt":"2026-09-25T06:49:08.872487Z"},"reviewedAt":"2026-08-12T22:26:01.708813Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/spencerpauly/awesome-cursor-skills/tree/main/resources/kubernetes-deploying"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install spencerpauly-awesome-cursor-skills@llmmart"},{"target":"git","command":"git clone https://github.com/spencerpauly/awesome-cursor-skills.git"}]}