Compétences clés du métier de DevOps
9 domaines : systèmes, réseau/sécurité, CI/CD, IaC, conteneurs/K8s, cloud, observabilité, scripting, DevSecOps & conformité.
CI/CD IaC Docker/K8s/Helm AWS/GCP/Azure/Scaleway OTel/Prom/Grafana DevSecOps
1) Systèmes — Linux / Windows Server
À retenir
- Linux : systemd, journald, permissions/ACL, SELinux/AppArmor, namespaces/cgroups.
- FS & stockage : LVM, RAID, tmpfs, tuning I/O (fio, iostat, blkio).
- Réseau hôte : iproute2, nftables/iptables, bonding/VLAN, DNS/Resolvers.
- Windows Server : AD/LDAP, GPO, IIS, PowerShell Remoting, WinRM.
Checklists
- Durcissement : SSH MFA, no-root login, auditd, mises à jour automatiques contrôlées.
- Base image : CIS Benchmarks, partitionnement /var,/tmp,/home séparés, noexec sur /tmp si possible.
- Backups & restauration testée (config + secrets + clés).
Anti-patterns
- Comptes partagés, clés SSH non gérées, absence d’OS patching.
- Swap non maîtrisé, overcommit mémoire dangereux.
Snippets
# Linux: vérifier saturation CPU/RAM/IO
vmstat 1 5
iostat -x 1 5
ss -s
# Windows: service via PowerShell
Get-Service | Where-Object {$_.Status -eq "Running"}2) Réseaux & Sécurité (NetSec)
Piliers
- Adressage/VPC/VNET, CIDR, routes, NAT, peering, DNS internes.
- TLS/SSL : certificats, chaîne, ALPN, HSTS, mTLS.
- Proxies/WAF : Nginx/Envoy, rate-limit, auth, CSP/headers.
Contrôles
- Segmentation : SG/NSG, NACL, network policies K8s.
- Zero-trust : identité (OIDC), authn/authz, MFA, secrets KMS/Vault.
- Logging réseau : flow logs, DNS logs, TLS versions/ciphers.
Anti-patterns
- Ports amplificateurs ouverts (e.g., 11211, 123).
- Certificats auto-signés en prod, ciphers obsolètes.
Snippets
# Cert TLS: vérifier chaîne
openssl s_client -connect app.example.com:443 -servername app.example.com -showcerts
# K8s: network policy (deny-all par défaut)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
spec: { podSelector: {}, policyTypes: ["Ingress","Egress"] }3) CI/CD — Jenkins, GitLab CI, GitHub Actions, Azure DevOps
Bonnes pratiques
- Trunk-based, PR obligatoires, tests rapides & parallélisés.
- Artefacts versionnés, cache, SBOM, signatures d’images.
- Gates qualité (lint, SAST/DAST), approvals selon risque.
Exemples
# GitLab CI
stages: [test, build, deploy]
test: {stage: test, script: ["pytest -q"]}
# GitHub Actions
name: ci
on: [push, pull_request]
jobs: { build: { runs-on: ubuntu-latest, steps: [{uses:"actions/checkout@v4"},{run:"pytest -q"}] } }Anti-patterns & KPIs
- Jobs séquentiels lents, flaky tests ignorés → dette invisible.
- Secrets dans pipelines, logs verbeux non filtrés.
- KPIs : lead time < 48h, taux d’échec <10%, MTTR <1h.
4) Infrastructure as Code — Terraform, Ansible, Pulumi
Patterns
- Modules versionnés, remote state, verrous, workspaces/envs.
- Politiques OPA/Conftest, revues PR obligatoires.
- Idempotence, immutabilité, drift detection (GitOps).
Extraits
# Terraform VPC (extrait)
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
name = "core"
cidr = "10.0.0.0/16"
}# Ansible (extrait)
- hosts: web
become: true
tasks:
- apt: {name: nginx, state: present}Anti-patterns
- États locaux non sauvegardés, variables sensibles en clair.
- Copier/coller de modules, dérives manuelles hors Git.
5) Conteneurs & Orchestration — Docker, Kubernetes, Helm
Compétences
- Dockerfiles minimaux, multi-stage, SBOM, user non-root.
- K8s : deployments, services, ingress, HPA/VPA, quotas/limites.
- Helm : values/overlays, chart repos, tests chart.
Exemples
# Dockerfile (extrait)
FROM python:3.12-slim
RUN useradd -m app && pip install -r req.txt
USER app# HPA (extrait)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
spec: { minReplicas:2, maxReplicas:10 }Anti-patterns
- Images lourdes, latest tag, root user, pas de limites de ressources.
- Config dans images, secrets en clair, absence de probes.
6) Cloud Providers — AWS, GCP, Azure, Scaleway
Bases
- Landing zone : comptes/projets, IAM, VPC/VNET, logs & coûts.
- Services managés : DBaaS, queues/pub-sub, object storage.
- Serverless & edge : fonctions, CDN, workers, cold starts.
Contrôles
- Tags obligatoires (team, service, env, coût).
- Budgets/alertes, limites quota, clés gérées (KMS, HSM).
- Backups & DR testés (cross-region), immutabilité (WORM).
Snippets
# AWS CLI: coût (exemple simple)
aws ce get-cost-and-usage --time-period Start=2025-09-01,End=2025-09-30 --granularity=DAILY --metrics UnblendedCost7) Observabilité — Prometheus, Grafana, ELK/Loki, Datadog, OpenTelemetry
Prérequis
- SLI/SLO et budgets d’erreur avant l’alerting.
- OTel : traces + métriques + logs corrélés.
- Dashboards réutilisables (Golden Signals).
Exemples
# PromQL (latence p95)
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service))# Loki (requête)
{app="checkout"} |= "ERROR" | json | line_format ""Bonnes pratiques
- Alertes symptomatiques (UX) & runbooks reliés.
- Rétention multi-niveaux (chaud/froid), sampling traces.
- Budget observabilité surveillé (coût Go/jour, séries).
8) Scripting — Python, Bash, Go
Compétences
- Python : CLI, SDK cloud, API, scripts de migration.
- Bash : glue rapide, observabilité locale, sûreté (set -euo pipefail).
- Go : binaires statiques, opérateurs K8s, tooling infra.
Extraits
# Bash: sûreté
set -euo pipefail
IFS=$'\n\t'# Python: appeler une API
import requests; print(requests.get("https://example/api/health").json())Bonnes pratiques
- Outillage standard : black/ruff, pre-commit, Makefile.
- Secrets via env/chains (no commit), logging structuré.
9) Sécurité DevOps (DevSecOps) — SAST/DAST, secrets, compliance
Contrôles dans la chaîne
- SAST/DAST, IaC scan, SBOM, signatures (cosign), dépendances (Renovate).
- Secrets : Vault/SOPS/KMS, rotation, scopes min, mTLS.
- Policies : OPA/Conftest (K8s/Terraform), admission controllers.
Compliance
- Evidence-as-code : PRs, artefacts, journaux immuables.
- RGPD/SOC2/ISO27001 : data classification, DLP, rétention.
- Runbooks vuln & patch management (SLA, priorisation CVSS).
Exemples
# OPA: pas d'utilisateur root dans K8s
package k8s.sec
deny[msg] { input.spec.template.spec.securityContext.runAsNonRoot != true
msg := "Containers doivent tourner en non-root" }