DevOps et Infrastructure

VérifiéSûr

Déployez des applications avec Docker et Kubernetes, automatisez avec CI/CD, gérez l'infrastructure en code et configurez le cloud et le réseau.

Spar Skills Guide Bot
DevOpsIntermédiaire
26/07/2026
Claude Code
#docker#kubernetes#ci-cd#infrastructure-as-code#github-actions

Recommandé pour

Synthèse automatique

Cette skill guide la conteneurisation d'applications, le déploiement Kubernetes, la mise en place de pipelines CI/CD GitHub Actions et le provisionnement d'infrastructure avec Terraform.

Points forts

  • Fournit un Dockerfile multi-stage prêt à l'emploi avec utilisateur non-root et HEALTHCHECK
  • Inclut un manifeste Kubernetes complet avec ressources, liveness et readiness probes
  • Donne un pipeline GitHub Actions en trois étapes (test, build, deploy) directement réutilisable
  • Propose un arbre de décision pour choisir entre Docker Compose, Kubernetes et autres options

Limites

  • Les exemples sont centrés sur Python/FastAPI et GitHub Actions, peu transposables tels quels à d'autres stacks
  • Le provisionnement Terraform et la stack d'observabilité sont annoncés mais aucun exemple concret n'est fourni
  • La configuration SASMP (retry, exit codes, logging hooks) est déclarative et n'est pas explicitée en instructions exécutables
Quand l'utiliser

À utiliser lorsqu'il faut créer ou durcir un Dockerfile, écrire un manifeste Kubernetes ou structurer un pipeline CI/CD de bout en bout.

Quand l'éviter

À éviter pour du conseil cloud spécifique (coûts AWS, IAM fin) ou du débogage d'incident en production, que la skill ne couvre pas.

Analyse de sécurité

Sûr
Score qualité84/100

The skill provides standard DevOps guidance and examples (Dockerfile, Kubernetes manifests, GitHub Actions, troubleshooting commands). It does not instruct destructive, exfiltrating, obfuscated, or safety-disabling actions; kubectl/docker commands are ordinary and non-destructive.

Aucun point d'attention détecté

Comment cette analyse est faite

Exemples

Containerize a Python app
Containerize my FastAPI application with Docker using a multi-stage build, a non-root user and a health check.
Kubernetes deployment
Write a Kubernetes Deployment and Service for my api-server image with 3 replicas, resource limits and liveness/readiness probes.
GitHub Actions pipeline
Set up a GitHub Actions CI/CD pipeline that runs pytest, builds and pushes a Docker image, then deploys to Kubernetes on main.

name: devops description: Deploy applications with Docker and Kubernetes, automate with CI/CD, manage infrastructure with code, and configure cloud platforms and networking. sasmp_version: "2.0.0" bonded_agent: 06-devops-infrastructure bond_type: PRIMARY_BOND

=== PRODUCTION-GRADE SKILL CONFIG (SASMP v2.0.0) ===

atomic_operations:

  • CONTAINERIZATION
  • KUBERNETES_DEPLOYMENT
  • CI_CD_PIPELINE
  • INFRASTRUCTURE_PROVISIONING

parameter_validation: query: type: string required: true minLength: 5 maxLength: 2500 platform: type: string enum: [aws, gcp, azure, on-prem] required: false orchestrator: type: string enum: [kubernetes, docker-swarm, ecs] required: false

retry_logic: max_attempts: 3 backoff: exponential initial_delay_ms: 2000

logging_hooks: on_invoke: "skill.devops.invoked" on_success: "skill.devops.completed" on_error: "skill.devops.failed"

exit_codes: SUCCESS: 0 INVALID_INPUT: 1 DEPLOYMENT_FAILED: 2 SECURITY_ISSUE: 3

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

  1. Containerize: Create optimized Docker images
  2. Orchestrate: Configure Kubernetes or Docker Swarm
  3. Automate: Set up CI/CD pipelines
  4. Provision: Deploy infrastructure with Terraform
  5. 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

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/devops-infrastructure-ms1aw5km/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/devops-infrastructure-ms1aw5km' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/devops-infrastructure-ms1aw5km/download' --output '.skill-downloads/devops-infrastructure-ms1aw5km/SKILL.md.part' && mv '.skill-downloads/devops-infrastructure-ms1aw5km/SKILL.md.part' '.skill-downloads/devops-infrastructure-ms1aw5km/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.

Claude Code
test -f '.skill-downloads/devops-infrastructure-ms1aw5km/SKILL.md' && test -s '.skill-downloads/devops-infrastructure-ms1aw5km/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/devops' && cp -R '.skill-downloads/devops-infrastructure-ms1aw5km' '.claude/skills/devops'

OpenSkills

OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.

Installation officielle d’OpenSkills
openskills install './.skill-downloads/devops-infrastructure-ms1aw5km'

openskills read 'devops-infrastructure-ms1aw5km'

La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.

Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.

openskills sync

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/devops-infrastructure-ms1aw5km/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires