Agent skill
devops
Deploy applications with Docker and Kubernetes, automate with CI/CD, manage infrastructure with code, and configure cloud platforms and networking.
Install this agent skill to your Project
npx add-skill https://github.com/pluginagentmarketplace/custom-plugin-backend/tree/main/skills/devops
SKILL.md
DevOps & Infrastructure Skill
Bonded to: devops-infrastructure-agent
Quick Start
# Invoke devops skill
"Containerize my Python application with Docker"
"Set up a CI/CD pipeline with GitHub Actions"
"Deploy my app to Kubernetes"
Instructions
- Containerize: Create optimized Docker images
- Orchestrate: Configure Kubernetes or Docker Swarm
- Automate: Set up CI/CD pipelines
- Provision: Deploy infrastructure with Terraform
- Monitor: Configure observability stack
Docker Best Practices
Optimized Dockerfile
# Multi-stage build for smaller images
FROM python:3.12-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt
FROM python:3.12-slim
RUN useradd --create-home appuser
USER appuser
WORKDIR /app
COPY --from=builder /root/.local /home/appuser/.local
ENV PATH=/home/appuser/.local/bin:$PATH
COPY --chown=appuser:appuser . .
HEALTHCHECK --interval=30s --timeout=3s \
CMD curl -f http://localhost:8000/health || exit 1
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Image Checklist
- Use slim/alpine base images
- Multi-stage builds
- Non-root user
- Health checks
- .dockerignore file
Kubernetes Essentials
Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server
spec:
replicas: 3
selector:
matchLabels:
app: api-server
template:
metadata:
labels:
app: api-server
spec:
containers:
- name: api-server
image: myapp:v1.0.0
ports:
- containerPort: 8000
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 8000
readinessProbe:
httpGet:
path: /ready
port: 8000
CI/CD Pipeline (GitHub Actions)
name: CI/CD
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install -r requirements.txt
- run: pytest --cov=app tests/
build:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: docker/build-push-action@v5
with:
push: true
tags: myregistry/myapp:${{ github.sha }}
deploy:
needs: build
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- run: kubectl set image deployment/api-server api-server=myregistry/myapp:${{ github.sha }}
Decision Tree
Deployment need?
│
├─→ Simple app → Docker Compose
│
├─→ Production, scaling needed
│ ├─→ Cloud-native → Kubernetes
│ └─→ AWS only → ECS
│
└─→ Serverless → AWS Lambda / Cloud Functions
Troubleshooting
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Pod CrashLoopBackOff | App crash | Check logs: kubectl logs <pod> |
| ImagePullBackOff | Registry auth | Verify imagePullSecrets |
| OOMKilled | Memory limit | Increase limits or optimize |
| Pending pods | No resources | Scale cluster |
Debug Commands
# Pod status
kubectl get pods -o wide
# Pod logs
kubectl logs <pod> --previous
# Describe pod
kubectl describe pod <pod>
# Events
kubectl get events --sort-by='.lastTimestamp'
# Exec into pod
kubectl exec -it <pod> -- /bin/sh
Test Template
# tests/test_docker.py
import subprocess
class TestDockerBuild:
def test_dockerfile_builds_successfully(self):
result = subprocess.run(
["docker", "build", "-t", "test-image", "."],
capture_output=True, text=True
)
assert result.returncode == 0
def test_container_starts_and_healthy(self):
subprocess.run(["docker", "run", "-d", "--name", "test", "test-image"])
# Wait for health check
result = subprocess.run(
["docker", "inspect", "--format", "{{.State.Health.Status}}", "test"],
capture_output=True, text=True
)
assert "healthy" in result.stdout
Resources
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
languages
Master programming languages for backend development. Learn language selection, fundamentals, and ecosystem for JavaScript, Python, Go, Java, C#, PHP, Ruby, and Rust.
api-design
Design and build professional APIs with REST, GraphQL, and gRPC. Master authentication, documentation, testing, and operational concerns.
architecture
Master architectural design with SOLID principles, design patterns, microservices, and event-driven systems. Learn to design scalable backend systems.
testing
Backend testing strategies and test automation. Unit, integration, E2E, and load testing with best practices.
databases
Master relational and NoSQL databases. Learn PostgreSQL, MySQL, MongoDB, Redis, and other technologies for data persistence, optimization, and scaling.
messaging
Message queues and event-driven backend architecture. RabbitMQ, Kafka, pub/sub patterns, and async communication.
Didn't find tool you were looking for?